ConTeXt는 TeX를 기반으로 구축된 두 번째, 본격적인 문서 준비 시스템입니다. LaTeX와 동일한 제품군에 속합니다. 둘 다 "형식"입니다. 그러나 디자인 철학은 상당히 다릅니다. 일관된 \setup... 명령 제품군은 모양을 세밀하게 제어할 수 있으며 MetaPost 드로잉은 깊이 통합되어 있습니다. 특히 정교한 레이아웃과 자동화된 조판에 선호되는 LaTeX의 대안입니다.
ConTeXt는 무엇입니까?
지금까지 본 pdfTeX, XeTeX 및 LuaTeX는 처리를 수행하는 프로그램인 엔진입니다. ConTeXt는 다른 계층에 위치합니다. LaTeX와 마찬가지로 TeX 매크로에서 조합된 명령 시스템인 형식입니다. 이는 1990년대부터 네덜란드의 Hans Hagen과 그의 회사인 PRAGMA ADE(Advanced Document Engineering)에 의해 원래 자체 출판 작업을 위한 제작 도구로 개발되었습니다. 이름은 "TeX가 포함된 텍스트"(con-tex-t)에서 유래되었습니다.
그 위치는 약간 혼란스럽습니다. ConTeXt는 pdfTeX/XeTeX 의미에서 "엔진"은 아니지만 소개 자료에서는 종종 엔진 및 형식과 함께 나열됩니다. 엔진 위에서 작동하는 LaTeX의 형제라고 생각하는 것이 더 정확합니다. 동일한 TeX 기반을 기반으로 구축되어 문서를 작성하는 다른 방법을 제공합니다.
LaTeX와 다른 점
LaTeX가 방대한 타사 패키지 컬렉션의 기능을 함께 결합하는 문화라면, ConTeXt는 고도로 통합되고 모놀리식입니다. 색상, 레이아웃, 글꼴, 목차, 각주 등 모두 처음부터 함께 디자인되었습니다. 따라서 "이것에 어떤 패키지를 추가해야 하는지, 다른 패키지와 충돌하는지" 궁금해하는 시간이 줄어들고 복잡한 페이지 레이아웃을 깔끔하게 제어하기가 더 쉽습니다. 이러한 통합이 핵심 강점입니다.
인터페이스도 일관적입니다. 거의 모든 모양은 key=value 옵션과 결합된 \setup...로 시작하는 설정 명령을 통해 지정됩니다. 본문 글꼴 크기는 \setupbodyfont, 용지 크기는 \setuppapersize, 단락 간격은 \setupwhitespace 등입니다. 이름 지정 및 구문은 매우 규칙적입니다. 기억해야 할 임시 "문법"이 거의 없으며 설정을 쉽게 읽을 수 있습니다.
마크업 자체도 LaTeX와 다릅니다. 본문(LaTeX의 \begin{document}…\end{document})은 \starttext … \stoptext로 둘러싸여 있으며 섹션은 \startsection … \stopsection(또는 제목만 \section)입니다. 환경은 ConTeXt 관용어인 일치하는 \start…/\stop… 쌍으로 표현됩니다.
학습자료도 다르게 모인다. LaTeX 지식은 전 세계 수많은 책, Q&A 사이트 및 패키지 매뉴얼에 분산되어 있는 반면, ConTeXt 문서는 비교적 중앙 집중화되어 있습니다. 즉, 공식 ConTeXt 위키(contextgarden) 및 *ConTeXt: an exhibition*과 같은 입문서입니다. 커뮤니티는 같은 방식으로 모입니다. 연례 ConTeXt 회의를 통해 개발자와 사용자가 직접 대면하고 디자인 및 구현 논의가 다시 공식 자료로 흘러가는 경향이 있습니다.
MkII / MkIV / LMTX 계보
ConTeXt는 세 가지 주요 라인으로 제공되며 각각은 기본 엔진의 세대와 일치합니다. 그들 모두는 "ConTeXt"이지만 내부가 다른 다른 엔진에서 실행됩니다.
- MkII — pdfTeX(및 일본어와 같은 스크립트의 경우 XeTeX)에서 실행되는 가장 오래된 줄입니다. 지금은 동결되어 유지관리만 되고 있습니다.
- MkIV — LuaTeX에서 실행되는 Lua-era 재작성. 2007년에 도입된 이 제품은 Unicode, OpenType 글꼴 및 Lua 스크립팅을 활용합니다. 그것도 대부분 얼어붙어 있다.
- LMTX (내부적으로 MkXL) — LuaMetaTeX에서 실행되는 현재 권장 라인입니다. 2019년부터 사용 가능하며 활발한 개발이 계속되고 있습니다.
여기서 핵심은 LuaMetaTeX입니다. 이는 Hans Hagen과 ConTeXt 개발자가 LuaTeX의 후속 제품인 ConTeXt용으로 특별히 재구축한 린 엔진입니다. 의도적으로 PDF 출력(백엔드), 글꼴 처리 및 많은 기본 요소를 LuaTeX에서 제거하여 ConTeXt(Lua) 측에 구현되도록 남겨두었습니다. 즉 대담한 디자인입니다. 외부 라이브러리에 대한 종속성이 없고 복잡한 빌드 생태계가 필요하지 않으며 최소한의 노력으로 운영 체제 전반에 걸쳐 포트가 가능한 단순하고 독립적인 후속 제품입니다.
LuaMetaTeX는 ConTeXt 그룹 자체에 의해 유지 관리되며 현재로서는 ConTeXt(LMTX)가 실제로 이를 실제로 사용하는 유일한 것입니다. ConTeXt로 새로 시작하는 경우 LMTX가 표준 선택입니다.
Deep MetaPost 통합
MetaPost와의 융합 없이는 ConTeXt의 계정이 완성되지 않습니다. MetaPost는 Knuth의 METAFONT에서 파생된 정확한 수치를 위한 프로그래밍 언어입니다. ConTeXt는 MPlib를 핵심에 포함합니다. MetaPost는 2007년에 Taco Hoekwater와 Hans Hagen에 의해 분리된 재사용 가능한 라이브러리로 전환되었습니다. 따라서 문서 내부에 MetaPost 코드를 직접 작성하고 동일한 컴파일 중에 즉석에서 그림을 그릴 수 있습니다.
이전 MkII에서는 런타임에 그림을 그리면 TeX 실행 속도가 느려지거나 실행 사이에 중간 PostScript 파일을 생성해야 했습니다. MPlib는 이를 런타임에 직접 가능하게 하여 페이지 요소(규칙, 배경, 장식)까지 MetaPost를 통해 동적으로 생성되는 독특한 ConTeXt 그리기 문화를 탄생시켰습니다.
최소한의 예
이에 대한 느낌을 얻기 위해 컴파일되는 가장 작은 ConTeXt 문서는 다음과 같습니다. 본문은 \starttext에서 \stoptext까지 실행됩니다. LaTeX의 \documentclass와 같이 필수 문서 클래스 선언은 없습니다. \setup... 명령을 사용하여 상단에 필요한 모양을 설정합니다.
\setuppapersize[A4]
\setupbodyfont[12pt]
\starttext
\startsection[title=はじめに]
Hello, \ConTeXt! 数式もそのまま組めます:
\startformula
E = mc^2
\stopformula
\stopsection
\stoptext여기서 \setuppapersize는 A4를 선택하고, \setupbodyfont는 12pt 본문을 설정하고, \startsection는 "소개"라는 섹션을 엽니다. 표시된 방정식은 \startformula … \stopformula에 들어갑니다. 역할은 LaTeX의 \section{…} 및 \[ … \]와 일치하지만 쓰기 스타일이 \start…/\stop… 관용구를 따르는 것을 볼 수 있습니다.
# ConTeXt は context コマンドで処理する / compile with the context command
context first-context.tex
# => first-context.pdf중요한 점은 여기에서 pdflatex 또는 lualatex를 실행하지 않는 것입니다. 파일이 여전히 .tex로 끝나더라도 ConTeXt는 LaTeX 형식이 아닙니다. context 명령에 넘겨주세요. README에 "build this document with context main.tex"를 넣어 공동 작업자와 CI가 실수로 LaTeX 명령을 사용하지 않도록 하세요.
LaTeX 및 ConTeXt 나란히
LaTeX에 익숙한 사람들을 위해 몇 가지 대표적인 관용어를 나란히 나열해 보겠습니다. 생각은 비슷하지만 어휘와 관습이 다릅니다.
| LaTeX | ConTeXt | 목표 |
|---|---|---|
\begin{document} | \starttext | 몸을 시작하다 |
\section{…} | \section{…} / \startsection | 섹션 제목 |
\[ … \] | \startformula … \stopformula | 표시된 방정식 |
geometry など | \setuppapersize 및 기타 \setup... | 종이와 레이아웃 |
그것을 선택하는 경우
- 정교하거나 자동화된 레이아웃. 복잡한 페이지 디자인이나 데이터에서 대량으로 생성된 조판은 일관된 제어를 통해 이점을 얻을 수 있습니다.
- 프레젠테이션. 전용 슬라이드 모드가 있으며 MetaPost는 동적 장식을 만들 수 있습니다.
- XML에서 게시. ConTeXt는 강력한 XML 처리 기능을 갖추고 있으며 XML를 직접 읽고 조판하는 작업 흐름에 능숙합니다.
- 그림 삽입. MetaPost가 통합되면 그림과 텍스트가 단일 소스에 존재할 수 있습니다.
하지만 주의 사항이 있습니다. 커뮤니티는 LaTeX보다 훨씬 작으며 타사 패키지도 적습니다. 저널 템플릿, 튜토리얼, 축적된 Q&A는 LaTeX보다 더 제한적입니다. 따라서 실제로 대부분의 학술 사용자는 여전히 논문과 논문에 대해 LaTeX를 선택합니다. ConTeXt를 해당 종류의 작업에 완벽하게 맞는 특수 옵션으로 생각하십시오.
그것을 얻는 방법
ConTeXt는 표준 배포판 TeX Live와 함께 제공되며 LuaMetaTeX 엔진은 TeX Live 2023부터 포함되었으므로 일반적인 TeX Live 설치는 LMTX도 제공합니다(현재 TeX Live는 2026 버전입니다). 대신 최신 ConTeXt를 추적하려는 경우 일반적인 경로는 그룹 자체의 ConTeXt 독립 실행형(현재 LMTX로 배포됨)입니다. 이는 자주 업데이트되는 경량의 ConTeXt 전용 번들입니다.
ConTeXt에서 첫 번째 장을 시작합니다
ConTeXt를 시도할 때 하나 이상의 패키지를 찾는 LaTeX 습관을 버리십시오. 먼저 \starttext, \startsection 및 \startitemize를 사용하여 본문을 빌드한 다음 상단의 \setup... 명령에 여백, 글꼴 및 제목 모양을 수집합니다. 장이 성장함에 따라 스타일을 추가합니다. 설정은 산문에서 벗어나고 나중에 페이지 디자인을 변경한다는 것은 한 곳을 보는 것을 의미합니다.
- 저널 제출물은 필수 템플릿이 LaTeX인 경우 LaTeX를 유지해야 합니다.
- 페이지 디자인을 소유한 소책자, 교육 자료 및 카탈로그는 ConTeXt의 통합 설정 모델의 이점을 누릴 수 있습니다.
- 산문과 동일한 출처의 그림은 MetaPost 통합을 일찍 시도하는 좋은 이유입니다.