如何通过 \color 将颜色改回原来的颜色

如何通过 \color 将颜色改回原来的颜色

我已经设置了这个命令:\newcommand\blue[1]{{\color{blue}#1}}

在我的文档中,我使用\color{blue}

然后我想把颜色改回原来的颜色。有没有办法可以做到这一点,而不用

  1. 范围\color{blue}
  2. 对颜色进行硬编码\color{black}

答案1

\documentclass{article}

\usepackage{color}
\makeatletter
\def\zz{\edef\zzz{\pdfliteral{\current@color}}}%pdftex version
\makeatother
\begin{document}


\color{green}\zz one two \color{blue} three four \zzz five

\end{document}

答案2

将文档中使用的颜色存储在一个堆栈中。先进先出堆栈该包提供了必要的功能。

\documentclass{article}
\usepackage{color}
\usepackage{fifo-stack}
\FSCreate{colors}{black}
\makeatletter
\let\old@color\color
\renewcommand\color[1]{\FSPush{colors}{#1}\old@color{#1}}
\newcommand\colorend{\FSPop{colors}\old@color{\FSTop{colors}}}
\makeatother
\begin{document}
The quick brown fox jumps over the lazy dog.\par
\color{blue}
The quick brown fox jumps over the lazy dog.\par
\color{red}
The quick brown fox jumps over the lazy dog.\par
\colorend
The quick brown fox jumps over the lazy dog.\par
\colorend
The quick brown fox jumps over the lazy dog.
\end{document}

每次使用颜色时,它都会进入堆栈。\colorend宏会丢弃堆栈顶部(当前颜色),然后将颜色设置为现在位于顶部的颜色。

颜色

相关内容