在下一个文本块中重置颜色

在下一个文本块中重置颜色

我用\textblockcolour{cyan}它来仅改变一个textblock环境的颜色。

但其他文本块也会变色为青色。

如何将其他文本块重置为定义的颜色?

最少编码:

\documentclass{article}
\usepackage[absolute,overlay]{textpos}
\usepackage{xcolor}

\begin{document}
\title{Texblock color}

\textblockcolour{cyan}
\begin{textblock}{5}(1,5)
  123 \\
  123

\end{textblock}
\textblockcolour{red}
\begin{textblock}{5}(3,10)
  456 \\
  456
\end{textblock}

\begin{textblock}{5}(5,15)
  789 \\
  789
\end{textblock}

\end{document}

在此处输入图片描述

答案1

当您设置 时\textblockcolour\TP@defaultblockcolour如果未定义,则内部也会设置 。然后,下一个\end{textblock}将默认颜色重置为\TP@defaultblockcolour(无论出于何种原因)。如果您不喜欢这样,您可以定义一个新命令\changetextblockcolour来撤消默认颜色设置:

\documentclass{article}
\usepackage[absolute,overlay]{textpos}
\usepackage{xcolor}

\makeatletter
\newcommand\changetextblockcolour[1]{%
    \textblockcolour{#1}%
    \let\TP@defaultblockcolour=\@undefined
}
\makeatother

\begin{document}
\title{Texblock color}

\changetextblockcolour{cyan}
\begin{textblock}{5}(1,5)
  123 \\
  123

\end{textblock}
\changetextblockcolour{red}
\begin{textblock}{5}(3,10)
  456 \\
  456
\end{textblock}

\begin{textblock}{5}(5,15)
  789 \\
  789
\end{textblock}

\end{document}

输出

在此处输入图片描述

答案2

这是一个错误,确实如此著名的。修复看起来并不难,但不会立即见效。

什么应该根据文档(即根据我的意图)发生的事情是,在\textblockcolour任何{textblock}设置之外,默认值可以被暂时覆盖,\textblockcolour{textblock}如果当前没有设置,则\textblockcolour设置默认值。{textblock}

然而,它的实现方式(正如@siracusa 指出的那样)是,一旦将颜色设置为默认颜色,就无法重置。

我认为‘...如果当前未设置’的行为回想起来并不理想,但我可能会保留它以实现向后兼容性。

在此期间,@siracusa 的解决方法可能也是我推荐的。

相关内容