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

E. Include Files

TeX이나 Info 포매팅 명령이 Texinfo 파일에서 @include 명령을 보면, 이 명령어에 쓰여 있는 파일의 내용을 처리해서 새로 만들어 지게 될 DVI나 Info 파일에 포함한다. 포함된 파일의 색인 항목도 출력 파일의 색인에 포함된다.

파일 포함으로 한개의 큰문서를 편리하게 작은 부분들을 모아서 만들수 있다.


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

E.1 How to Use Include Files

Texinfo 파일내에서 또다른 파일을 포함하려면, @include 명령을 줄이 시작할 때 쓰고, 같은 줄에 포함될 파일의 이름을 쓴다. 예를 들어:

 
@include buffers.texi

포함된 파일은 단순히 그대로 전체 혹은 outer Texinfo 파일에 포함하려고 하는 텍스트의 일부여야 한다; 이 파일에는 Texinfo 파일의 표준적인 시작과 끝이 들어 있으면 안 된다. 특히, 포함되는 파일을 ‘\input texinfo’라고 말하는 줄로 시작해서는 안된다; 만약 그렇게 하면, 이 줄은 그대로 출력파일에 포함될 것이다. 마찬가지로 포함되는 파일을 @bye로 끝내면 안된다; @bye 다음에 오는 것은 아무것도 포매팅되지 않는다.

과거에는 포함되는 파일에 @setfilename 줄이 시작할 때 필요했지만, 지금은 아니다. 지금은 이런 줄을 쓰거나 말거나 상관이 없다. 포함되는 파일에 @setfilename 줄을 쓰면, 그 줄은 무시된다.

보통, 포함되는 파일은 @node줄로 시작하고 그 다음줄에는 @chapter 줄이 온다. 각 포함되는 파일은 한개의 장이다. 이렇게 하면 보통 노드와 메뉴를 만들고 업데이트하는 명령을 써서 포함되는 파일안에 노드 포인터와 메뉴를 만들기가 편해 진다. 하지만, Emacs내의 노드와 메뉴를 만들고 변경하는 명령은 여러개의 Texinfo 파일과 함께 쓸 수 없다. 즉 이런 명령들을 써서 포함되는 파일을 시작하는 @node 라인에 있는 ‘Next’, ‘Previous’, 그리고 ‘Up’ 포인터를 채울 수 없다. 또, 보통 명령어들을 사용해서 master 전체 파일에 대한 메뉴를 만들 수 없다. 직접 메뉴와 ‘Next’, ‘Previous’, 그리고 ‘Up’ 포인터를 손으로 써 넣던지, 아니면 GNU Emacs의 Texinfo 모드 명령어인, texinfo-multiple-files-update를 사용해야 한다. 이 명령어는 @include된 파일에 사용할 수 있게 되어 있다.


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

E.2 texinfo-multiple-files-update

GNU Emacs의 Texinfo 모드는 texinfo-multiple-files-update 명령을 제공한다. 이 명령어는 외부 파일 혹은 전체 파일 내에 있는 ‘Next’, ‘Previous’, 그리고 ‘Up’ 포인터뿐만 아니라 포함된 파일의 포인터들도 만들고 변경할 수 있다. 옵션으로 무슨 인자를 주느냐에 따라 이 명령은 첫번째로 보이는 @node 줄의 포인터만을 갱신하거나 전체 포인터를 갱신한다:

M-x texinfo-multiple-files-update

아무 인자 없이 실행한다:

C-u M-x texinfo-multiple-files-update

접두 인자로 C-u를 주고 실행한다.

C-u 8 M-x texinfo-multiple-files-update

C-u 8과 같이, 숫자 접두 인자를 주고 실행한다.

interactive로 사용할 때 접두 인자를 쓰는 것에 유의하자; 보통 접두 인자는 C-u이고, texinfo-multiple-files-update 명령은 master menu를 넣는다; C-u 8과 같은, 숫자 접두 인자를 쓰면 이 명령은 모든 파일의 포인터와 메뉴를 모두 변경하고 master menu를 넣는다.


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

E.3 Include File Requirements

texinfo-multiple-files-update 명령을 쓰려면 포함할 파일이 나열된 외부의 Texinfo 파일은 Texinfo 파일의 시작과 끝, 그리고 포하ㅁ할 파일을 나열하는 @include 명령만이 들어 있어야 한다. 이 파일은 색인도 포함하면 안 되고 색인도 그 다른 파일에서 포함해야 한다.

게다가, 각각의 포함된 파일은 가장 높은 단계의 노드가 정확히 한개 있어야만 한다 (보통, @chapter나 그와 같은 단계의 노드이다). 그리고 이 노드는 포함된 파일의 첫번째 노드여야 한다. 더우기, 각 포함되는 파일에서 가장 높은 단계의 노드들은 전부 같은 단계여야 한다. 보통 이 노드는 @chapter, @appendix, 혹은 @unnumbered 노드이다. 즉, 보통 각 포함되는 파일들은 오직 정확히 한개의 장이나 그와 같은 단계의 노드만 들어 있어야 한다.

외부 파일은 한개의 노드만 들어 있어야 한다. 이 노드는 ‘Top’ 노드이다. 이 한개의 ‘Top’ 노드 외에는 어떤 노드도 들어 있어서는 안된다. texinfo-multiple-files-update 명령은 ‘Top’ 이외의 노드는 처리해 주지 않는다.


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

E.4 Sample File with @include

다음은 texinfo-multiple-files-update를 실행하기 전에 파일을 @include하는 외부 Texinfo 파일의 완전한 예이다. texinfo-multiple-files-update 명령은 주요 혹은 master 메뉴를 만들어 낸다.

 
\input texinfo @c -*-texinfo-*-
@setfilename  include-example.info
@settitle Include Example
@setchapternewpage odd
@titlepage
@sp 12
@center @titlefont{Include Example}
@sp 2
@center by Whom Ever
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1997 Free Software Foundation, Inc.
@end titlepage
@ifinfo
@node Top, First, , (dir)
@top Master Menu
@end ifinfo
@include foo.texinfo
@include bar.texinfo
@include concept-index.texinfo
@summarycontents
@contents

@bye

foo.texinfo’와 같은, 포함된 파일은 다음과 같을 것이다:

 
@node First, Second, , Top
@chapter First Chapter

Contents of first chapter …

concept-index.texinfo’의 완전한 내용은 다음과 같이 간단할 것이다:

 
@node Concept Index, , Second, Top
@unnumbered Concept Index

@printindex cp

The GNU Emacs Lisp Reference Manual의 외부 Texinfo 파일의 소스 파일 이름은 ‘elisp.texi’이다. 이 외부 파일은 417개 항목이 들어 있는 master 메뉴와 41개의 파일을 @include하고 있다.


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

E.5 Evolution of Include Files

Info가 처음 만들어 졌을 때, 한개의 주제에 대해 여러개의 작은 Info 파일을 만드는 것이 보통이었다. 각 Info 파일은 각각 별도의 Texinfo 소스 파일에서 포매팅되었다. 이런 습관은 누군가가 정보를 얻고자 할 때 Emacs가 크키가 큰 Info 파일의 전체를 담는 큰 버퍼(buffer)를 만들 필요가 없다는 뜻이다; 그 대신에, Emacs는 찾고자 하는 특정 정보만 들어 있는 작은 Info 파일을 담을 만한 메모리만 할당하면 되었다. 이런 방법으로 메모리 낭비를 막을 수 있었다.

한 파일에서 다른 파일로의 참조는 노드 이름과 동시에 파일이름까지 참조해서 만들었다. ((See section Referring to Other Info Files. 또 See section @xref with Four and Five Arguments.)

파일을 포함하는 것은 원래 여러개의 작은 INfo 파일에서 한개의 큰 인쇄된 매뉴얼을 만들어 내는 방법으로 만들어졌다. 인쇄된 매뉴얼에서, 모든 참조는 같은 문서 안에 있었기 때문에, TeX은 자동으로 그 참조된 쪽의 번호를 알 수 있었다. Info 포매팅 명령어는 파일 포함을 오직 합쳐진 색인을 만들기 위해서만 썼다. 각 Texinfo 파일은 Info 파일로 따로 따로 만들어졌다. (즉 각각의 파일은 @setfilename이 필요했다.)

하지만, 지금은 큰 Info 파일은 자동으로 쪼개지기 때문에, Texinfo 파일을 작은 크기로 유지해야 할 필요는 더이상 없게 되었다.

현재는, 여러개의 Texinfo 파일은 주로 The GNU Emacs Lisp Reference Manual과 같이 큰 문서에서 쓰인다. 그리고 여러명의 사람들이 한개 문서의 다른 부분들을 동시에 작성하는 프로젝트에서 쓰인다.

게다가, Info 포매팅 명령어는 @include 명령어와 함께 사용할 수 있도록 확장되었기 때문에 필요하다면 작은 파일들로 나뉘어져 있는 파일에서 한개의 큰 Info 파일을 만들 수 있다. 이 말은 Texinfo 파일들의 이름 없이도 메뉴와 상호 참조를 만들 수가 있다는 게 된다.


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

This document was generated by Autobuild on October 25, 2015 using texi2html 1.82.