
我有以下環境定義:
\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%
}{}