11 月 11 日はきりたんぽの日*1。そういうわけで、1TeX の話を少々。
1TeX は画期的なマクロパッケージであるが、現状では致命的ともいえる問題を抱えている。それは、あまりに先進的すぎる故に、TeX Live などの主要な TeX ディストリビューションでは標準でサポートされず、ユーザが各自でフォーマット作成を行う必要があることである。このため、せっかく画期的な 1TeX を用いて文書を作成しても、TeX の操作に未習熟な初級者は 1TeX 文書をコンパイルできないという問題が生じてしまう。由々しき事態である。
この難題を解決するため、「普通の LaTeX で 1TeX 文書をコンパイルする」ための画期的なパッケージを開発した。
- ez1tex パッケージ (Gist:zr-tex8r)
使用法
「他の(完結した)文書を読み込む」という機能のため、ez1etx の用法は一般的な LaTeX パッケージとは異なる。これを読み込む LaTeX 文書には \documentclass
以下の記述を全く行わず、ez1tex パッケージの読込を行うための \RequirePackage
命令だけを記述する。((1TeX 文書は論理的には LaTeX 文書と同じ構造をもつので、読み込まれる 1TeX ソース中に \documentclass
以下の記述があると考えられる。\documentclass
より“前に”パッケージを読み込むため、\usepackage
ではなく \RequirePackage
命令を利用することになる。))(末尾の []
に注意。((これは通常の \usepackage
/\RequirePackage
命令のオプション引数である。この引数が空の場合は []
自体を省略できる(だから通常は省略する)のだが、今の場合はこれがソースファイルの末尾になるので省略できない。)))
% これだけ書く \RequirePackage[<1TeXソースファイル名>]{ez1tex}[]
ここで、パッケージオプションには読み込む 1TeX 文書のファイル名を指定する。この 1 行だけの LaTeX 文書を pdflatex コマンドでコンパイルすると、指定の 1TeX 文書が読み込まれて、その組版結果が出力される。
例えば、1TeX 文書のファイル doc.1tex があってこれを普通の pdfLaTeX でコンパイルしたいとする。この場合は、次の LaTeX 文書ファイル doc.tex を用意する。
\RequirePacakge[doc.1tex]{ez1tex}[]
これを「pdflatex doc
」でコンパイルすると、「1tex doc.1tex
」としてコンパイルしたのと同等の出力(doc.pdf)が得られる。なお、オプションの 1TeX ファイル名を省略した場合は、大本のソースファイル名の拡張子を .1tex に変えたものが既定値として使われる。このため、今の例だとパッケージオプションは省略してもかまわない。
% doc.1tex が読み込まれる \RequirePacakge{ez1tex}[]
使用例
例えば、昨年のきりたんぽの日のアレを普通の LaTeX でコンパイルしてみよう。
アレのファイル(message.txt)をダウンロードして適当なディレクトリに配置した後、同じ場所に次の LaTeX ファイルを作る。
\RequirePackage[message.txt]{ez1tex}[]
ez1tex をインストール*2した TeX Live 環境*3において「pdflatex message
」を実行すると以下の出力が得られる。
もちろん、これは message.txt を 1TeX でコンパイルしたのと同じ結果である。((なお、1TeX の仕様ではソース中の「1
」以外の文字は無視される。だから、message.txt は 1TeX ソースとしてそのままコンパイルできる。))