
我想問一下是否可以輸出二進位訊息\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 編碼編寫二進位數據,然後讓驅動程式對其進行解碼成任意資料。