(前回の続き)
TeX なのにクオートした文字列に関する注意
\input
や \font
等の「クオートで囲める引数」をとるプリミティブについて、引数の終結の規則について詳しくみておく。
簡単に言うと、「bash やコマンドプロンプトのクオートと同じ」である。すなわち、引数の文字列の一部分だけを囲めて、また複数の箇所を囲める。そしてクオートで囲まれていない空白文字が現れた時点で引数が終結する。つまり
\input "foo bar"baz"hoge fuga"piyo "tata"titi
という例だと、\input
の引数は「foo barbazhoge fugapiyo
」という文字列になる。(クオート自体は引数文字列に含まれない。)
なお、非文字トークンはたとえクオート囲いの中にあっても常に引数を終結させる。だから
\input "foo bar"baz"hoge fu\relax ga"piyo "tata"titi
だと引数は「foo barbazhoge fu
」である。
この説明から判るように、クオートを閉じただけでは引数は終結しない。
% 引数は「mymacroHello,」となってしまう! \input "mymacro"% Hello, world!
終結のための空白文字や \relax
を忘れないように注意したい。
XeTeX なのでクオートで文字列する例
XeTeX 拡張のプリミティブの中にも「クオートで囲める引数」をもつものがある。
XeTeX の画像読込用プリミティブの先頭引数は画像ファイル名であり、ゆえに他のファイル名の引数と同様に「クオートで囲める引数」になっている。
\XeTeXpdffile "foo bar.pdf" page 2 art\relax \XeTeXpicfile "foo bar.png" width=5cm\relax
その他にも、以下のプリミティブも「クオートで囲める引数」をとる。
\XeTeXlinebreaklocale "ja" % 引数はロケール名 \XeTeXinputencoding "shift_jis" % 引数はエンコーディング名 \XeTeXdefaultencoding "auto" % 〃
もしかしたら他にもあるかも知れない。
pdfTeX なのに波括弧でファイル名する例
XeTeX と異なり、pdfTeX では独自拡張のプリミティブでファイル名を引数にとるものについては「波括弧で囲む」という規則を採用している。従って、既に説明した(元祖 TeX の)プリミティブ以外には「クオートで囲める引数」は存在しないようである。
\pdfximage{foo bar.png} \pdfmdfivesum{foo bar.dat}