测试程序:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\color{red}1
\color{blue}0
... many lines ...
\color{red}1
\color{blue}0
\end{document}
测试结果:
只有前几行颜色正确。其余全部为蓝色。
使用\textcolor{...}{...}
似乎可以,但用 则不行\color{...}
。
xelatex
上述代码是 MWE,有 200 次重复(400 行)的 1 和 0。当使用 处理但没有 时,就会出现错误pdflatex
。
答案1
xdvipdfmx
是 XeTeX 的 PDF 驱动程序,其颜色堆栈有限。每次使用(例如)时\color{red}
,它都会\special{color push rgb 1 0 0}
将一种颜色推送到堆栈中,但由于您没有在任何地方结束组,因此该颜色会无限期地保留在堆栈中(不会\special{color pop}
发生这种情况)。
该xelatex
程序默认使用 运行,这可以说是很糟糕的xdvipdfmx
,-q
因此这种问题不会出现(因为在 TeX 运行期间检测不到)。如果你使用 运行xelatex
,xelatex --output-driver='xdvipdfmx' <file>.tex
它会告诉你:
xdvipdfmx:warning: Color stack overflow. Just ignore.
您需要\color
在组内使用,或者\reset@color
手动执行。
以下示例代码显示了以下内容:
\documentclass{article}
\usepackage{xcolor}
\newcount\cnta
\begin{document}
\loop
\color{red}\the\cnta\space
\advance\cnta1
\color{blue}\the\cnta\par
\advance\cnta1
\ifnum\cnta<150
\repeat
\end{document}