マクロツイーター

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

2011-04-01から1ヶ月間の記事一覧

luatexbase と luatex と fontspec と

前の記事で「fontspec を読み込んだ時点で luatexbase と luatex が衝突するので、カテゴリコードテーブルの機能が事実上使えなくなる」という話をしたが、よく調べてみると、その fontspec 自身がカテゴリコードテーブルを使っていることが判明した。[fonts…

luatexbase の話:カテゴリコードテーブル (2)

(前回の記事)前回の記事では、LuaTeX のカテゴリコードテーブルの話とそれを LaTeX (および plain TeX)での使用を支援するためのパッケージ luatexbase の話をした。実は、LuaTeX 機能の支援パッケージにはもう 1 つ、luatex パッケージ(作者:Heiko Ob…

エラーメッセージ中の強制改行

TeX

画面(端末)に出力されるエラーメッセージは、画面の端(79 桁固定;ただし Web2C の設定で変更可能)で自動的に折り返されるが、改行文字(NL;ASCII 符号位置 10)を入れる(TeX では ^^J と記す)ことで強制改行できる。ところが、plain TeX でこの方法…

luatexbase の話:カテゴリコードテーブル (1)

LaTeX における(パッケージ開発者用の)パッケージに luatexbase (作者:Manuel Pégourié-Gonnard、Élie Roux)というものがある。これは LuaTeX における基礎的な拡張機能、例えば属性(attribute)、カテゴリコードテーブル(category code table)等を …

グルー値文字列中の空白トークン

お待ちかねの(誰が?) TeX パズル。次のそれぞれのトークン列について、先頭から「グルー値」を 1 つ読んだ場合、どこまでが「グルー値を表す文字列」と解釈されるか。言い換えると、これらの前に \hskip を置いた場合、どこまでのトークン列が「その引数…

Lua のテーブルリテラルによるデータファイル形式

Programming in Lua のデータ永続化に関する章の中に、「Lua のテーブルリテラルの形でデータファイルを記述する」話が出てくる。つまり、データファイルの記述形式を次のようと、簡単に読込が可能になるという話である。 [bib.dat]Entry{ author = "Donald …

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

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

レジスタを大量に確保する話

LaTeX 上で大量のレジスタを確保するパッケージを作ったとする。例えば、以下の「パッケージ」はただ単に 1000 個の整数レジスタを無駄遣いしている。[spendthrift.sty] \@tempcnta=0 \@whilenum\@tempcnta \newcount\xx@trash \advance\@tempcnta1 }これを …

大きな定数を定義する話

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

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

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

整数を読み飛ばす、続き(3)

2011-04-04 の記事の続き。いよいよ e-TeX での解決法を述べる。基本的なアイデアは以下の通りである。 任意の整数の引数を読み取って空に展開されるプリミティブはないらしい。 でも寸法ならば「読み取って空に展開される」ようなマクロが作れる。 従って、…

条件文における「展開」

TeX

TeX は実行制御を全てマクロ展開だけで行う言語である。だから展開の仕組みを正しく理解すること(もっと具体的にいえば「\expandafter をどう使うか」)は、ある程度複雑なプログラムを「思った通りに書く」ために欠かせない。その中でも「条件文と展開との…

整数を読み飛ばす、続き(2)

TeX

「整数を読み飛ばす」話の更なる続き。今回は e-TeX での完全な解決法(と思うもの)を述べるが、本命の方法の前にまた色々と試行を重ねることにする。今までは TeX の「整数を読み込む」プリミティブを濫用することを考えたが、全く別の筋道を考える。自力…

整数を読み飛ばす、続き (1)

TeX

2011-03-31 の記事の続き。その記事では、任意の非負整数を「読み飛ばす」(空に展開する)方法を述べた。これを読んで「じゃあ負数を含めた任意の整数を読み飛ばすことはできないの?」と思った人がいるかも知れない。ここではそれを考えてみる。これを行う…

スパマーに読まれない〈@〉を書く(BXmirageat パッケージ)

TeX

luamirageat パッケージ (前田一貴さん)luamirageat パッケージは,LuaTeX 文書中のメールアドレスに spam 対策を施すためのパッケージです.ほう。確か最近の PDF 仕様にはこれを直接(フォント情報を介さずに)行う機能があったはず(PDF 仕様書検索中)…