Сохраняйте цвет текста внутри таблиц и подписей к таблицам/рисункам.

Сохраняйте цвет текста внутри таблиц и подписей к таблицам/рисункам.

У меня есть следующее определение среды:

\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}и \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%
}{}

Связанный контент