Texinfo는 GNU 프로젝트의 공식 문서화 형식이자 문서 시스템이다. 리처드 스톨먼(Richard Stallman)과 로버트 체이셀(Robert Chassell)에 의해 고안되었으며, 1986년 2월에 처음 발표되었다. 하나의 소스 파일(source file, .texi)로부터 여러 출력 형식을 생성할 수 있는 것이 핵심 특징이다.
개요
Texinfo는 소프트웨어 매뉴얼을 체계적으로 작성하고 다양한 형식으로 배포하기 위해 설계된 마크업 언어(markup language)이다. TeX 조판 시스템을 기반으로 하며, LaTeX와 유사한 명령어 구조를 갖는다. GNU 프로젝트의 모든 공식 문서는 Texinfo로 작성되며, GNU 외의 여러 프로젝트에서도 사용된다.
역사
Texinfo는 매사추세츠 공과대학(MIT)에서 인쇄 출력용으로 사용되던 BoTeX 시스템과, 스톨먼이 TECO 기반 Emacs 위에 만든 온라인 하이퍼링크 문서 시스템인 Info를 결합하여 만들어졌다. BoTeX는 데이비드 문(David A. Moon)이 Lisp Machine 문서화에 사용했던 Bolio 시스템을 TeX 출력용으로 변환한 것이다. 또한 브라이언 리드(Brian Reid)의 Scribe 및 당시의 다른 포매팅 언어들로부터 느슨하게 영향을 받았다.
초기 Info 변환기는 Emacs Lisp로 작성되었으며, 이후 브라이언 폭스(Brian Fox, 버전 3.8까지), 칼 베리(Karl Berry, 버전 5.2까지), 개빈 스미스(Gavin Smith, 2014년 12월부터 현재)가 개발을 주도하였다.
출력 형식
Texinfo 소스 파일은 다음과 같은 다양한 형식으로 변환될 수 있다.
- Info: Texinfo의 고유 하이퍼텍스트 형식. 평문에 탐색 제어 문자를 추가한 형태로, info 프로그램이나 다양한 Info 뷰어를 통해 읽을 수 있다.
- HTML: texi2any --html 명령으로 생성된다. 월드 와이드 웹(World Wide Web)에서 표준 문서 형식으로 사용된다.
- DVI: texi2dvi 명령으로 생성되는 장치 독립적 파일 형식(device independent file format)이다. TeX 조판 시스템의 출력물이다.
- PDF: texi2dvi --pdf 또는 texi2pdf 명령으로 생성된다. 기본적으로 pdftex 프로그램을 사용한다.
- LaTeX: texi2any --latex 명령으로 생성된다. 이후 DVI, PostScript, PDF로 추가 처리할 수 있다.
- DocBook: texi2any --docbook 명령으로 생성되는 XML 기반 마크업 언어이다.
- EPUB 3: texi2any --epub3 명령으로 생성되는 전자책 형식이다.
- XML: texi2any --xml 명령으로 생성되는 Texinfo 소스의 XML 변환(transliteration)이다.
- 평문(Plain text): texi2any --plaintext 명령으로 생성된다. Info 출력과 유사하나 탐색 제어 문자가 제거된다.
참고로, 표준 Texinfo 도구로는 유닉스 매뉴얼 페이지(man page) 형식을 직접 생성하지 않는다.
소스 파일 구조
Texinfo 소스 파일은 거의 평문(plain text)에 가깝지만, '@' 기호로 시작하는 명령어로 마크업된다. 이 명령어들은 장(chapter), 절(section), 교차 참조(cross reference), 색인(index) 등의 문서 구조를 표현한다.
발음 및 표기
Texinfo 공식 문서에 따르면, "Texinfo"의 첫 음절은 "hex"가 아닌 "speck"과 운율을 맞춰 발음한다. 이는 TeX의 발음에서 유래한 것으로, TeX의 'X'는 영어 알파벳 'x'가 아니라 그리스 문자 카이(chi)를 나타내기 때문이다. 공식 표기법은 첫 글자 'T'만 대문자로 쓰고 나머지는 소문자로 표기하는 "Texinfo"이다.
라이선스 및 배포
GNU Texinfo 배포판은 GNU 일반 공중 사용 허가서(GNU General Public License, GPL) 버전 3 이상에 따라 라이선스가 부여된 자유 소프트웨어(free software)이다. C 언어와 Perl로 작성되었으며, 리눅스(Linux) 및 BSD 계열 운영 체제에서 실행된다.