![重新着色文本,以便浮动和脚注能够正确受到影响](https://linux22.com/image/382260/%E9%87%8D%E6%96%B0%E7%9D%80%E8%89%B2%E6%96%87%E6%9C%AC%EF%BC%8C%E4%BB%A5%E4%BE%BF%E6%B5%AE%E5%8A%A8%E5%92%8C%E8%84%9A%E6%B3%A8%E8%83%BD%E5%A4%9F%E6%AD%A3%E7%A1%AE%E5%8F%97%E5%88%B0%E5%BD%B1%E5%93%8D.png)
我想定义一个环境redout
,使其中定义的所有文本都以改变的颜色排版。但是,我找不到一致地重新着色浮点数的方法。
- 如果仅使用 进行重新着色
\color{red}
,则它不会影响浮点数和脚注,并且根据文档类别的不同,也可能不会影响标题。 - 添加时
\let\default@color\current@color
,它会根据浮点数和脚注的排版时间(而不是定义时间)错误地影响浮点数和脚注。
我可以想象通过重新定义所有脚注/浮动命令来实现这一点,但这很容易出错。有没有更优雅的版本来实现基于源代码中的位置着色?
\documentclass{文章} \usepackage[paperwidth=8cm,paperheight=3cm,scale=0.9]{几何} \usepackage{xcolor} \开始{文档} 此文字为黑色。 \footnote{这个脚注应该是黑色的,但却是红色的。} \开始组 \红色} \制作字母 \let\default@color\current@color % 需要影响脚注。 此文字为红色。 \footnote{此脚注为红色,符合预期。} \清除页 这段文字仍为红色。 \footnote{此脚注应为红色,但由于 \emph{typeset} 位于 \texttt{\string\endgroup} 之后,因此并非如此。} \结束组 这段文字再次正确地变为黑色。 \结束{文档}
答案1
正如您所说,重新定义\default@color
弊大于利,我认为如果您想以当前颜色设置脚注,那么更简单的做法是,只需像这里一样明确地在脚注的开头设置颜色,或者通过重新定义\footnotetext
宏来添加颜色\color{.}
。
\documentclass{article}
\usepackage[paperwidth=8cm,paperheight=3cm,scale=0.9]{geometry}
\usepackage{xcolor}
\begin{document}
This text is black.
\footnote{\color{.}This footnote should be black, but is red.}
\begingroup
\color{red}
This text is red.
\footnote{\color{.}This footnote is red, as intended.}
\clearpage
This text is still red.
\footnote{\color{.}This footnote should be red, but being \emph{typeset} after the \texttt{\string\endgroup}, it isn't.}
\endgroup
This text is correctly black again.
\end{document}
答案2
使用 lualatex 或 xelatex 时,您可以使用彩色字体。这非常可靠,但必须在组结束时重置数学运算:
\documentclass{scrartcl}
\usepackage[paperwidth=8cm,paperheight=3cm,scale=0.9]{geometry}
\usepackage{fontspec,unicode-math,xcolor}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\begin{document}
This text is black.
\footnote{This footnote should be black}
\[a=\int x\]
\begingroup
\setmainfont{Latin Modern Roman}[Color=FF0000]
\setsansfont{Latin Modern Sans}[Color=FF0000]
\setmonofont{Latin Modern Mono}[Color=FF0000]
\setmathfont{Latin Modern Math}[Color=FF0000]
\section{should be red}
This text is red. \[a=\int x\]
\footnote{This footnote is red, as intended.}
\clearpage
This text is still red. \textcolor{green}{even with color green ...} unless you use
{\addfontfeature{Colour=green} addfontfeature}
\footnote{This footnote should be red, even after the \texttt{\string\endgroup} $a=\int x$.}
\begin{figure}[t]
This float should be red
\[a=\int x\]
\end{figure}
\endgroup \setmathfont{Latin Modern Math}
This text is correctly black again. \[a=\int x\]
\end{document}