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等:

<代碼>\特殊</代碼> <代碼>\特殊</代碼>

即使您可以從 TeX 原始程式碼中獲取二進位數據,它會起作用嗎? DVI 格式本身支援特殊指令(也稱為xxx1toxxx4指令)內的任意二進位資料。然而,有一個約定,即數據是文本;事實上,當命令包含非 ASCII 資料dvitype時,會給予錯誤或警告。xxx

<code>dvitype</code>

當然,這可能只是 DVItype 編寫時的約定(最後更新於 1995 年),而且我還沒有研究過各種軟體包產生的 DVI 特價(或 XeTeX 以其.xdv格式做什麼)。因此,您可能可以在那裡擁有二進位資料並擺脫它 - 至少在某些 DVI 驅動程式中,因為解釋特殊資料完全取決於 DVI 驅動程式。但是,如果您正在編寫自己的DVI 驅動程式(如果您在那裡放置不尋常的特殊字符,則假定是這樣),那麼您不妨以Base64 或某種此類純ASCII 編碼編寫二進位數據,然後讓驅動程式對其進行解碼成任意資料。

相關內容