
バイナリ情報を で出力できるかどうか教えてください\special
。可能であれば、バイナリを TeX ソースに挿入するにはどうすればいいですか? たとえば、C/C++ では、\0
を使用してバイトを取得できます00000000
が、TeX で同等のものは何でしょうか?
答え1
もしあなたが、ソースファイル\special
に と続けて何か と入力して.tex
バイナリデータを DVI ファイルに取り込むことができるか、とおっしゃるのであれば、答えは「いいえ」です (ただし、下記を参照してください)。これは、TeX では がそれほど特別なものではないためです。これは単なるプリミティブコマンド ( または など)\special
であり、 内に与えられたトークンを単純に書き出し、それを展開するなどします ( または など) 。\def
\write
\special{...}
\edef
\xdef
。任意のバイナリデータを TeX トークンリストに取り込むのは難しいため、それを DVI ファイルに書き出すことはできません。(ただし、以下を参照してください。この答えこれは、 を使用してそれが可能になる可能性がある (可能というだけで、簡単ではない) 方法を示していますpdflatex -8bit
。
TeXプログラムの関連セクション(texdoc tex
)、など\special
が使用されていることを示していますshow_token_list
。
TeX ソースからバイナリ データを書き出すことができたとしても、それは機能するでしょうか? DVI 形式自体は、特殊コマンド (toxxx1
コマンドとも呼ばれますxxx4
) 内で任意のバイナリ データをサポートしています。ただし、データはテキストであるという慣例があり、実際にはコマンドに非 ASCII データが含まれているdvitype
とエラーまたは警告が表示されます。xxx
もちろん、これは DVItype が書かれた当時 (最終更新 1995 年) からの慣習に過ぎないかもしれませんし、私はさまざまなパッケージによって生成された DVI スペシャル (または XeTeX がその.xdv
形式で何をするか) を調べたことはありません。したがって、バイナリ データをそこに置いても、それを回避できる可能性があります。少なくとも一部の DVI ドライバーでは、スペシャルの解釈は完全に DVI ドライバー次第です。ただし、独自の DVI ドライバーを作成している場合 (通常とは異なるスペシャルをそこに配置している場合はそうであると想定されます)、バイナリ データを base64 などの ASCII のみのエンコードで書き込んで、ドライバーで任意のデータにデコードすることもできます。