pTEX
系列以外
⽇本語⽂書作成
2015
年
3
⽉
11
⽇
Knuth⽒ ,1990年 以上TEX*1 機能拡張を⾏わ い を宣⾔ :
My work on developing TEX,METAFONT, and Computer Modern has come to an end. I will make no further changes except to correct extremely serious bugs.
I have put these systems into the public domain so that people everywhere can use the ideas freely if they wish. . . . Let us regard these systems as ixed points, which should give the same results 100 years from now that they produce today.
— Donald E. Knuth, The future of TEX andMETAFONT, TUGboat11, No. 4, 1990. http://tug.org/TUGboat/Articles/tb11-4/tb30knut.pdf
, 「TEX 終わっ 」わ い.上 引⽤ 第2段落 あ ,TEX82を 改良 (別 名前 *2)公開 ⾃由 あ ,今 世界中 数々 拡張 試 ,現在
拡張 開発 進 い *3.詳
• ⼋登崇之,「⽇本⼈ 知 いTEX—TEX 過去・現在・未来」,TEX ー 集い2010.
http://zrbabbler.sp.land.to/texconf10.html
• 寺⽥侑祐,「近年 TEX 動向」,数学ソ ー キ ン XVIII. • Arno Trautmann,An overview of TEX, its children and their friends . . .
http://mirrors.ctan.org/info/tex-overview/tex-overview.pdf • TEX Wiki 中 「LuaTEX」「XƎTEX」「upTEX」「ε-TEX」等 各記事
を参照.
pTEX んTEX82 拡張 あ ,本⽂章 ,pTEX系列以外の代表的 TEX82
の拡張 , っ ⽇本語⽂書を作成 ⽅法 つい 述べ .取 扱う 表1 載 3つ ⽅法 あ *4.
Last update: 2015/3/11 16:15.
本⽂書 XƎTEX ZXjatypeパッ ー を⽤い 組版 . 以外 「TEX Live ン ー 」「TEX実習」
,LuaTEX-jaを⽤い 組版 い .
*1本⽂書 ,Knuth⽒ 作成 ( )TEXをTEX82 呼ぶ .
表1 本⽂書 扱うpTEX系列以外 TEX
節 プロ ラム パッ ー ドライバ指定
graphicx hyperref
§3 pdfTEX CJK,bxcjkjatype pdftex(⾃動) pdftex(⾃動)
§4 XƎTEX xeCJK,zxjatype xetex(⾃動) xetex(⾃動)
§5 LuaTEX LuaTEX-ja pdftex(⾃動) pdftex(⾃動)
( pTEX+DVIPDFMx — dvipdfmx dvipdfmx )
⽬次
1 導⼊ 3
2 予備知識:ε-TEX拡張 4
3 pdfTEX 6
3.1 pdfTEX . . . 6 3.2 CJKパッ ー BXcjkjatypeパッ ー . . . 7
4 XƎTEX 8
4.1 XƎTEX . . . 8 4.2 ZXjatypeパッ ー . . . 8
4.3 IVS 利⽤ . . . 9
5 LuaTEX 10
5.1 LuaTEX . . . 10 5.2 LuaTEX-jaパッ ー . . . 11
1
導⼊
「TEXを使っ ⽇本語⽂書を作成 」 ⾔っ 場合,「TEX実習」 説明 う pTEX・ upTEXを⽤い ⼀般的 あ う.受講⽣ 中 ,「pTEX・upTEX ⼗分. 他 ⽅法を気
?」 思う⽅ い い. ,あ 筆者 私⾒ ,以下 2つ 理由
重要 あ :
•「TEX ⼊っ い 」 「pTEX 利⽤ 」 は同義 は い.
pTEX⾃体 1990年代 あ , 「上流」 TEX Live 利⽤ う っ
2010年 いうつい最近 あ . , 後 述べ MiKTEX いうWindows⽤
TEX ビ ー ン ,pTEX 未 含 い い.
• 世界 のTEXの発展 pTEXは取 残さ い
海外 ,pdfTEX (§3) を利⽤ PDF直接⽣成 当 前 っ い . XƎTEX (§4), LuaTEX (§5) い Unicodeへ 本格的 対応やOpenType ン
機能 利⽤ う っ い .
⼀⽅,pTEX ⼤雑把 ⾔え 「TEX82を⽇本語拡張 」 あ .実際 ε-TEX拡張 ポー (ε-pTEX) い ,upTEX 「和⽂ 部分」 Unicode化 い
, 以上 機能拡張 うあ ⾏わ い う.
例え ,MiKTEX いう海外 使わ い Windows⽤ TEX ビ ー ン
あ .⾯⽩い ,MiKTEX パッ ー 存在 ン ー
い い タ ッ 時 要求 場合,⾃動的
う ダ 出 , ンターネッ 取得 あ .
,MiKTEX pLATEX 含 い い ,⽇本語⽂書を作 い場合 ,本⽂書
2
予備知識:
ε
-TEX
拡張
表1 載 4つ ⽅法 使え ,ε-TEX拡張 あ . The NTS team (Peter Breitenlohner et al.) っ 開発 TEX82 拡張 あ ,⼀般利⽤者 っ 特 有⽤
を挙 ,次 う あ .
• \numexpr 4-(3*2)+\count0 う 内部整数・⻑ を式 形 表現 .
• 使⽤可能 タ 各種類 256個 32768個 激増 .
, んパッ ー 読 込ん 発⽣ う
! No room for a new \count .
ほ ん 起 っ *5.
• 数式中 「 ⾃動的 変わ 括弧」 使わ \left・\right 加え ,\middle
利⽤ う っ .例え 量⼦⼒学 Dirac記法,例え
⟨ φ ∂2 ∂t2 ψ ⟩
を,
\left\langle \phi \middle| \frac{\partial^2}{\partial t^2} \middle| \psi \right\rangle
簡単 組 う っ *6.
ε-TEX拡張 現在開発 い 様々 TEX 拡張 い 標準的 地位を占 ,ε-TEX拡 張を要求 パッ ー 年々増加 い .次期LATEX あ LATEX3 は,ε-TEX拡張を 必要 す ,必須 拡張 いえ う.
⼼配 い.TEX Live 2011以降 ,意識 標準 ε-TEX拡張 有効
っ い あ :
• latex 打つ ,dvi出⼒ ー ・ε-TEX拡張有効 pdfTEX 起動 .
• pdflatex 打つ ,PDF出⼒ ー pdfTEX 起動 .
• ⽇本語 処理 pTEX, upTEX 関 例外 い.「TEX実習」 PDF
,platex,uplatex 打っ 実際 起動 ,ε-TEX拡張 取
込 ε-pTEX,ε-upTEX あ :
> platex
This is e-pTeX, Version 3.14159265-p3.5-130605-2.6 (sjis) (TeX Live 2014 /W32TeX)
... > uplatex
*5実際 , ー タ確保⽤ マ ロ 出 い ,LATEX etexパッ ー を読 込
マ 側 対応 必要 あ .
This is e-upTeX, Version 3.14159265-p3.5-u1.11-130605-2.6 (utf8.uptex) ( TeX Live 2014/W32TeX)
3 pdfTEX
3.1 pdfTEX
は
pdfTEX ,Hàn Thế Thành⽒ TEX 拡張 あ ,海外 主 利⽤ い .pdfTEX
上 LATEXを動作 pdfLATEX 呼 .pdfTEX ,以下 う 特徴 あ :
• TEX82やpTEX dvi を出⼒ 対 ,pdfTEX PDF をTEXソ
ー 直接⽣成 . ,PDF 機能を直 利⽤ .
• ⾼品質 組版を⾏うmicro-typography いう機能 搭載 .例え
– 各⾏ 両端を視覚的 揃え ,い つ 記号類を版⾯ 外 少 突 出 . – 単語間 空⽩ ⼩ /⼤ を防 ,各⽂字 幅をわ 収縮/拡張
.
いっ あ .micro-typography つい ,
– Hàn Thế Thành,Micro-typographic extensions to the TEX typesetting system, disser-tation. http://www.pragma-ade.com/pdftex/thesis.pdf
– R. Schlicht,The microtype package. (microtypeパッ ー キ ン ) 詳 い.
• ε-TEX拡張(§2) 搭載 い . • 他各種便利 機能,例え
乱数 \pdfuniformdeviate等. 「引 算法」(xn=xn−55−xn−24).
⽂字列⽐較 \pdfstrcmp ⽂字列 ⼤⼩を⽐較 .次期LATEX あ LATEX3
は,こ 相当す 機能 ε-TEX拡張 必須 っ .
PDF中の絶対位置の取得 \pdfsavepos等を利⽤ .実際 ⽤い 際 ,補助
経由(つ ,2回 タ ッ 必要) う.
実 ,単 latex マン ン ⼊⼒ ,起動 ,dvi出⼒ ー
(ε-TEX拡張 有効 )pdfTEX あ :
> latex
3.2
CJK
パッ ー
BXcjkjatype
パッ ー
CJKパッ ー ,欧⽂⽤ LATEX 中国語・⽇本語・韓国語 ⼊っ ⽂書を組版 パ
ッ ー あ .CJKパッ ー 利⽤可能 ⽇本語 ン ipaex-type1 いう あ
, を ン ー 上 次 cjktest.texをUTF-8*7 作 ,
1 \documentclass{article}
2 \usepackage{CJK}
3 \begin{document}
4 \begin{CJK*}{UTF8}{ipxm}
5 ⽇ 本 語 の 明 朝 体 , {\CJKfamily{ipxg}ゴ ッ 体}.
6 和 ⽂ alphabetの 間 の , 「 四 分 空 」 は ⼊ い .
7 \end{CJK*}
8 \end{document}
ソー を
> pdflatex cjktest
タ ッ ,cjktest.pdf 直接⽣成 . ,結果を⾒ ,和⽂⽂字 欧⽂⽂
字 間 ⼊ (通常1/4全⾓ )空⽩ 挿⼊ っ ,全⾓ ンマ 開 鍵括弧 間 間延び
い 正 組版 い い.
⽇本語 ン ⽂書を作成 場合,TEX Wiki中 ペー ,⼋登崇之⽒
• BXjsclsパッ ー :「pLATEX2ε⽤新 キ ン 」 派⽣
• BXcjkjatypeパッ ー :⽇本語組版 適 CJKパッ ー 設定 ,上記 問題点 修正
を利⽤
\documentclass[pdflatex ,jadriver=standard]{bxjsarticle} \begin{document}
...
\end{document}
う い, あ . ,残念 MikTEX 2.9 BXjscls バー ン 古い
う い ,
\documentclass{article} % 欧 ⽂ ⽤ ラ フ ァ イ ル! \usepackage[whole]{bxcjkjatype}
\begin{document} ...
\end{document}
う い い い う あ .
4 XƎTEX
4.1 XƎTEX
は
XƎTEX(XeTeX) ,TEX Unicode拡張 あ ,OpenType 最新 ン 技
術 統合 あ ,次 特徴 あ :
• pdfTEX 同様 ,PDF を直接⽣成*8 , ε-TEX拡張 搭載.
• ン 扱い ⼤幅 拡張 .
– OS側 使⽤出来 ン ,例え 「MS 明朝」,を直 扱え *9.
– HarfBuzz いうOpenType ン ンを採⽤ , っ
Open-Type ン ⾃⾝ 含 合字・ ン 位置 情報 利⽤ .
XƎLATEX(XƎTEX上 LATEXを動 )上 機能を扱う 作 ,
fontspecパッ ー (§6) あ .
⽇本語 読 XƎTEX 関 情報 ,本⽂書 最初 挙 以外
• ⼋登崇之,「XƎLATEX ⽇本語 件 つい 」,
http://zrbabbler.sp.land.to/xelatex.html • 清⽔美樹,「 LATEX」著者 ポー ペー 中 「MiKTEX XƎTEX ⽇本語を」
あ . ,XƎTEX hyperrefパッ ー を使⽤ 際 dvipdfmx ンを指定
,代わ unicode ンを指定 .
4.2
ZXjatype
パッ ー
XƎTEX⾃体 Unicode対応 い ,原理的 fontspecパッ ー ⽇本語 ン を指 定 ⽇本語 出 …… ,標準 XƎLATEX 「⽇本語 組 ⽅を知 い」.
pLATEX 匹敵 品質 ⽇本語組版を⾏う ,xeCJKパッ ー (Wen chang Sun⽒ )や,
⽇本語⽤ 設定を追加 ZXjatypeパッ ー (⼋登⽒)を利⽤ 良い.TEX Wiki中 「xeCJK/ZXjatype」ペー ,⽇本語 情報 あ .
先 紹介 ⼋登⽒作 BXjsclsを⽤い ,UTF-8 以下 う 記述 ⼿っ取 早い:
1 \documentclass{bxjsarticle}% ⽇ 本 語 ⽤ ラ フ ァ イ ル
2 \usepackage{zxjatype}
3 \setjamainfont{IPA明 朝}% \rmfamily 対 応 . 本 ⽂
4 \setjasansfont{IPAゴ ッ }% \sffamily 対 応 . ⾒ 出 し , 強 調
5 \setjamonofont{IPAゴ ッ }% \ttfamily 対 応 .
6 \usepackage{xltxtra}% \XeLaTeX ロ ゴ
*8実際 ,DVIを拡張 xdv形式 出⼒ , をxdvipdfmx っ PDF 変換 い .
*9従来,TEX 使⽤出来 ン ,OS側 利⽤ ン 全 独⽴ あ ,新 ン をTEX 扱
7 \begin{document}
8 こ ん ち は ,\ XeLaTeX の 世 界 へ !
9 \[
10 \int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}.
11 \]
12 \textsf{sans serif 対 し は ゴ ッ 体 使 わ .}
13 誰 , 「 あ っ 」 ⾔ っ た .
14 \end{document}
タ ッ
> xelatex xelatex_test.tex
う .xelatex_test.pdf ⽣成 あ .
ZXjatypeパッ ー 内部 fontspecパッ ー を読 込ん い ,欧⽂ ン ン
名 指定 .
1 \documentclass{bxjsarticle}
2 \usepackage{zxjatype}
3 \setjamainfont{IPA明 朝}% \rmfamily 対 応 . 本 ⽂
4 \setjasansfont{IPAゴ ッ }% \sffamily 対 応 . ⾒ 出 し , 強 調
5 \setjamonofont{IPAゴ ッ }% \ttfamily 対 応 .
6 \setmainfont[Ligatures=TeX]{Times New Roman}% \rmfamily , Times 相 当
7 \setsansfont[Ligatures=TeX]{Arial}% \sffamily , Helvetica 相 当
8 \setmonofont[Ligatures=TeX]{Courier New}% \ttfamily , Courier 相 当 9 \begin{document}
10 Times New Roman IPA明 朝 .
11 \textsf{Arial IPAゴ ッ .}
12 \end{document}
4.3 IVS
の利⽤
IVS(Ideographic Variation Sequence) ,Unicode い 同 ー 割 当
う う 細 い字形 差を使い分 仕組 あ ,⽂字 直後 U+E0100–U+E01EF い
を続 あ .
XƎTEX 利⽤ ン IVS 対応 い , 以外 何 IVS 利⽤
.例え ,U+E01xyを⟨xy⟩ 表記 時,
\Large 東 京 都 葛<01>飾 区 , 奈 良 県 葛<00>城 市
東京都葛飾区,奈良県 城市
5 LuaTEX
5.1 LuaTEX
は
現在開発中 ,pdfTEX 2.0 ⾔うべ LuaTEX あ .いつ う ,LuaLATEX
LuaTEX上 LATEXを動作 あ , ,LuaTEX hyperrefパッ ー を使⽤
際 dvipdfmx ンを指定 ,代わ unicode ンを指定 .
LuaTEX ,XƎTEX 共 Unicodeを直接扱え,TEXソー の⽂字コードはUTF-8 あ こ
期待 い .LuaTEX 最⼤ 特徴 内部 ⾔語Lua 組 込 い
,例え
$x=\cos x$の 解 を 数 値 的 計 算 す ,
$x=\directlua{ local b,e=0,1
while (e-b)>1e-15 do local h=(e+b)/2
if h>math.cos(h) then e=h else b=h end end
tex.write((e+b)/2) }$ あ .
x=cosx 解を数値的 計算 ,x= 0.73908513321516 あ .
得 .途中「\directlua{ ... }」 中⾝ Lua 書 あ ,⼆分法を⽤
い x=cosx 数値解を求 い .
, Lua を使い,従来 TEXソー い っ (
TEXを改造 っ )内部の挙動をカ タマイ いう特徴 あ .以下 う
活⽤例 あ :
lua-visual-debugパッ ー ⾒ ⽬ わ い ー(伸縮可能 空⽩)や ーン(幅⼀定 詰 物) をPDF上 確認 .
fontspecパッ ー luaotloadパッ ー fontspec パ ッ ー XƎLATEX
LuaLATEX 使⽤可能 あ .
LuaTEX本体 XƎTEX う OpenType ン ン 搭載 い い ,
相当 部分 luaotloadパッ ー あ .luaotloadパッ ー ,巨⼤ Lua を⽤い ,LuaTEX い OpenType 各種機能を扱え う い .
LuaTEX-jaパッ ー pTEX並 ,あ い 以上 品質・⾃由度 ⽇本語組版を⽬指 パ
5.2 LuaTEX-ja
パッ ー
LuaTEX-ja ,pTEX 同等,あ い 以上 品質 ⽇本語組版をTEXマ Lua
っ ,つ 側 変更を加え ,実現 う いう試 あ .
• pTEX 完全 互換 ⽬指 い( 不可能).pTEX 仕様 不便・不都合 感
場合 ,LuaTEX-ja 積極的 改 .
• ,LuaTEX側 都合 ,現在 横組み 対応 っ い .
• ,組版速度 pTEXやXƎTEX 遅い.徐々 ⾼速化を い …….
LuaTEX-jaを利⽤ ⽇本語⽂書を作 ,pLATEX2ε新 キ ン をLuaTEX-ja⽤
改変 ltjsarticle,ltjsbookを 使う 楽 あ *10.例え UTF-8 以
下 lualatex_test.texを記述 ,
1 \documentclass{ltjsarticle}
2 \begin{document}
3 う こ そ ,Lua\TeX の 世 界 へ !
4 \[
5 \int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}.
6 \]
7 ち っ チ ェ ッ し ち っ た .
8
9 $\pi \simeq \directlua{tex.print(math.pi())}$
10 \end{document}
後
> lualatex lualatex_test.tex
タ ッ ,lualatex_test.pdf ⽣成 あ .
TEX Live い ,MiKTEX 実 う い い.
LuaTEX-ja ,fontspecパッ ー ⾃動 読 込 , 標準 和⽂ ン 埋 込 い(pLATEX 標準 同 ) っ い . ,「TEX実習」 述べ う ,表⽰ ⾯
PDF内 ⽇本語 ン を埋 込 ⽅ い場合 あ .LuaTEX-ja 関 , う⼀つ 理由
和⽂フォント埋 込みを推奨したい. , ン 内部 含 い 各種 組版情報を
利⽤ あ .
和⽂ ン を埋 込 設定 場合,luatexja-fontspecパッ ー を読 込 簡便 あ . パッ ー を読 込 ,fontspecパッ ー 和⽂へ 拡張 使⽤可能 :
1 \documentclass{ltjsarticle}
2 \usepackage{luatexja -fontspec}
4 \setsansjfont{IPAGothic}% \sffamily 対 応 . ⾒ 出 し , 強 調
5 \setmainfont[Ligatures=TeX]{Times New Roman}% \rmfamily , Times 相 当
6 \setsansfont[Ligatures=TeX]{Arial}% \sffamily , Helvetica 相 当
7 \setmonofont[Ligatures=TeX]{Courier New}% \ttfamily , Courier 相 当
8 \begin{document}
9 Times New Roman IPA明 朝 .
10 \textsf{Arial IPAゴ ッ .}
11 \end{document}
§4.2 述べ XƎTEX ZXjatypeパッ ー を⽤い 例 ,⽇本語 ン を指定 3, 4⾏⽬ 部分 若⼲異 っ い .
• 命令名称 異 っ い .
• LuaTEX ,「IPA明朝」 いっ ⽇本語 ン 名 利⽤ い う あ .
, “IPAMincho” いう英語 ン 名を使っ い .
• \setmonofont,\setjamonofont 対応 命令 存在 い. 元々pLATEX 標準
⽤い 書体 明朝・ ッ 2つ っ *11.
,LuaTEX本体 IVS (§4.3) 未対応 う あ ,現⾏ LuaTEX-ja
\usepackage{luatexja -otf}
\directlua{luatexja.otf.enable_ivs()}
を ン 書 加え IVS 使⽤可能 .
6
fontspec
パッ ー
fontspecパッ ー ,XƎTEX LuaTEX い 簡単 OpenType ン やTrueType ン を扱う パッ ー あ .§5.1 述べ う ,LuaTEX 内部処理 luaotloadパ ッ ー を使っ い .
fontspecパッ ー 標準 ン を指定 次 3命令を使う:
\setmainfont[⟨option⟩]{⟨font⟩} \textrm,\rmfamily 指定 ,標準 ーマン体.
\setsansfont[⟨option⟩]{⟨font⟩} \textsf,\sffamily 指定 ,標準 ン 体.
\setmonofont[⟨option⟩]{⟨font⟩} \texttt,\ttfamily 指定 ,標準 タ タ体.
\verbやverbatim環境 ン ⽤い .
何 指定 い , 順 “Latin Modern Roman”, “Latin Modern Sans”, “Latin Modern Mono” 使わ . TEX標準 Computer Modernをベー OpenType ン
あ .
,XƎTEX ⽇本語組版 使うZXjatypeパッ ー や,LuaTEX LuaTEX-ja パッ ー ,上記3命令 「⽇本語版」 命令 準備 い (各々 解説を参照).