<colcolor=#fff><bgcolor=#a32d2a> GNU Texinfo | |
| |
<colbgcolor=#a32d2a> 종류 | 마크업 언어 |
최초 개발자 | 리처드 스톨먼 |
개발 | GNU |
출시 | 1986년 2월 |
언어 | C, Pearl |
플랫폼 | GNU/Linux, BSD |
안정 버전 | v7.2(2024년 12월 23일) |
라이선스 | GPLv3 |
링크 |
[clearfix]
1. 개요
GNU에서 제작된 프로그램의 매뉴얼과 문서를 제작하기 위해 사용하는 공식 문서 형식 및 마크업 언어.2. 역사
리처드 스톨먼은 더글러스 엥겔바트(Douglas Engelbart)가 개발한 NLS라는 하이퍼텍스트 프리젠테이션 시스템을 보고 깊은 인상을 받아 몇년후 1975년 Emacs에 자신이 개발한 Info라는 하이퍼텍스트 매뉴얼 시스템을 탑재하게 된다.이와 별개로, 1970년대 카네기 멜런 대학교 재학생이던 브라이언 리드(Brian Reid)는 Scribe라는 유명한 출판용 문서 포맷을 개발하게 되는데, 이후 Texinfo의 개발에 많은 영향을 주었다. @-스타일 명령어부터 당시로는 획기적인 조판(typeset)이 아닌 문서 구성에 중점을 둔 마크업 언어였다는 점 등, Texinfo의 핵심 특징이 대부분 Scribe에서 영향을 받았다고 해도 과언이 아니다.
한편, 당시 리처드 스톨먼이 재직하고 있던 MIT는 Bolio라는 인쇄물 출력 형식을 자체적으로 개발하게 된다. 이때 스톨먼은 Bolio 입력을 TeX으로 변환하는 BoTeX이라는 프로세서를 개발하는 일을 작업을 진행해 1984년 10월 31일 최초 버전을 출시하게 된다. 이때 당시의 BoTeX은 결국 TeX으로 변환되었으므로 문서 출력용으로밖에 쓸 수 없었고, 자신이 개발한 Info등 더 더양한 포맷을 지원하기를 원했던 스톨먼은 결국 1986년 2월 Texinfo를 개발하게 된다.
초기 버전은
makeinfo
기능밖에 없었고, 무엇보다 elisp로 작성되었기에 1990년대 초반에 브라이언 폭스(Brian Fox)가 이를 다시 C로 재작성하게 된다.이후 2012년대 이후 들어서
makeinfo
와 texi2html
은 더 발전된 Perl 구현체인 texi2any
로 대체되고 있다.3. 지원 출력
- 텍스트
아예 비형식인 것은 아니고, 섹션 하단 강조 표시나 목록 들여쓰기 정도는 표시된다. 네비게이션 제어 문자가 없는 순수 아스키 문자(또는 출력용 문자)만 사용한다는 점만 제외하면 info형식과 비슷하다. - Info
링크 및 역링크 등을^_
와 같은 제어 문자로 마크업한 형식. 주로 터미널에서info
뷰어나 Emacs로 읽을 수 있다. - HTML
문서 웹 퍼블리싱용으로, GNU의 홈페이지에서 보여지는 대부분의 문서와 매뉴얼들은 전부 Texinfo로 제작된 것이다. CSS는 하나도 없이 철저하게 시맨틱에만 집중한 문서로만 나오므로 절대로 타 문서화 툴처럼 예쁜 형식을 기대해선 안 된다. 다만texi2any
에서 추가적인 설정을 통해 충분히 꾸밀 수는 있다. - DVI
주로 내부적으로 TeX으로 변환된 다음 변환되며,texi2dvi
가 호출된다. 이 때texinfo.tex
모듈이 설치되어 있어야 하므로 texlive 기준 texlive-tetec 등의 패키지가 필요하다. - LaTeX
생성되는 출력에etoolbox
등 다양한 패키지들이 들어갈 수 있는데, 이 패키지들이 모두 설치되어 있어야 빌드가 가능하다. - PDF
주로 내부적으로 TeX으로 변환된 후pdftex
등을 호출해서 생성된다. 따라서 texlive등 적절한 패키지가 설치되어 있지 않다면 오류가 날 수 있다. - EPUB
EPUB 3 버전을 지원한다. Pearl 구현체에서는Archive::Zip
모듈 설치가 필요하다. - Docbook
- XML
HTML하고 다르게 바로 읽을 수 있는 형태보단 사실상 주어진 texinfo 파일의 AST 파싱된 형태에 가깝다. 주로 추가적인 후처리기 등에 넘기기 위해 쓰인다.
4. 구조
전반적인 내용이 헤더와 섹션, 레퍼런스 등으로 일반적으로 서적이나 출판물에서 흔히 쓰이는 의미 단위로 구분되므로 LaTeX에 익숙하다면 쉽게 익힐 수 있다.명령어는
@<명령어 이름> 내용
식으로 작성하며, 여러 줄이 들어가는 블록의 경우 @end
로 닫기도 한다. 예를 들어, 주석은 다음과 같이 @c
명령어를 사용한다.@c 이 줄은 주석입니다.