TeX 第一歩

はじまりは

図書館で奥村晴彦著『[改訂第5版]LaTeX2e美文書作成入門』を目にしたことが直接のきっかけでした。TeXの名前はインターネットの普及以前から知っていましたが触る機会もなく現在に至ります。

動機は数式や化学式の表現ですが、そのうちワープロで使い勝手の良いものが出てくると思っていましたし、科学論文を書くわけでもないので後回しにしてきたわけです。

この本が目に入ったもう一つの理由は奥村晴彦さんの名前をウェブページから知っていたことでした。借りてきたあと、彼のページを改めてみると、現在は第7版がでています。

奥村晴彦・黒木裕介『[改訂第7版]LaTeX2e(ラテック・ツー・イー)美文書作成入門』

TeXの発音はテックまたはテフとされます。私は最初に人から聞いた音がテフなのでそちら派なのですが、ギリシャ語由来なのでフはfuでなく喉の摩擦音なのだそうです。そのように発音するとクと近いのですが、聞き取りにくいので、人に説明する時に高い確率で聞き返されます。そうすると唇の摩擦でfuと言っちゃいますね。

参考にできそうなウェブページ

TeX Wiki(奥村晴彦さんのところから)

Debian でのTeX 環境の構築(Youhei SASAKI's official site)

Debianへのインストール

当方のDebianは現在 Debian 9 (strech)。用意されているパッケージマネージャに依存して入れることにする。

TeX はいろいろ複雑だが、linuxでのキーワードは texlive 。

texlive-full ですべて入るというものの、様子見のため関連を見ながら少しずつ入れていく。synapticの履歴です。赤字がインストールを指示したもの。その他は関連で自動的に入ったもの

(1)

Commit Log for Sun Dec 16 01:21:56 2018
以下のパッケージがインストールされました:
fonts-lmodern (2.004.5-3)
fonts-texgyre (20160520-1)
libfile-homedir-perl (1.00-1)
libfile-which-perl (1.21-1)
libptexenc1 (2016.20160513.41080.dfsg-2+deb9u1)
libsynctex1 (2016.20160513.41080.dfsg-2+deb9u1)
libtexlua52 (2016.20160513.41080.dfsg-2+deb9u1)
libtexluajit2 (2016.20160513.41080.dfsg-2+deb9u1)
libyaml-tiny-perl (1.70-1)
libzzip-0-13 (0.13.62-3.1)
lmodern (2.004.5-3)
prosper (1.00.4+cvs.2007.05.01-4.1)
ps2eps (1.68+binaryfree-2)
t1utils (1.39-2)
tex-common (6.06)
tex-gyre (20160520-1)
texlive (2016.20170123-5)
texlive-base (2016.20170123-5)
texlive-binaries (2016.20160513.41080.dfsg-2+deb9u1)
texlive-extra-utils (2016.20170123-5)
texlive-font-utils (2016.20170123-5)
texlive-fonts-recommended (2016.20170123-5)
texlive-fonts-recommended-doc (2016.20170123-5)
texlive-generic-recommended (2016.20170123-5)
texlive-latex-base (2016.20170123-5)
texlive-latex-base-doc (2016.20170123-5)
texlive-latex-recommended (2016.20170123-5)
texlive-latex-recommended-doc (2016.20170123-5)
texlive-pictures (2016.20170123-5)
texlive-pictures-doc (2016.20170123-5)
texlive-pstricks (2016.20170123-5)
texlive-pstricks-doc (2016.20170123-5)
tipa (2:1.3-20)

(2)

Commit Log for Sun Dec 16 01:31:14 2018
以下のパッケージがインストールされました:
fonts-arphic-bkai00mp (2.10-15)
fonts-arphic-bsmi00lp (2.10-17)
fonts-arphic-gbsn00lp (2.11-15)
fonts-arphic-gkai00mp (2.11-15)
fonts-baekmuk (2.2-11)
fonts-ipaexfont-gothic (00301-3)
fonts-ipaexfont-mincho (00301-3)
fonts-sil-padauk (2.80-2)
fonts-unfonts-core (1.0.2-080608-13)
fonts-unfonts-extra (1.0.2-080608+dfsg-6)
latex-cjk-all (4.8.4+git20150701-2)
latex-cjk-chinese (4.8.4+git20150701-2)
latex-cjk-chinese-arphic-bkai00mp (1.23)
latex-cjk-chinese-arphic-bsmi00lp (1.23)
latex-cjk-chinese-arphic-gbsn00lp (1.23)
latex-cjk-chinese-arphic-gkai00mp (1.23)
latex-cjk-common (4.8.4+git20150701-2)
latex-cjk-japanese (4.8.4+git20150701-2)
latex-cjk-japanese-wadalab (0.20050817-17)
latex-cjk-korean (4.8.4+git20150701-2)
latex-cjk-thai (4.8.4+git20150701-2)
texlive-lang-chinese (2016.20170123-5)
texlive-lang-cjk (2016.20170123-5)
texlive-lang-japanese (2016.20170123-5)
texlive-lang-korean (2016.20170123-5)
texlive-lang-other (2016.20170123-5)

(3)

Commit Log for Sun Dec 16 01:37:54 2018
以下のパッケージがインストールされました:
texlive-science (2016.20170123-5)
texlive-science-doc (2016.20170123-5)

(4)

Commit Log for Sun Dec 16 01:47:21 2018
以下のパッケージがインストールされました:
texlive-luatex (2016.20170123-5)

(5)

Commit Log for Sun Dec 16 01:49:34 2018
以下のパッケージがインストールされました:
preview-latex-style (11.90-1)
texlive-generic-extra (2016.20170123-5)
texlive-latex-extra (2016.20170123-5)
texlive-latex-extra-doc (2016.20170123-5)
texlive-xetex (2016.20170123-5)

使ってみる

GUIでメニューにアイコンができるわけでなく、端末からコマンドを探してみる。

texで始まるコマンドの検索

adachi@debian64:~$ tex[\t][\t]
tex             texdiff         texhash         texluajit
tex4ebook       texdirflatten   texliveonfly    texluajitc
tex4ht          texdoc          texloganalyser  texosquery
texcount        texdoctk        texlua          
texdef          texfot          texluac

texは起動するが使い方がわからない

plaで始まるコマンドの検索

adachi@debian64:~$ pla[\t][\t]
platex  player

本に従い、.texファイルを作ってplatexに食わせてみる。

adachi@debian64:~$ cat test.tex 
\documentclass{article}
\begin{document}
Hello, \TeX!
\[ \int dx = x + C. \]
\end{document}

で実行。

adachi@debian64:~$ platex test.tex
This is e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./test.tex
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01> patch level 3)
Babel <3.9r> and hyphenation patterns for 12 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
No file test.aux.
[1] (./test.aux) )
Output written on test.dvi (1 page, 380 bytes).
Transcript written on test.log.

dviができている。

adachi@debian64:~$ ll test.*
-rw-r--r-- 1 adachi adachi    8 12月 16 14:31 test.aux
-rw-r--r-- 1 adachi adachi  380 12月 16 14:31 test.dvi
-rw-r--r-- 1 adachi adachi  934 12月 16 15:00 test.log
-rw-r--r-- 1 adachi adachi   92 12月 16 14:24 test.tex

またまた本に従い、dvipdfmを使うとpdfファイルになる。

adachi@debian64:~$ dvipdfm test
test -> test.pdf
[1]
4530 bytes written

ただし、dvipdfなんたらというのがいくつかあって、--helpでは違いがわからん

adachi@debian64:~$ dvipdf[\t][\t]
dvipdf    dvipdfm   dvipdfmx  dvipdft   

おまけにpdfにしなくても、GUIファイルマネージャからdviファイルをドキュメントビュアーで開くことができる。呼び出されるのは、Evince。

『Evince はシンプルで複数ページ対応の文書ビューアです。PostScript (PS), Encapsulated PostScript (EPS), DjVu, DVI, Portable Document Format (PDF), XML Paper Specification (XPS) ファイルの表示と印刷ができます。 対応している文書であれば、テキスト検索、テキストのクリップボードへのコピー、 ハイパーテキスト移動、目次ブックマークも可能です。』

出来上がった画像

次はEvinceによる表示の一部をキャプチャしたものです。(大部分が白紙なので一部の紹介にします...)

様々なtex

まず、Texは組版システムで、laTeXがそれを元にした文書処理システムであるという。

縦書きや禁則などの日本語処理を加えたものがpTeX, plaTeXとなる。古くからあるソフトなので歴史的にいろいろ拡張があり、Unicode対応のupTeX, LuaTeX, LuajitTeX, XeTeX などの派生も多い。1994年からの新版は後ろに2εがついて、LaTeX2eなどがある。

TeXliveはその集大成のものらしいが、含まれるコマンドの使い分けが明確でない。

組版システムだけで使わないという前提なのかlaがつかないで文書処理までこなすものがあったり、デバイスに依存しないdviファイルを作ってからpdfに再変換するということをせずに、一気にpdf作成までやってしまうものもある。

組版システム 文書処理システム 説明
TeX LaTeX
pTeX pLaTeX 日本語化(縦書、禁則)(→e-pTeX)
upTeX upLaTeX 内部を Unicode化(→e-pTeX)\documentclass[uplatex]{jsarticle}
LuaTeX LuaLaTeX Unicode に完全対応
LuajitTeX LuajitLaTeX Unicode に完全対応
XeTeX XeLaTeX Unicode に完全対応。xdvipdfmx でpdfまで
pdfTeX - 直接pdfまで

tex関連コマンドの検索

platex test.tex のコマンドで、This is e-pTeX, Version 3.14159265...から表示が始まり、platex コマンドは e-pTeX に関連づけられている。

コマンドとその種類は1対1で対応しているわけではないようだ。

そこで考えられるコマンドを起動して初期メッセージ This is の後ろを調べる。

comm. disc. Version rest.
tex TeX Version 3.14159265 (TeX Live 2016/Debian) (preloaded format=tex)
latex pdfTeX Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=latex) restricted \write18 enabled.
ptex pTeX Version 3.14159265-p3.7.1 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=ptex) restricted \write18 enabled.
platex e-pTeX Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=platex) restricted \write18 enabled.
eptex e-pTeX Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=eptex) restricted \write18 enabled.
uptex upTeX Version 3.14159265-p3.7.1-u1.21 (utf8.uptex) (TeX Live 2016/Debian) (preloaded format=uptex) restricted \write18 enabled.
uplatex e-upTeX Version 3.14159265-p3.7.1-u1.21-161114-2.6 (utf8.uptex) (TeX Live 2016/Debian) (preloaded format=uplatex) restricted \write18 enabled.
euptex e-upTeX Version 3.14159265-p3.7.1-u1.21-161114-2.6 (utf8.uptex) (TeX Live 2016/Debian) (preloaded format=euptex) restricted \write18 enabled.
etex pdfTeX Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=etex) restricted \write18 enabled.
xetex XeTeX Version 3.14159265-2.6-0.99996 (TeX Live 2016/Debian) (preloaded format=xetex) restricted \write18 enabled.
xelatex XeTeX Version 3.14159265-2.6-0.99996 (TeX Live 2016/Debian) (preloaded format=xelatex) restricted \write18 enabled.
luatex LuaTeX Version 0.95.0 (TeX Live 2016/Debian) restricted system commands enabled.
lualatex LuaTeX Version 0.95.0 (TeX Live 2016/Debian) restricted system commands enabled.
luajittex LuajitTeX Version 0.95.0 (TeX Live 2016/Debian) restricted system commands enabled.

TeXlive中のコマンドの整理

this is ...部分を中心にまとめ直すと、

comm. disc.
tex TeX
latex etex pdfTeX
ptex pTeX
platex eptex e-pTeX
uptex upTeX
uplatex euptex e-upTeX
xetex xelatex XeTeX
luatex lualatex LuaTeX
luajittex LuajitTeX

platexがBoldなのは、\documentclass{jarticle} を冠したファイルではこれしか使えなかったから。次のような表示になる。

latex This file needs format `pLaTeX2e' but this is `LaTeX2e'.
ptex Undefined control sequence. l.1 \documentclass {jarticle}
uptex Undefined control sequence. l.1 \documentclass {jarticle}
uplatex LaTeX Error: Encoding scheme `JY1' unknown.
xetex Undefined control sequence. l.1 \documentclass {jarticle}
luatex Undefined control sequence. l.1 \documentclass {jarticle}
luajittex I can't find the format file `luajittex.fmt'!

とりあえずのplatexでpLaTeX2eが使えた

うまく行くものでpdfまで作った記録。test.texの時は「article」だった。今回のは「jarticle」変換中の出力にpLaTeX2eが見える。

adachi@debian64:~/Documents/m12$ platex test2.tex 
This is e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./test2.tex
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01> patch level 3)
Babel <3.9r> and hyphenation patterns for 12 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/platex/base/jarticle.cls
Document Class: jarticle 2016/11/22 v1.7b Standard pLaTeX class
(/usr/share/texlive/texmf-dist/tex/platex/base/jsize10.clo)) (./test2.aux)
[1] (./test2.aux) )
Output written on test2.dvi (1 page, 1008 bytes).
Transcript written on test2.log.

dviはevinceで開けないが、pdfにすれば開ける

adachi@debian64:~/Documents/m12$ dvipdfm test2.dvi 
test2.dvi -> test2.pdf
[1]
3025 bytes written

元の.texファイルは

test2.tex

\documentclass{jarticle}
\begin{document}
コンピュータ分野で1024バイトを1キロバイトという習慣があるのは知っている。
しかし、キロが10$^3$であることをさしおいて教科書に記述することではない。
教科書によっては普通は$10^3$であることを説明していないものすらある。これはまずい。

国際単位系に基づき1000倍ごとに接頭語が決められているとをまずきちんと説明すべきことだと思う。
\end{document}

Debian上なので文字コードは当然utf-8です。

pdfをevinceで開いて100%表示(A4設定になっていると思われる)で、横の余白をそのままに上下をカットしたスクリーンショット。

\documentclass{jsarticle} にした場合は以下のようになる。こちらはDebianのファイルマネージャ(Nautilus)でプレビューされないのが気になる。

必要ないと思うが、作成時の画面の表示

adachi@debian64:~/Documents/m12$ platex test2.tex 
This is e-pTeX, Version 3.14159265-p3.7.1-161114-2.6 (utf8.euc) (TeX Live 2016/Debian) (preloaded format=platex)
 restricted \write18 enabled.
entering extended mode
(./test2.tex
pLaTeX2e <2016/11/29> (based on LaTeX2e <2017/01/01> patch level 3)
Babel <3.9r> and hyphenation patterns for 12 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2017/01/13 okumura, texjporg
(/usr/share/texlive/texmf-dist/tex/platex/jsclasses/jslogo.sty)) (./test2.aux)
[1] (./test2.aux) )
Output written on test2.dvi (1 page, 936 bytes).
Transcript written on test2.log.
adachi@debian64:~/Documents/m12$ dvipdfm test2.dvi 
test2.dvi -> test2.pdf
[1]
2998 bytes written

platexで縦書き(tarticle)

エラーの中で、Undefined control sequence. l.1 \documentclass {jarticle}...などとあったので、documentclassの書き方で使えるようになるものがあるかと考えて調べているうち縦書きがあった。同じものを{tarticle}として変換してみる。

test3.tex

\documentclass{tarticle}
\begin{document}
コンピュータ分野で1024バイトを1キロバイトという習慣があるのは知っている。
しかし、キロが10$^3$であることをさしおいて教科書に記述することではない。
教科書によっては普通は$10^3$であることを説明していないものすらある。これはまずい。

国際単位系に基づき1000倍ごとに接頭語が決められているとをまずきちんと説明すべきことだと思う。
\end{document}

スクリーンショットは同様に上下をカットした。長音符、句点、1024は良いとして、1キロバイトなど、このままでは実用に耐えない。いろいろ設定をすれば直るかもしれないが、句読点や長音符がデフォルトで解決できていないなら、先は遠い。

理系分野では縦書きは避けたいので、とりあえずは現状確認でこれ以上踏み込まない。ちなみに、数式が出てくる縦書きの本は買わない。

uplatexでupLaTeX

Tex wiki のLaTeX入門/発展編にupLaTeX の説明があって、

\documentclass[uplatex,...]{jsarticle}

と[uplatex]を加えればよいということなので、やってみます。

uはunicodeですが、JIS 第一・第二水準に含まれない文字も気にせず使えるということのようです(unicode対応というだけだとファイルの文字コードがunicode系でもよいというだけの可能性もあります)。

adachi@debian64:~/Documents/m12$ uplatex test4.tex
This is e-upTeX, Version 3.14159265-p3.7.1-u1.21-161114-2.6 (utf8.uptex) (TeX Live 2016/Debian) (preloaded format=uplatex)
 restricted \write18 enabled.
entering extended mode
(./test4.tex
pLaTeX2e <2016/11/29u01> (based on LaTeX2e <2017/01/01> patch level 3)
Babel <3.9r> and hyphenation patterns for 12 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/platex/jsclasses/jsarticle.cls
Document Class: jsarticle 2017/01/13 okumura, texjporg
(/usr/share/texlive/texmf-dist/tex/platex/jsclasses/jslogo.sty)) (./test4.aux)
[1] (./test4.aux) )
Output written on test4.dvi (1 page, 1820 bytes).
Transcript written on test4.log.

dvipdfmも今回はx付きのdvipdfmxにしました。

dvipdfmでも実際にはdvipdfmxが走っているということですが。

adachi@debian64:~/Documents/m12$ dvipdfmx test4.dvi 
test4.dvi -> test4.pdf
[1
dvipdfmx:warning: CMap has higher supplement number than CIDFont: Ryumin-Light
dvipdfmx:warning: Some chracters may not be displayed or printed.

char=0x2000b(131083)
Tried to set a nonexistent character in a virtual font
char=0x2123d(135741)
Tried to set a nonexistent character in a virtual font
char=0x20bb7(134071)
Tried to set a nonexistent character in a virtual font]
6593 bytes written

jsarticle指定なので、同様に成功します。

uplatexのunicode仕様

結論はJIS X 0213で追加された文字の一部は表示される。使用するフォントを変更すれば(そしてフォントを埋め込めば他のPCでも)全部表示できるかもしれないが、今の所不明。

JISX0208にない文字と言ってもいろいろなので、検証します。

まず、このページのなかで[と]の間の文字が見えていない場合はそもそも説明に無理があります。

test4.tex

\documentclass[uplatex]{jsarticle}
\begin{document}
コンピュータ分野で1024バイトを1キロバイトという習慣があるのは知っている。
しかし、キロが10$^3$であることをさしおいて教科書に記述することではない。
教科書によっては普通は$10^3$であることを説明していないものすらある。これはまずい。

国際単位系に基づき1000倍ごとに接頭語が決められているとをまずきちんと説明すべきことだと思う。\\
■(1)JIS X 0213:2004で例示字形が変更されたものの例\\
U+845B:[葛] ヒか人か\\
U+914B:[酋] ツノか八か\\
■(2)JIS X 0213で追加された(JISX0208にない)文字の例\\
U+2460:[①] 丸に1\\
U+24D0:[ⓐ] 丸にa\\
U+5721:[圡] 土の横線の間に点\\
U+9DD7:[鷗] 品 1983以前のJISX0208になく0213に存在\\
U+9D0E:[鴎] メ 1983以降のJISX0208ではこれ\\
■(3)JIS X 0213で追加され、unicodeでサロゲートペアを使う文字の例\\
U+2000B:[𠀋] 丈の上に点\\
U+2123D:[𡈽] 土の上に点\\
■(4)JIS X 0213にはなく、unicodeでサロゲートペアを使う文字の例\\
U+20BB7:[𠮷] 土吉
\end{document}

出来上がったpdfを見ると

まず、JIS X 0208が第一水準、第二水準を定めたものです。JIS X 0213で第三・四水準を追加し、unicodeに取り込まれています。WindowsでShift_JISといえば0208の時代のもの、unicodeといえば0213に対応したものという意味になります。細かく言えば正しくはないのですが。

(1)JIS X 0213:2004で例示字形が変更されたものの例
0208の時代からありますが、0213になった後で例示字形が変更されました。ヒ,ツノならJIS:2000(旧タイプ)。人,八ならJIS:2004(新タイプ)です。これは純粋に使っているフォントがどちらを採用しているかで決まります。unicode対応と直接関わりません
(2)JIS X 0213で追加された(JISX0208にない)文字の例
上3つは第三・四水準の文字です。鴎の文字は複雑な事情で[鷗]は1983年に0208からなくなって、0213で復活した文字。鴎は0208にも0213にもある文字です。
ソフトが内部的にunicode対応していれば自動的にサポート範囲になるはずですが、この範囲でも使用頻度の低い文字は使用しているフォントにない可能性があります。
(3)JIS X 0213で追加され、unicodeでサロゲートペアを使う文字の例
JIS X 0213で追加された(JISX0208にない)文字のうち、UTF-16で4バイトで表現される文字です。UTF-16の4バイトの表現をサロゲートペアといいます。いろいろなソフトでこれへの対応が遅れましたので調べています。
機構が対応していない場合と、フォントに用意がない場合の両方が考えられます。
(4)JIS X 0213にはなく、unicodeでサロゲートペアを使う文字の例
この字はJISX0213で吉と同じ文字(口の上は土でも士でも同じとする)とされています。ですから、JISの例示字形に使われている[吉]しかないのです。しかし、unicodeには韓国や中国の要請で[𠮷]が別に存在しています。フォントにデータがあれば表示できます。

LuaLaTeX

\documentclass{jsarticle} の代わりに \documentclass{ltjsarticle} を使用すれば、使えるとのこと。試してみます。

adachi@debian64:~/Documents/m12$ lualatex test5.tex
This is LuaTeX, Version 0.95.0 (TeX Live 2016/Debian) 
 restricted system commands enabled.
(./test5.tex
LaTeX2e <2017/01/01> patch level 3
(using write cache: /home/adachi/.texlive2016/texmf-var/luatex-cache/generic)(u
sing read cache: /var/lib/texmf/luatex-cache/generic /home/adachi/.texlive2016/
texmf-var/luatex-cache/generic)
luaotfload | main : initialization completed in 0.310 seconds
Babel <3.9r> and hyphenation patterns for 1 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls
Document Class: ltjsarticle 2017/01/23 ltjsclasses 
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/luatexja.sty
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/luatexja-core.sty
(/usr/share/texlive/texmf-dist/tex/luatex/luatexbase/luatexbase.sty
(/usr/share/texlive/texmf-dist/tex/luatex/ctablestack/ctablestack.sty))
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/luatex-loader.sty
(/usr/share/texlive/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua)))
(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex))))
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/atbegshi.sty)
(/usr/share/texlive/texmf-dist/tex/latex/everyhook/everyhook.sty
(/usr/share/texlive/texmf-dist/tex/latex/svn-prov/svn-prov.sty)
(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty))(save cache: /h
ome/adachi/.texlive2016/texmf-var/luatexja/ltj-cid-auto-adobe-japan1.lua)(save 
cache: /home/adachi/.texlive2016/texmf-var/luatexja/ltj-cid-auto-adobe-japan1.l
uc) (/usr/share/texlive/texmf-dist/tex/luatex/luatexja/ltj-base.sty)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/ltj-latex.sty
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
(/usr/share/texlive/texmf-dist/tex/latex/base/tuenc.def)
(/usr/share/texlive/texmf-dist/tex/latex/ms/everysel.sty)
ABD: EverySelectfont initializing macros)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty(compili
ng luc: /var/lib/texmf/luatex-cache/generic/fonts/otl/lmroman10-regular.luc)(lo
ad luc: /home/adachi/.texlive2016/texmf-var/luatex-cache/generic/fonts/otl/lmro
man10-regular.luc)(save cache: /home/adachi/.texlive2016/texmf-var/luatexja/ext
ra_lmroman10-regular.lua)(save cache: /home/adachi/.texlive2016/texmf-var/luate
xja/extra_lmroman10-regular.luc)(compiling luc: /var/lib/texmf/luatex-cache/gen
eric/fonts/otl/fonts-japanese-mincho.luc)(compiling luc: /home/adachi/.texlive2
016/texmf-var/luatex-cache/generic/fonts/otl/fonts-japanese-mincho.luc)(save: /
home/adachi/.texlive2016/texmf-var/luatex-cache/generic/fonts/otl/fonts-japanes
e-mincho.lua)(save: /home/adachi/.texlive2016/texmf-var/luatex-cache/generic/fo
nts/otl/fonts-japanese-mincho.luc)(save cache: /home/adachi/.texlive2016/texmf-
var/luatexja/extra_fonts-japanese-mincho.lua)(save cache: /home/adachi/.texlive
2016/texmf-var/luatexja/extra_fonts-japanese-mincho.luc)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/jfm-ujisv.lua)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/jfm-ujis.lua))
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty)
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty
(/usr/share/texlive/texmf-dist/tex/latex/filehook/filehook.sty))))
(/usr/share/texlive/texmf-dist/tex/luatex/luatexja/luatexja-compat.sty(save cac
he: /home/adachi/.texlive2016/texmf-var/luatexja/ltj-jisx0208.luc)))(compiling 
luc: /var/lib/texmf/luatex-cache/generic/fonts/otl/lmroman8-regular.luc)(compil
ing luc: /home/adachi/.texlive2016/texmf-var/luatex-cache/generic/fonts/otl/lmr
oman8-regular.luc)(save: /home/adachi/.texlive2016/texmf-var/luatex-cache/gener
ic/fonts/otl/lmroman8-regular.lua)(save: /home/adachi/.texlive2016/texmf-var/lu
atex-cache/generic/fonts/otl/lmroman8-regular.luc)(save cache: /home/adachi/.te
xlive2016/texmf-var/luatexja/extra_lmroman8-regular.lua)(save cache: /home/adac
hi/.texlive2016/texmf-var/luatexja/extra_lmroman8-regular.luc)
(/usr/share/texlive/texmf-dist/tex/platex/jsclasses/jslogo.sty))
No file test5.aux.
ABD: EverySelectfont initializing macros [1{/var/lib/texmf/fonts/map/pdftex/upd
map/pdftex.map}] (./test5.aux))
(see the transcript file for additional information)
 3592 words of node memory still in use:
   7 hlist, 1 vlist, 5 rule, 93 glue, 21 kern, 1 glyph, 1140 attribute, 41 glue
_spec, 63 attribute_list, 1 write, 10 user_defined nodes
   avail lists: 1:4,2:20597,3:144,4:47,5:12,6:998,7:787,8:548,9:74,10:9,11:4
</usr/share/texmf/fonts/opentype/public/lm/lmroman10-regular.otf></usr/share/fo
nts/truetype/fonts-japanese-mincho.ttf></usr/share/texlive/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ
ic/amsfonts/cm/cmr7.pfb>
Output written on test5.pdf (1 page, 161855 bytes).
Transcript written on test5.log.

出来上がったpdfを見ると

土吉以外はうまく行っている。つまり JIS X 0213 の範囲で完全対応。

まとめ

下の表で、documentclassに記述のあるものが使える。日本語対応状況は備考に示したとおり。数式に使うつもりで始めたが日本語対応だけで一区切り付ける。

documentclassについては入門書がarticleから始めていたので、名前が近いものを挙げているが、コマンドごとに対応に細かな違いがあり詳しくは調査していない。

文書にオプションを加えたり、設定ファイルを書き換えたりして調整できることもあるらしいが、ここまでの調査ではDebianのデフォルトでの状態で述べている。

hogetex with"la" documentclass testfile 内部で使用? command-file 備考
texUCS latex{article} test.texpdfTeX,LaTeX2e->pdftex 英数のみ
ptexUCS platex{jsarticle} test2.texe-pTeX,pLaTeX2e->eptex JISX0208
etexUCS -- ---
eptexUCS -- ---
uptexUCS uplatex[uplatex]{jsarticle} test4.texe-upTeX,pLaTeX2e->euptex JISX0213(サロゲートペアなど一部不対応)
euptexUCS -- ---
xetexUCS xelatex[xelatex,ja=standard]{bxjsreport} testx.texXeTex,LaTeX2e->xetex JISX0213(丸数字など一部不対応),pdfまで作る
luatexUCS lualatex{ltjsarticle} test5.texLuaTeX,LaTeX2e->luatex JISX0213対応,pdfまで作る

"la"のつかないhogetexはdocumentclassなどの構文を理解しないので"Undefined control sequence"とメッセージを吐いて止まる(UCS)。laのついたコマンドとの対応のために書いておく。

しかし、laのついたコマンドがついていないコマンドへのシンボリックリンクになっていることが多い。

「testfile」はテストに使った.texファイル名。

「内部で使用?」はメッセージ中に現れる"*tex*"な名前。

LuajitTeX は Lua のJIT(Just-In-Time Compiler:その場で機械語へコンパイル)版とのことで、うまく動かすにはもう少し調べる必要があり、表に入れなかった。

結局どれを使う?

日本語対応は文字コードだけではない。英字と日本の文字が混在する文書でのバランスであるとか、禁則処理やルビなどもある。古いバージョンを使い込んだ場合に貯まるノウハウや設定ファイルやひよっとしたら改良版などがあれば、新しいものに切り替えないほうが楽。めったに使わない文字のために切り替える必然はない。過去の文書が使えなくなったり崩れたりするのは困る。

その意味では歴史あるjsarticleとpLaTex2eを使うuplatexが、どこでも動き安定しているように予想できる。utf-8のファイルでよいし、丸付き数字・英字が安心して使える。

しかし、これからのことを考えると LuaTeX-ja があることで LuaTeX が取って代わる可能性がある。

ただし、今の所ここで書いた表層的な実験と勘だけが根拠だ。