マクロツイーター

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

LuaTeX

整数表記を内部整数に変換する

TeX の構文規則では「整数」は次の 2 種類がある。 内部整数 (internal integer): 要するに TeX での変数や定数を表すもの。\year、\hyphenchar、\lastpenalty、\count、countdef トークン(LaTeX の \@tempcnta 等)、chardef トークン(「大きな定数を定…

大きな定数を定義する話

TeX で定数を表すトークンを作りたい時は、\chardef を「借用」する。LaTeX では次のような定義が行われている。このトークン(\@ne 等)自体は TeX プログラミングをする人なら必ず見たことがあるだろう。((ちなみに \z@ は chardef トークンではない。)) \…

展開限定文脈でエラーを出す

LuaTeX の \directlua は展開可能である。だから、TeX のコードでは「展開限定」の文脈では不可能なことであっても、Lua コードでは可能な場合がある。典型的な例がレジスタへの代入である。 \newcount\xx@count \xx@count=3 \edef\xx@test{\the\xx@count/% …

LuaTeX で本気で日本語したい件について

北川さん(e-TeX の作者)を中心として、LuaTeX で pTeX と同様の機能を実現するためのプロジェクトが立ち上がった。 LuaTeX-ja 「LuaTeX で日本語する」今までに試みられている実装と異なり、LaTeX を前提にせずに、TeX レベルで pTeX との互換性の高い処理…

般若心経 LuaTeX

「LuaLaTeX で fontspec する件」が無事に動作したので、集いの発表でもネタに使った「般若心経」を組版してみる。ソースはこんな感じである。なお、強制改行や改段落を多用して行分割や分綴の問題を避けていることに注意されたい。 \documentclass[a4paper]…

LuaLaTeX で fontspec する件について

正確にいうとなかなか fontspec してくれない件。LuaLaTeX の前に XeLaTeX の話。奥底の解説では、XeLaTeX で「Unicode する」為に必要なパッケージを一度に読み込むには xltxtra パッケージを用いるとしていた。現在でもそれ自体は変わらないが、「本当に必…

LuaLaTeX で Unicode する件について

奥底のページを書いた時には、まだ LuaLaTeX で「UTF-8 で入力して TrueType/OpenType の Unicode フォントで出力する」ための枠組が整っていなかった(あったのは TeX レベル、および ConTeXt 上のサポートだけ)ので、「入力は全部 ASCII、出力は 8 ビッ…

Lua に渡る「文字列」のエンコーディング

LuaTeX において、Unicode 文字列は UTF-8 にエンコードされた形で Lua に渡っている。それを確かめる実験。 {\lccode`Z="3042 \lowercase{\gdef\hiraA{Z}}} \directlua{ local str, pc = "\hiraA", string.char(37) for i = 1, str:len() do tex.write((pc.…

\pdfstrcmp のお話 (3/3)

\pdfstrcmp 等の LuaTeX で削除された pdfTeX の機能を LuaLaTeX で使うためのパッケージ((LaTeX 以外のフォーマットでも \input で読み込めば使用できる。))が pdftexcmds パッケージ(Heiko Oberdiek 氏制作)である。これを読み込むと \pdf@strcmp という…

\pdfstrcmp のお話 (2/3)

(前回)\pdfstrcmp の処理が行われる時には、引数のテキストは既に TeX エンジンに読み込まれているので、非トークン化した後の比較対象となる文字列は当該エンジンの「内部文字コード」で表されていることになる。従って、基本的には文字列比較はこの「内…

\pdfstrcmp プリミティブのお話 (1/3)

以前の記事で \pdfstrcmp について言及した。名前から容易に想像されるように、\pdfstrcmp 命令は C 言語標準ライブラリの strcmp() (あるいは Perl の cmp 演算子、Java の String.compareTo() メソッド)と同じように、2 つの文字列を受け取り、その(内…

紙面サイズの指定 (1/2)

周知の通り、オリジナルの TeX は出力(DVI)に紙面の大きさを記録しない(そもそも「紙面の大きさ」という概念がない)。従って、PDF に変換する時に紙面の大きさを DVI ドライバの起動オプションで指定する必要がある。ただし、pdfTeX や XeTeX のような「…

LuaTeX で日本語する件について

取り組んでいる方を見つけたので紹介する。 jafontspec パッケージ —LuaLaTeX でとりあえず日本語組版— 同ページの「参考にさせていただいたもの」以下に、これまでの「LuaTeXで日本語」関連のサイトが挙げられている。[2011-06-02 追記] 「LuaTeX で日本語…