我正在尝试pgf图生成gnuplot
数据。这通过让 pgfplots 将一些内容写入外部文件、在文件上运行 gnuplot,然后使用生成的数据绘制图形来实现。
我遇到的问题是,在 或 下,我得到了不同的行为xelatex
。pdflatex
在lualatex
中xelatex
,数据文件乱七八糟^^I
,而在其他两种格式中,这些是标签。它出现代码^^I
被存储为宏,然后被写入文件,因此语法可能有些奇怪^^I
:xelatex
是逐字读取。事实上,当我执行\show\pgfplots@TAB
(有问题的宏)然后 forpdflatex
然后lualatex
我得到一个文字制表符,而 forxelatex
我得到^^I
。
那么我该如何添加标签xelatex
?为什么不起作用\gdef\pgfplots@TAB{^^I}
?
(顺便说一下,代码中的上一行是\catcode`\^^I=12
- 我不知道这是否与它有关。)
答案1
在 TeX Live 中,pdf(la)tex 和 lua(la)tex 的格式是通过加载 tcx 翻译文件来构建的,cp227.tcx
这使得^^I
“可打印”。这意味着类别代码 12^^I
被写成真正的制表符。
另一方面,xetex 忽略 tcx 翻译请求,在这方面的行为类似于 Knuth 的 TeX(但它当然会写入 UTF-8)。
\begin{frame}[fragile]
使用with 时也会出现相同的问题beamer
,因为环境的内容被写入临时文件,或者使用\verbatimwrite
和类似命令;filecontents
环境也可能受到影响。
一种解决方案可能是使用命令行选项调用 xetex -8bit
,但我不知道这是否有其他副作用。