我有以下环境定义:
\newif\ifrev
\newenvironment{revision}{%
\begingroup
\revtrue%
\color{blue}%
}{%
\revfalse%
\endgroup
}
这个环境只是将其内部的所有文本都变成蓝色,并将\ifrev
其设置为 true。
在此环境内的表格和图形中,该\ifrev
值被正确保存(即,\ifrev
如果图形/表格在revision
环境中,则语句的计算结果为真,否则为假)。但是,标题和表格条目的文本颜色被重置为黑色。例如:
\begin{document}
\lipsum[42]
\begin{table}[h]
\centering
\begin{tabular}{cc}
\ifrev{A}\else{a}\fi & b \\
c & d
\end{tabular}
\caption{Caption}
\end{table}
\begin{figure}[h]
\centering
\includegraphics{example-image-a}
\caption{Caption}
\end{figure}
\end{document}
在和之前和之后添加\begin{revision}
和可以正确地将段落染成蓝色,并将表格中的小写 a 更改为大写 A,但保留表格中的文本和标题为黑色。\end{revision}
\begin{document}
\end{document}
我如何在此环境中保留表格和图形内的蓝色?
答案1
考虑到这些评论,我重写了环境定义如下,它似乎按照我的要求运行:
\newenvironment{revision}{%
\revtrue%
\color{\revcolour}%
\captionsetup*{font={color=\revcolour}}%
\captionsetup*[sub]{font={color=\revcolour}}%
\makeatletter%
\let\oldtable\table%
\def\table{\@ifnextchar[\table@i \table@ii}%
\def\table@i[#1]{\oldtable[#1]\color{\revcolour}}%
\def\table@ii{\oldtable\color{\revcolour}}%
\makeatother%
}{}