
Eu tenho a seguinte definição de ambiente:
\newif\ifrev
\newenvironment{revision}{%
\begingroup
\revtrue%
\color{blue}%
}{%
\revfalse%
\endgroup
}
Este ambiente simplesmente colore todo o texto dentro dele de azul e define o valor \ifrev
como verdadeiro dentro dele.
Em tabelas e figuras dentro deste ambiente, o \ifrev
valor é preservado adequadamente (ou seja, uma \ifrev
instrução é avaliada como verdadeira se a figura/tabela estiver em um revision
ambiente e como falsa caso contrário). No entanto, a cor do texto das legendas e das entradas da tabela é redefinida para preto. Por exemplo:
\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}
Adicionar \begin{revision}
e \end{revision}
logo depois e antes \begin{document}
e \end{document}
colore corretamente o parágrafo de azul e altera o a minúsculo para A maiúsculo na tabela, mas mantém o texto na tabela e as legendas em preto.
Como faço para manter também a cor azul dentro das tabelas e figuras dentro deste ambiente?
Responder1
Levando em consideração os comentários, reescrevi a definição do ambiente da seguinte forma, que parece funcionar como eu queria:
\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%
}{}