マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

1TeX な文書を LaTeX するやつ

11 月 11 日はきりたんぽの日*1。そういうわけで、1TeX の話を少々。

1TeX は画期的なマクロパッケージであるが、現状では致命的ともいえる問題を抱えている。それは、あまりに先進的すぎる故に、TeX Live などの主要な TeX ディストリビューションでは標準でサポートされず、ユーザが各自でフォーマット作成を行う必要があることである。このため、せっかく画期的な 1TeX を用いて文書を作成しても、TeX の操作に未習熟な初級者は 1TeX 文書をコンパイルできないという問題が生じてしまう。由々しき事態である。

この難題を解決するため、「普通の LaTeX で 1TeX 文書をコンパイルする」ための画期的なパッケージを開発した。

使用法

「他の(完結した)文書を読み込む」という機能のため、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 を用意する。

[doc.tex]
\RequirePacakge[doc.1tex]{ez1tex}[]

これを「pdflatex doc」でコンパイルすると、「1tex doc.1tex」としてコンパイルしたのと同等の出力(doc.pdf)が得られる。なお、オプションの 1TeX ファイル名を省略した場合は、大本のソースファイル名の拡張子を .1tex に変えたものが既定値として使われる。このため、今の例だとパッケージオプションは省略してもかまわない。

[doc.tex]
% doc.1tex が読み込まれる
\RequirePacakge{ez1tex}[]
使用例

例えば、昨年のきりたんぽの日のアレを普通の LaTeXコンパイルしてみよう。

アレのファイル(message.txt)をダウンロードして適当なディレクトリに配置した後、同じ場所に次の LaTeX ファイルを作る。

[message.tex]
\RequirePackage[message.txt]{ez1tex}[]

ez1tex をインストール*2した TeX Live 環境*3において「pdflatex message」を実行すると以下の出力が得られる。

もちろん、これは message.txt を 1TeX でコンパイルしたのと同じ結果である。((なお、1TeX の仕様ではソース中の「1」以外の文字は無視される。だから、message.txt は 1TeX ソースとしてそのままコンパイルできる。))

*1:そういえば、ここ数年、とある菓子メーカーが「ポッキー」なる製品のキャンペーンを 11 月 11 日に行っているようである。恐らく、きりたんぽの一種なのであろう。

*2:ez1tex のインストールの方法は通常の LaTeX のパッケージと全く同じである。すなわち $TEXMF/tex/latex/ 以下の適当な場所に配置すればよい。

*3:W32TeX の場合は doublestroke パッケージを追加でインストールする必要がある。