在上一个问题中(如何在 XeLaTeX 中全局设置文本颜色), 我问过如何在 XeLaTeX 中全局设置文本颜色,并得到了一些很好的答案。
然而,虽然所提出的机制在大多数情况下似乎有效,但它们似乎也始终无法解决颜色问题white
。我不确定这是错误还是我在这里做错了什么,但请考虑以下示例:
\documentclass{report}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont[Color=white]{Linux Libertine O}
\setsansfont[Color=white]{Linux Biolinum O}
\setmonofont[Color=white]{Inconsolata}
\pagecolor{darkgray}
\begin{document}
\chapter{A chapter}
\section{A section}
\texttt{Some mono text}
The text above is invisible as it is all black and not white.
{\addfontfeature{Color=yellow} Some yellow text showing up on the dark page.}
{\addfontfeature{Color=white} Some white text invisible on the dark page.}
\end{document}
该示例遵循@AlanMunn 在另一个问题上的建议。结果是:
白色文字以黑色打印。其他颜色(如示例中的黄色)效果也很好。
如果我使用@Herbert的建议添加
\AtBeginDocument{\color{white}}
\addtokomafont{sectioning}{\color{white}}
文档中,我不断遇到仍为黑色的环境,例如图形的标题。无论如何,命令\color
似乎比fontspec
设置更强大。
对此有什么想法或解决方案吗?
答案1
这似乎是 XeTeX 的一个错误,因为
\font\x="Linux Libertine O:color=FFFFFF"
\x ABC\bye
以黑色打印 ABC,而
\font\x="Linux Libertine O:color=FFFFFE"
\x ABC\bye
以“几乎白色”打印 ABC。
所以答案可能是
\setmainfont[Color=FFFFFE]{Linux Libertine O}
这“解释”了艾伦的建议。
答案2
全部功劳归功于 Philippe Goutet,他在这里写了以下答案:如何在 XeLaTeX 中全局设置文本颜色
感谢 Alan Munn 指出这一点。
这里有一种方法可以实现这一点,无论你是否使用 XeLaTeX,无论你是否使用 Komascript,它都可以工作。它通过重新定义 LaTeX 使用的默认颜色来工作。
\documentclass{report}
%\documentclass{scrreprt}
\usepackage{xcolor}
\makeatletter
\newcommand{\globalcolor}[1]{%
\color{#1}\global\let\default@color\current@color
}
\makeatother
\AtBeginDocument{\globalcolor{red}}
\begin{document}
\section{A section heading}
some test text
\end{document}