ConTeXt

ConTeXt(コンテキスト)は、TeX の上に作られたもう一つの本格的な文書作成システムです。LaTeX と同じ「フォーマット」の仲間ですが、設計思想がかなり違います。一貫した \setup... 命令でこまかく体裁を制御でき、MetaPost による作図を深く統合しているのが特徴。LaTeX の代替として、とくに凝ったレイアウトや自動組版の現場で使われます。

ConTeXt とは

これまで見てきた pdfTeX・XeTeX・LuaTeX は エンジン(処理プログラム)でした。ConTeXt はそれらとは層が違い、LaTeX と同じ フォーマット、つまり TeX のマクロで組み上げた命令体系です。オランダの Hans Hagen(ハンス・ハーゲン) と、その会社 PRAGMA ADE(Advanced Document Engineering)が、自社の出版業務のために 1990 年代から開発してきました。名前は「text with TeX」、つまり con-tex-t に由来します。

位置づけが少しややこしいのは、ConTeXt が pdfTeX や XeTeX のような「エンジン」ではないのに、入門記事などで エンジン/フォーマットの一覧に並べて紹介される ことが多いためです。実際にはエンジンの上で動く LaTeX の 兄弟分 と捉えるのが正確です。同じ TeX を土台にしながら、LaTeX とは別の流儀で文書を書きます。

LaTeX との違い

LaTeX が膨大な 第三者パッケージ を組み合わせて機能を足していく文化なのに対し、ConTeXt は 高度に統合された一枚岩 です。色・レイアウト・フォント・目次・脚注といった機能が、最初から一貫した設計でまとまっています。だから「あれをやるには、どのパッケージを入れて、競合はないか」と悩む場面が少なく、込み入ったページレイアウトをきれいに制御しやすいのが強みです。

インターフェースの作り方も一貫しています。体裁の指定は、ほぼすべてが **\setup... で始まる設定命令 と、その キー=値(key=value)** の組み合わせで行います。たとえば本文フォントの大きさは \setupbodyfont、用紙サイズは \setuppapersize、段落の体裁は \setupwhitespace というように、命名と書き方に強い規則性があります。覚えるべき「文法」が少なく、設定の見通しが良いわけです。

マークアップそのものも LaTeX とは違います。LaTeX の \begin{document}…\end{document} にあたる本文は \starttext … \stoptext で囲み、節は \startsection … \stopsection(または見出しだけの \section)のように、**\start…\stop… の対** で環境を表すのが ConTeXt 流です。

学習資料の集まり方にも違いがあります。LaTeX は世界中の無数の本・Q&A サイト・パッケージ文書に知識が散らばっていますが、ConTeXt は 公式の ConTeXt wiki(contextgarden) や、入門書『ConTeXt: an excursion』など、情報が比較的 中央に集約 されています。

MkII・MkIV・LMTX という系譜

ConTeXt は、土台に使うエンジンの世代に合わせて大きく三つの系統に分かれます。どれも「ConTeXt」ですが、動かすエンジンと内部実装が異なります。

  • MkII — 最も古い系統で、pdfTeX(および日本語などでは XeTeX)の上で動きます。現在は凍結され、保守のみ。
  • MkIVLuaTeX の上で動く、Lua 時代の全面的な書き直し。2007 年に登場し、Unicode・OpenType フォント・Lua スクリプトを活かします。こちらもほぼ凍結。
  • LMTX(内部名 MkXL)— LuaMetaTeX の上で動く現行の推奨系統。2019 年から提供され、いまアクティブに開発が続いています。

ここで鍵になるのが LuaMetaTeX です。これは Hans Hagen たち ConTeXt 開発陣が、ConTeXt のために専用に作り直した軽量エンジン で、LuaTeX の後継にあたります。LuaTeX から PDF 出力(バックエンド)やフォント処理、多くのプリミティブを意図的に取り除き、それらは ConTeXt 側(Lua コード)で実装するという思い切った設計です。外部ライブラリに依存せず、複雑なビルド環境も要らず、OS をまたいで移植しやすい——「無駄をそぎ落とした自己完結型の後継」です。

LuaMetaTeX は ConTeXt グループ自身が維持しており、いまのところ実際に活用しているのも事実上 ConTeXt(LMTX)だけです。新しく ConTeXt を始めるなら、迷わず LMTX を選ぶのが標準です。

MetaPost の深い統合

ConTeXt を語るうえで外せないのが MetaPost との一体化 です。MetaPost は、クヌースの METAFONT 譲りの記述で精密な図を描くプログラミング言語。ConTeXt は MPlib(MetaPost をライブラリ化したもの。Taco Hoekwater と Hans Hagen が 2007 年に分離)を核に取り込み、文書の中に直接 MetaPost のコードを書いて、コンパイルと同時にその場で作図 できます。

古い MkII では、図を本番処理で描くと TeX の処理が遅くなるか、TeX の処理の合間に中間 PostScript ファイルを生成する必要がありました。MPlib によってそれが実行時に直接こなせるようになり、罫線・背景・装飾といったページ要素まで MetaPost で動的に生成する、ConTeXt ならではの作図文化が生まれています。

最小の例

雰囲気をつかむために、コンパイルできる最小の ConTeXt 文書を見てみましょう。本文は \starttext から \stoptext まで。LaTeX の \documentclass にあたる「文書クラスの宣言」は必須ではなく、必要な体裁は冒頭で \setup... 命令を使って指定します。

document.tex
\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… 流になっているのが見て取れます。

LaTeX と ConTeXt の対応

LaTeX に慣れた人向けに、代表的な書き方を並べてみます。考え方は近くても、語彙と作法が違うことがわかります。

LaTeXConTeXtしたいこと
\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 グループが独自に配布する ConTeXt Standalone(現在は LMTX 配布) を使うのが定番です。こちらは ConTeXt 関連だけを軽量にまとめ、頻繁に更新されます。