TeX \special のバイナリデータ

TeX \special のバイナリデータ

バイナリ情報を で出力できるかどうか教えてください\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

<code>\special</code> <code>\special</code>

TeX ソースからバイナリ データを書き出すことができたとしても、それは機能するでしょうか? DVI 形式自体は、特殊コマンド (toxxx1コマンドとも呼ばれますxxx4) 内で任意のバイナリ データをサポートしています。ただし、データはテキストであるという慣例があり、実際にはコマンドに非 ASCII データが含まれているdvitypeとエラーまたは警告が表示されます。xxx

<code>dvitype</code>

もちろん、これは DVItype が書かれた当時 (最終更新 1995 年) からの慣習に過ぎないかもしれませんし、私はさまざまなパッケージによって生成された DVI スペシャル (または XeTeX がその.xdv形式で何をするか) を調べたことはありません。したがって、バイナリ データをそこに置いても、それを回避できる可能性があります。少なくとも一部の DVI ドライバーでは、スペシャルの解釈は完全に DVI ドライバー次第です。ただし、独自の DVI ドライバーを作成している場合 (通常とは異なるスペシャルをそこに配置している場合はそうであると想定されます)、バイナリ データを base64 などの ASCII のみのエンコードで書き込んで、ドライバーで任意のデータにデコードすることもできます。

関連情報