我正在尝试编写此文档—
\documentclass{minimal}
\usepackage[no-math]{fontspec} % no-math can be omitted
\setmainfont{Times}
\begin{document}
\slash\char"200B
\end{document}
—使用 XeTeX (3.14159265-2.6-0.99991 (TeX Live 2014))。这是\slash
,在 latex.ltx 的第 467 行定义为—
\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
— 后面跟着一个零宽度空格 (U+200B),全部在 Times 中设置。我之所以包括这些,no-math
是因为产生的错误与此相同xdvipdfmx 错误,但包含(或省略)no-math
并不能解决错误。由于这是 XeTeX,我可以直接插入零宽度空格,但是\char
为了清晰起见,我还是使用了。
如果我运行xetex -fmt xelatex document.tex
,我会收到以下错误消息:
xdvipdfmx:fatal: CID count > 65535
Output file removed.
)
Error 256 (driver return code) generating output;
file document.pdf may not be valid
这是将 HTML 文档转换为 TeX 时产生的。实际的 HTML 包含类似 的内容more/​bacon
,其中重要的部分是斜杠后跟​
,这是零宽度空格的十进制数字字符引用。我将 HTML 中的普通斜杠转换为\slash{}
TeX 中的斜杠,结果得到了\slash
后跟零宽度空格。
这个问题是怎么产生的?我该如何解决?不管怎样,我可以从我生成的 TeX 中完全删除零宽度空格。
(为了完整起见,如果我使用/\char"200B
而不是\slash\char"200B
,则会按预期生成 PDF 文件。使用 Times 以外的字体似乎也能解决错误,但在我的特定情况下我无法更改字体。运行luatex --fmt lualatex document.tex
也可以,但如果可能的话,我想避免切换 TeX 引擎。)