我想问一下我是否可以输出二进制信息\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 格式本身支持特殊命令(又称为xxx1
toxxx4
命令)中的任意二进制数据。但是,有一种惯例是数据是文本;事实上,当命令包含非 ASCII 数据dvitype
时会给出错误或警告。xxx
当然,这可能只是 DVItype 编写时的惯例(上次更新于 1995 年),我还没有研究过各种软件包生成的 DVI 特殊功能(或 XeTeX 在其.xdv
格式中的作用)。因此,您可以在其中使用二进制数据并解决问题 — 至少在某些 DVI 驱动程序中,因为解释特殊功能完全取决于 DVI 驱动程序。但是,如果您正在编写自己的 DVI 驱动程序(如果您在其中放置不寻常的特殊功能,则假定如此),那么您不妨将二进制数据写入 base64 或某些仅 ASCII 编码,然后让驱动程序将其解码为任意数据。