覆盖命名的颜色然后恢复它

覆盖命名的颜色然后恢复它

我正在尝试弄清楚如何覆盖环境的一部分的颜色,然后将其恢复为原来的值。我有这个(这里仅包含相关代码):

\newenvironment*{foo}
{
    \colorlet{colorsave}{bar}
    \definecolor{bar}{RGB}{100,100,100}

    % some stuff that relies on the bar color being overridden

    % restore the bar color to its former value (this is the part I don't know how to do)
    \definecolor{bar}{RGB}{colorsave}

    % some stuff that relies on the bar color being restored to its former value
}
{
}

这无法编译。从我冗长的日志中我可以看出,根本原因是:

Bla.tex:207: LaTeX Error: \begin{figure} on input line 199 ended 
by \end{sidebar}.
! Emergency stop
*** (job aborted, no legal \end found)

如果我省略掉\definecolor,我可以看到它正确地覆盖了颜色,所以那部分是有效的。修复部分让我很困惑。

请注意,我不能依赖环境完成后恢复的颜色,因为我的部分环境依赖于恢复颜色。这是一个侧边栏。我需要覆盖侧边栏标题的颜色,然后将其恢复为正文。

有办法实现这个吗?

答案1

您可以通过以下方式恢复

\colorlet{bar}{colorsave}

相关内容