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>\特殊</code> <code>\特殊</code>

即使您可以从 TeX 源中写出二进制数据,它能工作吗?DVI 格式本身支持特殊命令(又称为xxx1toxxx4命令)中的任意二进制数据。但是,有一种惯例是数据是文本;事实上,当命令包含非 ASCII 数据dvitype时会给出错误或警告。xxx

<code>dvitype</code>

当然,这可能只是 DVItype 编写时的惯例(上次更新于 1995 年),我还没有研究过各种软件包生成的 DVI 特殊功能(或 XeTeX 在其.xdv格式中的作用)。因此,您可以在其中使用二进制数据并解决问题 — 至少在某些 DVI 驱动程序中,因为解释特殊功能完全取决于 DVI 驱动程序。但是,如果您正在编写自己的 DVI 驱动程序(如果您在其中放置不寻常的特殊功能,则假定如此),那么您不妨将二进制数据写入 base64 或某些仅 ASCII 编码,然后让驱动程序将其解码为任意数据。

相关内容