[ < ] [ > ]   [ << ] [ 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 March, 29 2007 using texi2html 1.76.