pLaTeXのみに対応した既存のクラスファイルがある場合に,upLaTeX / LuaLaTeXに対応したクラスファイルに改変するために変更する箇所を思い当たるだけ書いてみる.
upLaTeX対応
説明書の「pTeX との対照表」が便利です.
フォントエンコーディングを変更します.横書きならば
JY2
,縦書きならばJT2
とします.-
JFMを変更している場合は対応するものに変更します.ただし,(悪名高きmin10をデフォルトとするpLaTeXと違い)upLaTeXのデフォルトJFMはよいとされているので,そもそもJFMの変更を行う必要がないかもしれません,
標準で提供されているJFMは次があります.(他にもmin10のupLaTeX版のumin10とかあるけど省略.)JFMの指定方法はpLaTeXと同じです.
- upjisr-h, upjisg-h: pLaTeXにおけるjisおよびjisgのupLaTeX版(けどちょっとすごそう).デフォルト.ただし,pLaTeXのjis,jisgが文字サイズを0.962216倍していたのに対して,upjisr-hとupjisg-hは1倍です.従ってpLaTeXにおける出力にあわせたいならばTeX側で縮小してやる必要があります.
- upjisr-v, upjisg-v: upjisr-h, upjisg-hの縦書き版.デフォルト.
例えば次のようにあったとします.
\DeclareFontShape{JY1}{mc}{m}{n}{<-> s * [0.961] jis}{}
次のようにするとupLaTeX対応になります.0.9247は上の0.961にjis/jisg由来の0.962216をかけた値です.
\DeclareFontShape{JY2}{mc}{m}{n}{<-> s * [0.9247] upjisr-h}{}
数値がやっかいに見えるかもしれませんが,要するに和文と欧文のサイズ比を決めてやってそれを指定すればよいだけです.pLaTeXではその決めた値を0.962216で割ってやる必要がありましたが,upLaTeXではそのようなことは必要なくなり,より自然に指定できます.やっかいなのはpLaTeXの方でしょう.
必要ならば読み込んでいるパッケージをupLaTeX版に変更します.例えばotfパッケージにはオプションuplatexを渡します.
LuaLaTeX対応
LuaTeX-jaを読み込みます.
\RequirePackage{luatexja}
とします.\NeedsTeXFormat{pLaTeX2e}
となっていた場合\NeedsTeXFormat{LaTeX2e}
とします.フォントエンコーディングを変更します.横書きならば
JY3
,縦書きならばJT3
とします.-
JFMの変更を行います.LuaTeX-jaもjisに対応するJFMがデフォルトになっているので,そもそも変更する必要がないかもしれません.
LuaTeX-jaでも
\DeclareFontShape
でJFMを指定できますが,指定方法はpLaTeXやupLaTeXとちょっと異なります.次のようにします.\DeclareFontShape{JY3}{mc}{m}{n}{<->s*[0.9247]\ltj@stdmcfont:jfm=ujis;-kern}{}
LuaTeXを使う場合は,使うフォント自身もこの段階で適用します.
\ltj@stdmcfont
にはシステムでのデフォルトのフォントが入っています.-kern
はフォントのカーニング情報を使わないようにするための指定です.標準で提供されているJFMは次があります.pLaTeXと異なり,明朝体とゴシックでJFMを分ける必要はありません.
- ujis, ujisv: デフォルトのJFM.とりあえずこれを使えばよい.OTFパッケージ+upTeXで使われているJFMがもと.ujisが横書きでujisvが縦書き.
- jis: pLaTeXにおけるjisを移植したもの.もとのjisがそうであるように,こちらのjisも文字の形が正方形ではない.
-
読み込みパッケージを必要に応じて変更します.pLaTeXで標準添付されていたパッケージはLuaTeX-jaでも添付されているが,名前が変わっています.
- jsize10.clo → ltjsize10.clo.他のサイズも同様にltを頭につける.
- plext → lltjext
そのほか,そのままでは使えないパッケージが存在します.例えばotfパッケージは代わりにluatexja-otfパッケージを使う必要があります.エラー出たらググれ.
\pagewidth
と\pageheight
を設定する.これらは紙面のサイズです.多くの場合は\paperwidth
と\paperheight
と一致させればよいでしょう.\setlength{\pagewidth}{\paperwidth} \setlength{\pageheight}{\paperheight}
また,
\special
を使って紙サイズの設定をしている場合は\special
の発行をやめておきます.上の設定で紙サイズはLuaTeXが認識できる状態になります.長さの指定に
zw
やzh
を使っている場合は\zw
や\zh
に直します.またQ
やH
は使えませんので,対応する値に計算し直します.1Q=1H=0.25mm
です.-
もし
\mag
を使っているようならばやめます. -
必要ならば
\fnfixbottomtrue
します.(その効果についてはLuaTeX-jaのマニュアル2.4節を参照.) \kanjiskip
や\xkanjiskip
の設定は次のようにします.\ltjsetparameter{kanjiskip=0zw plus .1zw minus .01zw} \ltjsetparameter{xkanjiskip=0.25em plus 0.15em minus 0.06em}
その他のパラメータ設定も
\ltjsetparameter
を通じて行います.取得は\ltjgetparameter
です.禁則処理などの設定もこれらを通じて行います.どのようなパラメータの設定と取得が可能かはLuaTeX-jaのマニュアルをご覧ください.縦書きか横書きかの判定もパラメータ取得を通じて行います.なお,
kanjiskip
とxkanjiskip
に対しては,次のような高速に行う記述法も用意されています.\ltj@setpar@global \ltjsetkanjiskip 0zw plus .1zw minus .01zw \ltjsetxkanjiskip 0.25em plus 0.15em minus 0.06em
縦書きが混在している場合の注意.
\wd
などで取得できるボックスの幅は,pLaTeXと異なり,内部ボックスの組方向に依存して決まります.そのため,このような値を利用しているマクロは書き換えが必要になる可能性があります.詳細はLuaTeX-jaマニュアル6.2節をご覧ください.
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です