
Ich habe die folgende Umgebungsdefinition:
\newif\ifrev
\newenvironment{revision}{%
\begingroup
\revtrue%
\color{blue}%
}{%
\revfalse%
\endgroup
}
Diese Umgebung färbt einfach den gesamten Text darin blau und setzt ihn \ifrev
darin auf „true“.
In Tabellen und Abbildungen innerhalb dieser Umgebung \ifrev
bleibt der Wert korrekt erhalten (d. h. eine \ifrev
Anweisung wird als „true“ ausgewertet, wenn sich die Abbildung/Tabelle in einer revision
Umgebung befindet, und andernfalls als „false“). Die Textfarbe der Überschriften und Tabelleneinträge wird jedoch auf Schwarz zurückgesetzt. Beispiel:
\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}
Durch das Hinzufügen von \begin{revision}
und \end{revision}
direkt nach und vor „und“ \begin{document}
wird \end{document}
der Absatz richtigerweise blau eingefärbt und das kleine „a“ in der Tabelle in ein großes „A“ geändert, der Text in der Tabelle und die Überschriften bleiben jedoch schwarz.
Wie behalte ich auch in dieser Umgebung die blaue Farbe in Tabellen und Abbildungen bei?
Antwort1
Unter Berücksichtigung der Kommentare habe ich die Umgebungsdefinition wie folgt umgeschrieben, was anscheinend wie gewünscht funktioniert:
\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%
}{}