重新着色文本,以便浮动和脚注能够正确受到影响

重新着色文本,以便浮动和脚注能够正确受到影响

我想定义一个环境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}

相关内容