[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
여기서는 info의 여러가지 고급 명령들에 대해서 다루고 있으며, Texinfo 파일을 이용하는 것과 구분해서 그냥 info 파일을 작성하는 방법을 설명하고 있다.(하지만, 대부분의 경우, info 파일은 Texinfo 파일로 만들어진다. 왜냐하면, Texinfo 파일은 온라인 매뉴얼인 info 파일과 일반 인쇄물로 만들 수 있는 ps 파일을 모두 만들어 낼 수 있기 때문이다. See (texinfo)Top section ‘Overview of Texinfo’ in Texinfo: The GNU Documentation Format.)
2.1 고급 Info 명령들 | 고급 Info 명령들: g, s, e, 1 - 5. | |
2.2 새 노드 추가하는 방법 | ||
2.3 차림표 만드는 방법 | Info 노드에서 차림표 추가 방법. | |
2.4 상호참조 만들기 | Info 노드에 상호참조 추가 방법. | |
2.6 Info 파일을 위한 Tags Tables | tags table 만드는 방법. | |
2.7 Info 파일 검사하기 | ||
2.8 Emacs Info-mode 변수들 | Emacs Info의 작업 환경을 바꾸는 변수들. |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
g, s, 1, – 9, e
이미 어떤 노드의 이름을 알고 있다면, g 글쇠를 누른다면, 그 노드 이름을 입력하고, 엔터를 치면, 해당 노드로 바로 이동할 수 있다. 여기서 gTop<RET> 이렇게 입력된다면, info의 Top 노드로 이동할 것이고, 그곳에서 g전문가<RET> 이렇게 하면, 다시 이곳으로 올 것이다.
m 명령과 달리, Tab 글쇠를 사용하는 나머지 채움 기능을 사용 할 수 없다.
다른 파일의 노드로 이동하려면, 먼저 괄호()로 그 파일을 묶어 노드 이름 앞에 써 주어야한다. 그래서, g(dir)Top<RET> 이렇게 하면, info의 최상위 노드인 dir 파일의 Top 노드로 이동하게 된다. 현재 여기서 그냥 gTop<RET> 명령을 내리면, 이 info에 대한 info 파일의 Top 노드로 이동한다(차이점). 한편 파일이름만이 괄호()로 묶겨 지정되면, 그 파일의 Top를 찾고, 있다면, 보여주고, 없다면, 없다고, 오류 메시지를 알려준다.
‘*’ 명령은 그 파일의 모든 내용을 보여준다. 즉, 현재 info로 볼 수 없는 여러가지 정보들도 함께 볼 수 있다. 여기서 g*<RET> 이렇게 명령을 내린다면, 이 파일의 저작권 이야기를 시작으로 하는 이 파일의 모든 것을 볼 수 있다. 또한 현재 파일이 아닌 다른 파일의 모든 내용을 보려면, g(파일이름)*<RET> 식이 된다.
s 명령은 현재 파일 안에서 지정한 문자를 찾는다. 필요하다면, 다음 노드로 전환된다. 사용방법은 s 글쇠를 누르고, 찾고자 하는 문자열을 입력하고, <RET> 글쇠를 누른다. 계속 같은 것을 찾고자 한다면, s 글쇠를 누르고, 그냥 <RET> 글쇠를 누른다. 이 문자열 검색은 노드의 관계 구조를 검색을 한다. 즉, 원래의 파일의 내용이 기록된 순서대로가 아니다. 이 두개의 순서는 사뭇 다를 수가 있다. 즉, 이 명령을 사용하기 위해서는 항상 b 명령으로 노드의 처음으로 이동한 뒤에 이 명령을 사용하는 것이 좋다. 왜냐하면, 현재 위치의 이전에 찾고자 하는 문자열이 있고, 지금 커서가 있는 위치부터 이 노드의 아래쪽에는 찾고자 하는 문자열이 없을 경우 s 명령은 다음 노드로 이동해서 그 문자열을 찾기 때문이다. (결국 찾고자 하는 문자열이 여럿 있고, 현재 노드의 커서 위쪽에 있는 부분에서 그 문자열을 찾고자 했는데, 현재 커서 위치에서 s 명령을 사용해 버리면 그 여러개 있는 문자열 중에 가장 마지막에 발견된다.)
Meta-s 명령은 s 명령과 같다. 이것은 여러 다른 GNU 풀그림들이 M-s 글쇠로 찾기 명령을 제공하기 때문에, 지정되었다.
글쇠 치기를 귀찮아 하는 사람들을 위해서 여기 유용하게 쓰일 명령이 있다. 1, 2, 3, 4, .... 이 숫자 글쇠는 현재 노드에 있는 첫번째, 두번째, 세번째, .... 차림표로 바로 이동하게 기능을 한다.
게다가 다중 글꼴을 지원하는 emacs에서는, 다섯번째, 아옵번째 차림표를 표시하는 ‘*’ 글자에 밑줄 속성이 부여되어 있다. 즉, 숫자 글쇠 사용을 쉽게 하기 위해.
그냥 보통의 터미날에서는 밑줄이 보여지지 않을 것이다. 읽고 싶은 차림표가 몇번째 있는지 헤기 보다, 그냥 m 글쇠를 누르고 직접 차림표의 이름을 입력하기는 것이 좋을 것이다.
Emacs Info에서는 e 명령으로 읽기 전용 상태에서
편집 가능한 상태로 전환할 수 있다. 편집이 끝나면,
C-c C-c 명령으로 다시 읽기 전용 상태로 돌아온다.
이 명령은 Info-enable-edit
변수값이 nil
이
아닐 때만 사용할 수 있다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
dir 파일 안에 새로운 항목을 추가하는 방법은 비교적 간단하다. 먼저 추가할 항목의 파일 이름과, 그 노드 이름만 알고 있으면 차림표 항목을 추가하는 방법을 대로 사용하면 된다. See section 차림표 만드는 방법.
하지만, 하나의 새로운 노드를 만들고, 그 노드들을 종합해서, 또다른 하나의 info 파일을 만든다는 것은 그리 간단한 작업이 아니다. 이런 번거러운 작업을 쉽게 하도록 도와주는 것이 GNU 문서의 형식화 방식의 표준인 Texinfo이다. see (texinfo)Top section ‘Overview of Texinfo’ in Texinfo: The GNU Documentation Format); texinfo 포멧 방식을 사용하면, 양질의 인쇄물도 같이 얻을 수 있다는 장점이 있다. 하지만, 단지 info 파일을 texinfo를 이용하지 않고 만들겠다면, 다음 이야기를 참조한다.
새로운 노드는 이미 있는 info 파일에 추가 할 수도 있으며, 새로운 파일로 만들 수도 있다. 그 노드의 시작을 알리는 문자는 <^_> 문자이며, 그 노드의 끝은 <^_>, <^L> 문자나, 파일 끝 중 하나여야 한다. 주의: 만약 <^_> 문자로 노드를 끝낸다면, 다음 노드의 시작을 알리는 <^_> 문자가 있기 전까지의 내용을 그 파일 보기에서 보여지지 않는다. 왜냐하면, 노드의 시작 문자는 <^_>이기 때문. 그래서, <^_>문자와 함께 그 노드를 끝내려면, 항상 <^_>문자를 바로 다음에 표기해 주는 것이 좋다.
노드의 시작을 알리는 <^_>문자는 받드시 그 줄의 첫칸에 와야하거나, 아니면, <^L>문자 다음에 나와야 한다. 그 다음 그 노드의 머릿말이 온다. 그 노드의 머릿말에는 최소한 그 노드의 이름이 있어야 한다. 그래야, info에서 해당노드로 이동할 수 있다. 덧붙혀, 다음 노드‘Next’, 이전 노드‘Previous’, 상위 노드‘Up’의 이름을 대부분 지정하는 것이 보통이다. 이 노드에서는 보는 것과 같이 ‘Up’ 노드는 ‘Top’으로 되어 있으며, 이것은 이 info에 대한 info 파일의 처음으로 이동하게 해 준다.
Node, Previous, Up, Next 키워드는 그 순서가 임의로 정해 질 수 있다. 이렇게 되면 그 순서는 정해진 되로 나타난다. 각각의 키워드의 부분은 “키워드 (파일이름)노드이름, 공백문자|탭문자” 형식으로 되어야 한다. 노드의 이름은 탭문자나 쉼표나 줄바꿈 문자로 끝나야한다. 공백문자는 노드 이름에 포함된다. 왜냐하면, 공백문자가 있는 노드도 있기 때문. 또한 노드의 이름에서 대소문자 구분이 있다.
노드 이름을 지정하는 방법에는 두가지가 있다. 그 이름은 ‘Node: ’ 다음에 지정한다. 예를 들어, 이 노드의 이름은 ‘추가’라는 이름이다. 다른 파일 안에 있는 노드의 이름은 ‘(파일이름)노드이름’ 형식을 취한다. 이 노드의 경우는 ‘(info)추가’ 이런 식이 된다. 파일 이름을 지정할 때, “./” 문자를 먼저 사용하게 되면, 현재 경로안에서 그 파일을 찾고 경로가 지정되어 있지 않으면, info 파일이 있는 경로(INFOPATH 환경 변수값)에서 찾는다. ‘(파일이름)Top’ 이런 식의 노드 이름 지정은 단지 ‘(파일이름)’ 식으로 지정해도 된다. 관례에 따라, ‘Top’ 노드는 그 파일의 최상위 노드가 되며, 이 노드에서 ‘Up’ 노드로의 이동은 ‘(dir)’ 파일을 읽게 된다. ‘(dir)’ 파일에서는 info 문서 시스템 전체의 최상위 노드가 지정되어 있다. 그래서, 보통 ‘Top’ 노드의 상위 노드는 ‘Up: (dir)’ 이런 식으로 ‘(dir)’ 파일을 지정한다.
노드 이름이 * 표인 경우는 특별한 의미로 사용된다. 이것은 현재 파일의 전체 내용을 뜻한다. 그래서, g* 명령은 현재 볼 수 있는 내용외의 옛날 내용이나, 현재 info 문서 구조에 포함되어 있지 않는 내용들을 보여준다.
‘Node:’ 다음에 지정되는 노드 이름은 그 info 파일의 이름과 같아서도 안되며, 그 info 파일 전체를 통틀어 한번만 사용되어야 한다. 또한 이 노드 이름앞에 파일 이름을 지정해서도 안된다. 이 이름은 이 노드 자체이기 때문. ‘Next’, ‘Previous’, ‘Up’ 키워드에서 사용할 노드 이름이 바로 이 이름이 되기 때문이다.
info를 보면 ‘File:’ 이라며, 파일 이름을 보여 주는 부분이 머릿말에 나타난다. 이것은 실재 info 수행에 있어, 영향을 주지 않는다. 단지, 사용자가 현재 읽고 있는 노드가 어느 파일에 있는 것인지를 알려주는 도움을 줄 뿐이다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Info 문서의 구조 안에서 어떠한 노드에도 그 노드에 대한 하위노드의 목록인 차림표를 구성할 수 있다. 이것은 m 명령은 현재 노드에서 이 차림표의 목록을 찾아 그 목록 중에 있는 특정 노드로 이동하게 해준다.
차림표의 지정은 줄 첫칸에 ‘* Menu:’ 라는 문자를 지정함으로 시작된다. 나머지 부분은 차림표의 설명부분이 된다. 실질적인 각 차림표의 항목은 그 줄의 첫칸에 ‘* ’ 표를 시작함으로 지정된다. 각 항목의 이름 - 즉, m 명령을 사용할 때, 그 명령의 인자가 되는 것 - 은 ‘* ’ 표 다음 하나의 공백 문자가 있고, 그다음에 지정한다. 다음에 콜론(:), 공백문자 또는 탭문자, 다음에, 실질적으로 이동되는 그 노드의 이름이 온다. 이 노드 이름의 끝을 알리는 문자는 탭문자, 쉼표, 줄바꿈 문자로 한다. 하지만, 대부분 마침표(.)로 한다. 이 노드의 이름이 바로 ‘Next’, ‘Previous’, ‘Up’ 노드의 이름으로 사용되는 것이다.
한편, 노드의 이름과 항목의 이름이 같을 경우는 ‘* 이름::’ 이런 형식을 취한다. 주로 이런 방식을 취하는데, 이것은 사용자로 하여금 노드이름과 항목 이름 사이의 혼돈을 막고, 화면상 보다 깔끔해 보이기 때문이다.
차림표를 만들 때는 몇가지 점들을 고려해야한다. 그 info 문서를 읽는 사람들을 생각해서, 각 항목들의 이름을 너무 길거나, 쉽게 눈에 띄지 않는 곳에 있거나, 아무런 설명 없이 단지 차림표 항목만 있거나, 단어 완성기능(일반적으로 글쇠입력중 Tab 글쇠를 쳐서 나머지 부분을 완성해 주는 기능) 등을 전혀 고려 하지 않은 차림표는 좋은 차림표가 못된다. 또한 부득이한 경우가 아니고는 한 차림표 전체가 화면에 보여지도록 하는 것이 좋다. (보통 다섯 항목 이하가 적당하다)
각 항목에 의해서 이동되어 진 노드는 차림표가 있는 노드에 대해서 “하위 노드”가 된다. 그래서, 그 종족관계를 잘 따져 노드의 머릿말 부분을 정의할 때, ‘Up:’ 부분에서 사용할 노드의 지정에 신경을 써야한다. 가끔 그렇게 많이 info 문서의 구조가 복잡하지 않은 경우는 이런 종속관계를 무시하고, ‘Next’, ‘Previous’ 노드 지정 만으로, 문서 전체를 읽을 수 있도록 하기도 한다.
Info 문서 시스템의 최상위 노드의 이름은 간단히 ‘(dir)Top’으로 정해져 있다. 이것은 ‘.../info/dir’ 파일을 info로 읽는 역활을 한다. 이 파일에 위에서 설명한 방식대로 새로운 차림표 항목을 추가 할 수도 있다. 또한 특정 경로안에 있는 info 파일을 지정할 수도 있으나, 그렇게 하는 것보다, 그 info 파일을 info 파일이 있는 경로 안으로 옮겨 놓는 것이 좋다.
또한 Info의 각 노드는 구조는 “계층구조”라고 하지만, 실은 어떠한 직통 연결도 가능하다.(한 하위노드에서 그 노드의 상위의 상위의 차림표 중에 있는 어떠한 노드와도 연결이 가능하다 - 옮긴이 말) 즉, 글의 구조와 글 분기점들의 순환등이 공유되어서, 이런 기능들이 구현되었고, 만약 이런 기능들이 필요하다면, 사용되어 질 수 있다. 하나의 노드가 하나의 문서 구조만을 가져야 할 필요는 없다. 실제로, 지금 읽고 있는 이 파일에도 ‘Top’에 의한 하나의 문서 구조와 ‘Help’ 노드에 의한 또 다른 문서 구조가 있다. 결국 문서 안의 어떠한 다른 문서 구조를 가지고 있는 부분이 있다면, 그것을 발견하지 못할 경우에는 아무도 읽지 못하는 상태를 만들어 내기도 한다. (이런 이야기는 M$-WINDWOS의 도움말 시스템과 비슷한 점이 많음으로 그것을 참고하는 것도 좋을 듯 - 옮긴이 말)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
상호참조는 현재 노드의 어떤 위치에도 올 수 있다. 차림표는 받드시 그 줄의 첫줄에 정의되어야한다. 상호참조는 * 이렇게 차림표가 나타는 것과 달리 ‘*note’ 글자로 나타난다. 상호참조는 ‘)’문자로 끝날 수 없다, ‘)’ 문자는 가끔 노드 이름으로도 사용되기 때문이다. 굳이 상호참조를 괄호로 묶겠다면, 괄호 앞에, 즉 상호참조의 설명이 끝나는 부분에 점(.)을 찍는다. 아래에 두가지 상호참조 예제가 있다.
See section 예제. (See *Note 괄호묶은 예제: Full Proof.) |
이것은 단지 예제일 뿐이니, 실제 상호 참조는 이루워 지지 않는다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
이 노드는 옮긴이가 장난 삼아 만들어 본것입니다. “이것은 단지 예제일 뿐이니, 실제 상호 참조는 이루워 지지 않는다”고 말 했는데도 꼭 실행 시켜 보는 사람이 있더라구요. 껄껄.
바로 l 쳐서 읽던 것 마저 읽으세요. 껄껄.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tags table이란 Info 파일의 크기가 클 경우 노드 이동의 속도를 향상시키기 위해, 그 Info 파일 안에 있는 하나의 목록이다. 이것은 그 파일이 읽혀질 때 자동으로 같이 읽혀진다.
이것은 그 info 파일 자체에서 편집한다는 것은 불가능하고, Emacs 편집기를 Info 모드로 열어서 M-x Info-tagify 이렇게 입력해서 만든다. 그런 다음 반드시 C-x C-s 명령으로 바뀌 내용을 저장해야 한다.
이 tag table은 info 파일의 내용이나, 그 구조가 바뀌었을 때, 꼭 다시 만들어 주어야 한다. 옛날 tag table이 그대로 사용된다면, 각 노드로 바르게 이동되지 않을 수도 있다.
tag table은 그 파일의 끝에 보통 다음과 같은 형식으로 타나난다.
^_ Tag Table: File: info, Node: Cross-refs^?21419 File: info, Node: Tags^?22145 ^_ End Tag Table |
위에서 보는 바와 같이 각 줄은 하나의 노드로 구성되어 있고, 숫자들은 그 노드가 시작하는 위치를 뜻하며, 노드의 이름과 그 숫자 사이에는 ^?(Delete) 문자가 있다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Info 파일을 Texinfo 파일을 통해서 만들지 않고, 그냥 만든다면, 쉽게 실수 하는 것이 바로 노드의 이름이다. 즉, 이전 노드, 다음 노드를 이동하는 것에 대한 노드 이름의 지정이 잘 못되면, 그것을 누가 발견하기 전까지는 아무도 모르는 상태로 남아있게 된다.
이런 경우를 방지하려면 가장 원시적인 방법으로 모든 노드에서 이동 가능한 모든 노드로 직접 이동해 보는 방법이다. 즉, 각 차림표의 항목들, 그리고, 각 상호참조들 차근히 체크해 보는 방법이 있다.
큰 문서일 경우에는 이런 방식의 확인 작업은 실로 엄청난 노력을 요구한다. 이런 문제점들을 해결하기 위해서 emacs에서는 Info-mode로 설정한 후 M-x Info-validate 입력함으로 간단히 그 Info 파일을 검사할 수 있다.
(가장 좋은 방법은 역시 Texinfo 파일로 만드는 것이다 - 옮긴이 말)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
다음에 나열되는 변수들은 Emacs에서 Info-mode의 상태를 바꾸는 역할을 한다. 필요에 따라 여러가지 변수들을 마음대로 그때 그때 정할 수 있으며, 또한 초기화 파일인 ‘~/.emacs’ 파일안에 지정해 둘 수도 있다. See 변수 지정과 검사: (emacs)Examining section ‘Examining and Setting Variables’ in GNU Emacs 설명서.
Info-enable-edit
nil
값으로 지정하면, ‘e’(Info-edit
) 명령을
사용할 수 없게 한다. nil
그외의 값을 지정하면,
Info 파일을 편집할 수 있다. See section 편집.
Info-enable-active-nodes
nil
아닌 값을 지정하면, 노드와 연결되어 있는
Lisp 코드를 실행한다. 즉, 그 노드로 이동하게 되면, Lisp 코드가
실행된다.
Info-directory-list
Info 파일을 찾을 경로. 각 요소는 문자열(경로이름)이거나,
아니면, nil
(초기값)이다.
Info-directory
Info의 최상위 노드가 있는 파일이름 지정. 이 값은
Info-directory
함수가 호출 될 때만 사용된다.
(GNU Emacs 19.34.2 버전(hanemacs)에서는 이 변수가 없네요 - 옮긴이 말)
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Autobuild on July 5, 2010 using texi2html 1.82.