Emacs/texinfo

C20

비고: 이 페이지의 내용은 GNU 재단의 Texinfo 메뉴얼 중 해당 부분을 번역한 것이다.

개요

Texinfo 모드는 Texinfo 파일을 편집하기 위한 몇 가지 특수한 기능들을 제공한다. 예를 들어:

  • 자주 쓰는 @ 명령문을 간단하게 삽입할 수 있다.
  • @node 행을 자동으로 삽입할 수 있다.
  • Textinfo 소스 파일의 구조를 한눈에 볼 수 있다.
  • 각 노드마다 자동으로 '다음', '이전', '위로' 등의 네비게이션을 삽입하거나 업데이트할 수 있다.
  • 메뉴를 자동으로 삽입하거나 업데이트할 수 있다.
  • 마스터 메뉴를 자동으로 생성할 수 있다.
  • Info 파일의 포멧, 출력시 타이프셋 등을 일부 또는 전체에 대해 설정할 수 있다.

이 중 가장 유용한 기능은 위의 두 가지일 것이다.

명령들

다른 모드들과 달리 Texinfo 모드는 기본적인 Emacs 텍스트 에디팅과 유사한 명령어를 가진다. 가장 큰 차이점은 채우기 (filling)이다. Texinfo의 명령어는 복잡하기 때문에, 미처 넣지 못한 명령어를 자동으로 채워주는 명령어가 존재한다. M-g(fill-paragraph) 명령어는 이를 구현한다.

Texinfo 모드는 textinfo-chapter-level-regexp 변수 값을 통해 page-delimiter를 설정한다. 정규식인 이유는 부록 등 챕터마다 다르게 설정될 수 있기 때문이기 때문이다. C-x ](forward-page) 또는 C-x ] (backward-page) 명령어를 통해 페이지 간의, C-x n p (narrow-to-page)를 통해 장 간의 이동을 할 수 있다.

물론 Emacs가 그렇듯 위 단축키는 원하는 대로 수정이 가능하다.

확장자

Texinfo 모드는 .texinfo, .texi, .txi, .tex 파일을 인식한다. 혹은, 첫줄에 -*-texinfo-*-로 되어있는 모든 파일도 info 파일로 인식한다. M-x texinfo-mode를 입력하면 여러 다른 모드에서 texinfo 편집 모드로 전환한다.

삽입 명령어

Texinfo 모드는 다양한 표시어를 손쉽게 삽입할 수 있는 명령어들을 제공한다. 단축키는 기본적으로 C-c C-c, 명령어는 M-x texinfo-insert- 접두어를 가지고 시작한다.

  • C-c C-c c / M-x texinfo-insert-@code: 코드 블럭을 뜻하는 @code{}를 삽입하고 커서를 중괄호 가운데에 놓는다.
  • C-c C-c d / M-x texinfo-insert-@dfn: 용어의 정의를 뜻하는 @dfn{}를 삽입하고 커서를 중괄호 가운데에 놓는다.
  • C-c C-c e / M-x texinfo-insert-@end: 어떤 블록이 끝났음을 명시하는 @end를 삽입하고, 어떤 블록을 끝마칠지 명시한다(블록의 구조가 복잡할 경우 의도한 것과 일치하지 않을 수도 있다).
  • C-c C-c i / M-x texinfo-insert-@item: 항목을 뜻하는 @item를 삽입하고 커서를 다음 줄 처음으로 옮긴다.
  • C-c C-c k / M-x texinfo-insert-@kbd: 키보드 명령어를 뜻하는 @kbd{}를 삽입하고 커서를 중괄호 가운데에 놓는다.
  • C-c C-c n / M-x texinfo-insert-@node: (장의 나눔을 정의하는)노드를 뜻하는 @node를 삽입한다.
  • C-c C-c o / M-x texinfo-insert-@noindent: 들여쓰기를 방지하는 @noindent를 삽입하고 커서를 다음 줄 처음으로 옮긴다.
  • C-c C-c s / M-x texinfo-insert-@samp: 예시 또는 샘플을 뜻하는 @samp{}를 삽입하고 커서를 중괄호 가운데에 놓는다.
  • C-c C-c t / M-x texinfo-insert-@table: 표를 뜻하는 @table를 삽입하고 커서를 공백 하나 뒤에 놓는다.
  • C-c C-c v / M-x texinfo-insert-@var: 메타구문변수(metasyntatic variables)를 뜻하는 @var{}를 삽입하고 커서를 중괄호 가운데에 놓는다.
  • C-c C-c x / M-x texinfo-insert-@example: 예제 텍스트를 뜻하는 @example를 삽입하고 커서를 다음 줄 처음으로 옮긴다.
  • C-c C-c { / M-x texinfo-insert-braces: 중괄호를 삽입하고 커서를 가운데에 놓는다.

만일 이미 적혀있는 단어에 위 표시어를 삽입하려면, 명령어 앞에 C-u [num]을 먼저 입력하면 된다. 여기서 [num]은 단어의 개수를 뜻한다.

파일 구조

C-c C-s / M-x texinfo-show-structure 명령어를 사용하면 'Occur' 버퍼에 @chapter, @section 등의 명령어만 따로 모아서 보여주며, 이를 통해 texinfo 문서의 구조를 확인할 수 있다. 이 버퍼에서 특정 목차 행에 커서를 가져가 C-c C-c / M-x occur-mode-goto-occurrence를 입력하면 문서의 해당 부분으로 이동한다.

접두어로 C-u를 붙이면 기존 목차에 더해 @node 부분도 보여주며, 이를 통해 노드가 제대로 입력되었는지 확인할 수도 있다.

C-x n n / M-x narrow-to-region 명령어를 사용하면 현재 챕터에 대한 구조만 보여준다. 특히 메뉴얼을 작성할 때 유용한 기능이다.

업데이트

texinfo 모드는 문서 구조를 자동으로 검색해 메뉴나 노드 등을 업데이트하는 기능을 제공한다. C-u M-x texinfo-master-menu / C-u C-c C-u m를 입력하면 자동으로 노드와 메뉴를 업데이트한다.

주의: 위 명령어는 @node, @section 등의 구성 요소 수정을 받아들인다. 즉 @menu 등의 내용은 반영하지 않으므로, 건드리지 않고 자동 업데이트를 수행하는 것이 낫다.

blog comments powered by Disqus