[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20. Creating an Info File

makeinfo는 Texinfo 파일을 Info 파일로 변환하는 유틸리티이다; texinfo-format-regiontexinfo-format-buffer는 똑같은 일을 하는 GNU Emacs의 함수이다.

Texinfo 파일은 @setfilename 줄이 시작부분에 있어야 한다. 그렇지 않으면 Info 포매팅 명령이 실패할 것이다.

Info 시스템에 Info 파일을 설치하는 법에 관한 정보는, Installing an Info File.

makeinfo 유틸리티는 Emacs 포매팅 명령보다 더 빨리 Texinfo 파일에서 Info 파일을 만들어 내고, 더 나은 애러 메세지를 낸다. makeinfo를 추천한다. makeinfo는 Emacs와 관계없는 C 프로그램이다. makeinfo를 사용하는데 Emacs를 실행할 필요가 없다. 즉, Emacs를 돌리기에는 너무 작은 기계에서도 makeinfo를 쓸 수 있다. makeinfo를 다음 세가지 중에 한가지 방법으로 실행할 수 있다: 운영 체제의 셸에서 실행, Emacs 내의 셸에서 실행, 또는 Emacs의 TExinfo mode에서 키 명령을 타이프하기.

texinfo-format-regiontexinfo-format-buffer 명령은 makeinfo를 쓰지 못할 때 유용하다. 또, 어떤 환경에서는, 작은 리전(region)이나 버퍼(buffer)는 makeinfo보다 더 빨리 포맷한다.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.1 Running makeinfo from a Shell

Texinfo 파일에서 Info 파일을 만들려면, makeinfo 다음에 Texinfo 파일의 이름을 타이프한다. 즉, Bison의 Info 파일을 만들려면, 셸에 다음을 타이프한다.

 
makeinfo bison.texinfo

(M-x shell을 Emacs내에서 타이프해서 셸을 실행할 수 있다.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.2 Options for makeinfo

makeinfo 명령은 여러개의 옵션을 받아들인다. 대부분의 경우, 옵션은 줄바꿈 열(fill column)을 지정하거나, 각주 스타일을 지정하는 데 쓰인다. 각 명령행 옵션은 ‘--’가 앞에 붙는 단어이거나, ‘-’가 앞에 붙는 한개의 알파벳이다. 긴 옵션의 이름은 해당되는 옵션이 유일하게 하나만 있다면 줄여 써도 된다.

예를 들어, 줄바꿈 열(fill column)을 68열로 하는 ‘bison.texinfo’의 Info 파일을 만드려면 다음 셸 명령을 쓸 수 있다:

 
makeinfo --fill-column=68 bison.texinfo

다음과 같이, 두개 이상의 옵션을 연속해서 쓸 수도 있다:

 
makeinfo --no-split --fill-column=70 …

이 명령은 Info 파일을 매우 길지도 모르는 한개의 파일로 만들고, 줄 바꿈 열(fill column)을 70으로 맞춘다.

옵션은 다음과 같다:

-D var

변수 var가 정의되도록 한다. 이것은 Texinfo 파일 안에 @set var를 쓴 것과 동일하다.

--error-limit=limit

종료하기 전에 (더이상 계속할 필요가 없다는 가정하에) makeinfo가 알려주는 애러의 최대 갯수를 지정한다; 기본값은 100이다.

--fill-column=width

한 줄에 들어갈 최대의 열의 갯수를 지정한다; 이것은 줄의 오른쪽 끝이 된다. 열에 채우는(fill) 문단들은 이 폭 안에 들어가게 된다. (열에 채우기(fill)는 연속된 줄을 나눠서 줄바꿈 열(fill column)으로 지정된 숫자와 같거나 더 작은 줄들로 만드는 작업이다. 줄들은 단어 사이에서 나누어 진다.) 기본값은 72이다.

--footnote-style=style

각주 스타일을 style로 한다. 스타일은 end node 스타일을 쓰려면 ‘end’이고, separate node 스타일을 쓰려면 ‘separate’이다. 이 옵션으로 지정되는 값은 Texinfo 파일 내에 @footnotestyle 명령으로 (see section Footnotes) 지정된 값을 다시 지정한다. 각주 스타일이 ‘separate’이면, makeinfo는 현재 노드(node)의 각주들이 들어 있는 새로운 노드(node)를 만든다. 각주 스타일이 ‘end’이면, makeinfo는 각주를 현재 노드(node)의 끝에 놓는다.

--force

보통, 입력 파일에 애러가 있으면, 출력 파일은 만들어 지지 않는다. 이 옵션을 주면, 출력 파일을 만든다.

--help

모든 사용가능한 옵션을 나열하는 사용법 메세지를 표시하고, 성공적으로 종료한다.

-I dir

dir@include 명령을 써서 포함하는 파일을 찾는 데 쓰는 디렉토리 리스트에 추가한다. 기본적으로 makeinfo는 현재 디렉토리만을 찾는다.

--no-headers

출력에 메뉴나 노드 줄을 포함하지 않는다. 이렇게 하면 꼭 필요한 노드와 메뉴가 없기 때문에 Info로 읽을 수 없는 ASCII 파일이 만들어 진다. 이 기능은 ‘INSTALL’ 파일처럼 메뉴얼의 특정 부분을 따로 뽑아내서 배포본에 포함시킬 때 유용하다.

--no-split

makeinfo의 파일 쪼개는 기능을 쓰지 않는다. 기본적으로, 큰 출력 파일은 (크기가 70 킬로바이트보다 큰 경우) 약 50 킬로바이트 정도의 작은 파일들로 쪼개진다.

--no-pointer-validate
--no-validate

makeinfo의 포인터 확인(pointer-validation) 기능을 없앤다. 보통, Texinfo 파일이 처리된 후에는, 상호 참조를 알아낼 수 있도록 하는 등 모순이 없는지 체크하게 된다. See section Pointer Validation.

--no-warn

경고 메세지를 내지 않는다 (하지만, 애러 메세지는 낸다). 만약에 작성하고 있는 파일에서, Texinfo 상호참조의 예제가 있거나 존재하지 않는 노드(node)에 대해 참조하면 이 옵션이 필요하다.

--no-number-footnotes

자동으로 각주에 번호를 다는 기능을 없앤다. 기본적으로, makeinfo는 한 노드(node)의 각주에 대해서 차례대로 번호를 매기고, 각 노드(node)가 시작할 때 각주 번호를 다시 1에서부터 시작하도록 한다.

--output=file
-o file

Texinfo 소스내의 @setfilename 명령으로 정의한 (see section @setfilename) 파일 대신에 file로 출력을 한다. 만약 file이 ‘-’이면, 출력은 표준 출력(standard output)이 되고, ‘--no-split’ 옵션이 있는 것처럼 동작한다.

-P dir

@include의 디렉토리 탐색 리스트의 앞에 dir를 추가한다. 자세한 것은 ‘-I’를 보라.

--paragraph-indent=indent

문단 들여쓰기 스타일을 indent로 맞춘다. 이 옵션에서 맞추는 값은 Texinfo 파일에서 @paragraphindent 명령으로 (see section Paragraph Indenting) 결정된 값을 무시한다. indent의 값은 다음과 같이 해석된다:

asis

문단이 시작할 때의 들여쓰기를 유지한다.

0’ or ‘none

들여쓰기를 전부 없앤다.

num

각 문단을 이 숫자만큼의 공백만큼 들여쓴다.

--reference-limit=limit

makeinfo가 경고를 내지 않고 만들 수 있는 노드내의 참조의 갯수를 지정한다. 노드가 이 숫자보다 더 많은 참조가 있으면, makeinfo는 참조를 만들기는 하지만, 경고를 낼 것이다. 기본값은 1000이다.

-U var

var가 정의되지 않도록 한다. 이것은 Texinfo 파일 내에 @clear var를 쓴 것과 같다 (see section @set, @clear, and @value).

--verbose

makeinfo가 무엇을 하는지에 대해 알려주는 메세지를 표시하도록 한다. 보통 makeinfo는 애러나 경고가 있을 때만 메세지를 출력한다.

--version

버전 번호를 출력하고, 성공적으로 종료한다.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.3 Pointer Validation

포인터 확인(pointer-validation) 기능을 없애지 않으면, makeinfo는 최종 Info 파일이 올바른지를 확인한다. 대부분, 이 기능은 실제로 존재하는 노드(node)에 대해 참조했는지 확인하는 것이다. 다음은 정확히 무엇을 확인하는지에 대한 리스트이다:

  1. 만약 ‘Next’, ‘Previous’, 또는 ‘Up’ 노드(node) 참조가 현재 파일의 노드(node)이고, ‘(dir)’같은 외부 파일을 참조하는 노드(node)가 아니면, 참조된 노드(node)는 존재해야 한다.
  2. 모든 노드(node)에서, ‘Previous’ 노드(node)가 ‘Up’ 노드(node)와 다르면, ‘Previous’ 노드(node)에서는 이 노드를 ‘Next’ 노드(node)로 가리켜야 한다.
  3. ‘Top’ 노드(node)를 제외한 모든 노드(node)는 ‘Up’ 포인터가 있어야 한다.
  4. ‘Up’ 포인터를 통해 가리키는 노드는 ‘Next’를 통한 방법이 아닌 현재 노드로의 참조가 들어 있어야 한다. 이런 참조는 메뉴의 항목이나 상호 참조가 있다.
  5. ‘Next’ 참조가 ‘Up’ 참조의 ‘Next’ 참조와 같지 않다면, ‘Next’ 포인터로 참조된 노드는 현재 노드를 가리키는 ‘Previous’ 포인터가 있어야 한다. 이 규칙은 한 절의 마지막 노드가 다음 장의 첫번째 노드를 가리키는 것을 가능하게 해 준다.

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.4 Running makeinfo inside Emacs

makeinfo-region이나 makeinfo-buffer 명령으로 GNU Emacs의 Texinfo 모드에서 makeinfo를 실행할 수 있다. Texinfo 모드에서, 이 명령은 기본값으로 C-c C-m C-rC-c C-m C-b로 실행한다.

C-c C-m C-r
M-x makeinfo-region

현재 리전(region)을 Info로 포매팅한다.

C-c C-m C-b
M-x makeinfo-buffer

현재 버퍼(buffer)를 Info로 포매팅한다.

makeinfo-region이나 makeinfo-buffer를 실행할 때, Emacs는 파일 이름을 물어보고, 기본적으로 Emacs에서 편집중인 파일 이름을 제공한다. <RET>을 눌러서 makeinfo를 시작하기 전에, 이 기본 파일이름을 미니버퍼(minibuffer)에서 원하는 대로 편집할 수 있다.

Emacs의 makeinfo-regionmakeinfo-buffer 명령은 makeinfo 프로그램을 임시 셸 버퍼(buffer)에서 실행한다. makeinfo가 애러를 찾아 내면, Emacs는 애러 메세지를 그 임시 버퍼(buffer)에서 출력한다.

애러 메세지는 C-x `(next-error)를 눌러서 알아낼 수 있다. 이 명령은 Texinfo 소스에서 makeinfo가 애러가 있다고 찾아내는 부분으로 Emacs가 커서를 옮기도록 한다. next-error 명령의 사용법에 대한 더 많은 정보는, See (emacs)Compilation section ‘Running make or Compilers Generally’ in The GNU Emacs Manual.

또, makeinfo가 실행되고 있는 셸을 없애거나, 셸 버퍼가 가장 최근의 출력을 보여주도록 할 수 있다.

C-c C-m C-k
M-x makeinfo-kill-job

makeinfo-region이나 makeinfo-buffer로 현재 실행되고 있는 makeinfo를 중단시킨다.

C-c C-m C-l
M-x makeinfo-recenter-output-buffer

makeinfo 셸 버퍼가 가장 최근의 출력을 보여주도록 한다.

(이에 대응되는 명령으로 TeX 실행을 중단시키고, 다시 가운데로 맞추는 명령은 C-c C-t C-kC-c C-t C-l이다. See section Formatting and Printing in Texinfo Mode.)

M-x edit-optionsM-x set-variable 명령, 혹은 ‘.emacs’ 초기 파일내에서 변수를 지정하는 방법으로, makeinfo-options 변수를 지정해서 makeinfo의 옵션을 지정할 수 있다.

예를 들어, 다음을 ‘.emacs’ 파일에 넣을 수 있다.

 
(setq makeinfo-options
      "--paragraph-indent=0 --no-split
       --fill-column=70 --verbose")

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.5 The texinfo-format… Commands

GNU Emacs의 Texinfo 모드에서, Texinfo 파일의 일부 혹은 전부를 texinfo-format-region 명령으로 포매팅할 수 있다. 이 명령은 현재 리전(region)을 포매팅하고, 포맷된 텍스트를 ‘*Info Region*’이라는 임시 버퍼(buffer)에 표시한다.

비슷하게, 버퍼를 texinfo-format-buffer 명령으로 포매팅한다. 이 명령은 새로운 버퍼를 만들고, 그 안에 Info 파일을 만든다. C-x C-s를 타이프하면 Info 파일을 Texinfo 파일의 처음에 있는 @setfilename 줄에서 지정한 이름으로 저장할 것이다.

C-c C-e C-r
texinfo-format-region

현재 리전(region)을 Info로 포매팅한다.

C-c C-e C-b
texinfo-format-buffer

현재 버퍼(buffer)를 Info로 포매팅한다.

texinfo-format-regiontexinfo-format-buffer 명령은 몇가지 애러를 체크하고, 포매팅애러를 찾는데 더 도움을 줄 것이다. 이 과정은 부록에 설명되어 있다; Formatting Mistakes. 하지만, makeinfo 프로그램이 대부부 더 빠르고, 더 애러를 잘 찾는다 (see section Running makeinfo inside Emacs).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.6 Batch Formatting

batch-texinfo-format과 Emacs의 batch 모드를 써서 Texinfo 파일을 포매팅할 수 있다. 셸에서 Emacs를 batch 모드로 실행시키고, Emacs내에 셸으ㄹ 포함시킨다. (See (emacs)Command Switches section ‘Command Line Switches and Arguments’ in The GNU Emacs Manual.)

다음은 현재 디렉토리에서 ‘.texinfo’로 끝나는 모든 파일을 포매팅하는 셸 명령이다.

 
emacs -batch -funcall batch-texinfo-format *.texinfo

설령 이 파일들을 포매팅하던 중에 애러가 나더라도 Emacs는 이 명령행에 포함된 모든 파일을 처리할 것이다.

위에서 보여진 것과 같이 batch-texinfo-format 명령은 Emacs에서 batch 모드로만 실행하라; 이 명령은 interactive하지 않다. 이 명령은 끝날 때 batch 모드의 Emacs를 종료시킨다

batch-texinfo-formatmakeinfo가 없거나 여러개의 Texinfo 파일을 한번에 포매팅할 때 편리하다. batch 모드를 쓸 때, 새로운 Emacs 프로세스를 만든다. 그래서, 현재 실행중인 Emacs와는 상관없고, 계속 현재 Emacs에서 작업할 수 있다. (texinfo-format-region이나 texinfo-format-buffer를 실행할 때, 이 명령이 끝날 때까지는 절대로 Emacs를 쓸 수 없다.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

20.7 Tag Files and Split Files

만약 Texinfo 파일이 30000 바이트가 넘는다면, texinfo-format-buffer 명령은 자동으로 이 Info 파일에 대한 tag 테이블을 만든다; makeinfo는 언제나 tag 테이블을 만든다. tag table을 이용해, Info는 tag table웸없는 것보다 훨씬 빨리 노드 사이를 이동할 수 있다.

또, Texinfo 파일이 70000 바이트가 넘으면, texinfo-format-buffermakeinfo는 큰 Info 파일을 50000바이트정도의 작은 간접(indirect) 서브파일(subfile)로 나눈다. 큰 파일을 작은 파일로 나누면 Emacs는 전체 Info 파일을 읽을려고 큰 버퍼(buffer)를 만들 필요가 없게 된다; 대신, Emacs는 필요한 파일만 읽어들일 수 있는 메모리만 사용한다. (쪼개는 기능이 없을 때, Info 파일은 크기가 작아야 했고, 작은 Info 파일로부터 한개의 큰 인쇄된 매뉴얼을 만들기 위해 include file 기능을 만들었다. 자세한 정보는 See section Include Files. 파일 포함하기는 아직도 The Emacs Lisp Reference Manual과 같은 매우 큰 문서의 경우에 사용되고 있다. 이 매뉴얼에서 각 장은 별도의 파일로 구성되어 있다.)

파일이 쪼개졌을 때, Info는 tag 테이블과 쪼개진 파일들의 참조만 담고 있는 짤막한 파일을 만든다. 이 쪼개진 파일들을 간접(indirect) 파일이라고 한다.

이 쪼개진 파일들은 @setfilename 명령에서 지정된 파일 이름 뒤에 ‘-1’, ‘-2’, ‘-3’ 등을 덧붙인 이름으로 만들어 진다. 이 원래 파일의 짤막한 버전은 @setfilename에서 지정된 이름을 계속해서 사용한다.

예를 들어, 이 문서를 쓰는 도중에, Info 파일은 ‘test-texinfo’로 저장되었고, 그 파일은 다음과 같이 보인다:

 
Info file: test-texinfo,    -*-Text-*-
produced by texinfo-format-buffer
from file: new-texinfo-manual.texinfo

^_
Indirect:
test-texinfo-1: 102
test-texinfo-2: 50422
test-texinfo-3: 101300
^_^L
Tag table:
(Indirect)
Node: overview^?104
Node: info file^?1271
Node: printed manual^?4853
Node: conventions^?6855
…

(하지만 ‘test-texinfo’는 여기 보인 것보다 더 많은 노드(node)가 있다.) 각 쪼개진 간접 파일, ‘test-texinfo-1’, ‘test-texinfo-2’, 그리고 ‘test-texinfo-3’은 이 파일에서 ‘Indirect:’라는 줄 뒤에 열거된다. tag 테이블은 ‘Tag table:’ 이라는 줄 뒤에 열거된다.

간접 파일의 리스트에서, 파일 이름 뒤에 오는 숫자는 앞의 간접 파일의 바이트 수를 계속해서 더한 값이고, 파일 그 자체의 크기나, tag 테이블이나, 각 파일의 퍼미션 따위가 절대 아니다. tag 테이블에서 노드 이름 뒤에 오는 숫자는 노드가 시작하는 위치를 처음부터 몇번째 바이트에 있는지로 나타낸다.

texinfo-format-buffer를 써서 Info 파일을 만들었을 경우, Info-validate 명령을 쓸 수도 있다. (makeinfo 명령은 자체적으로 이런 훌륭한 작업을 한다. Info-validate이 필요없다.) 하지만, M-x Info-validate을 간접 파일에 대해 할 수 없다. 어떻게 파일이 쪼개지지 않도록 하고, 어떻게 노드의 구조를 확인하도록 하는지에 대한 정보는, Running Info-validate.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Autobuild on June 15, 2016 using texi2html 1.82.