我用\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 的解决方法可能也是我推荐的。