为什么(TikZ 节点的)颜色选项不适用于 flushright、center 或 flushleft?

为什么(TikZ 节点的)颜色选项不适用于 flushright、center 或 flushleft?

flushright为什么、center或环境中的文本不是flushleft红色的?

\documentclass[tikz,preview=true]{standalone}
\begin{document}
    \begin{tikzpicture}%
        \node at (1,1) [text width=3cm, color=red] {%
            This is red
            \begin{flushright}
                With flushright this is not!    
            \end{flushright}
            \begin{center}
                The same with center\dots    
            \end{center}
            \begin{flushleft}
                \dots or flushleft!    
            \end{flushleft}};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

不幸的是该网站将显示很多tikz 颜色问题。基本上,问题在于它不使用驱动程序或引擎特定的颜色支持,它只是推入后端颜色。发现问题比发现如何修复要容易得多(tikz 不是 ctan 上最小的软件包)。

在这种情况下,您生成

...............\pdfliteral{1 0 0 RG }
...............\pdfliteral{1 0 0 rg }
...............\OT1/cmr/m/n/10 T
...............\OT1/cmr/m/n/10 h
...............\OT1/cmr/m/n/10 i
...............\OT1/cmr/m/n/10 s
...............\glue(\spaceskip) 3.33298
...............\OT1/cmr/m/n/10 i
...............\OT1/cmr/m/n/10 s
...............\glue(\spaceskip) 3.33298
...............\OT1/cmr/m/n/10 r
...............\OT1/cmr/m/n/10 e
...............\OT1/cmr/m/n/10 d
...............\penalty 10000
...............\glue(\parfillskip) 0.0 plus 1.0fil
...............\glue(\rightskip) 0.0 plus 20.00003
..............\penalty -51
..............\glue 8.0 plus 2.0 minus 4.0
..............\glue(\parskip) 0.0
..............\glue(\baselineskip) 5.05556
..............\hbox(6.94444+0.0)x85.35826, glue set 49.19188fil
...............\glue(\leftskip) 0.0 plus 1.0fil
...............\hbox(0.0+0.0)x0.0
................\glue 0.0
................\glue 0.0
................\glue -5.0
................\hbox(0.0+0.0)x0.0
.................\pdfcolorstack 0 push {0 g 0 G}
.................\pdfcolorstack 0 pop
................\glue 5.0
...............\penalty 0
...............\OT1/cmr/m/n/10 T
...............\OT1/cmr/m/n/10 h
...............\OT1/cmr/m/n/10 i
...............\OT1/cmr/m/n/10 s
...............\glue(\spaceskip) 3.33298
...............\OT1/cmr/m/n/10 n
...............\OT1/cmr/m/n/10 o
...............\OT1/cmr/m/n/10 !

您可以看到物品处理使用了一个空盒子并推送和弹出了颜色状态。

.................\pdfcolorstack 0 push {0 g 0 G}
.................\pdfcolorstack 0 pop

这样应该会把颜色恢复到原来的状态,但实际上它把颜色恢复到了最后推入颜色堆栈的颜色 但是 Tikz 从来没有推过红色,它确实推了

...............\pdfliteral{1 0 0 RG }
...............\pdfliteral{1 0 0 rg }

因此 pdftex 根本“不知道”那是红色的,它只是写入输出文件的文字 pdf 字符串,因此当 pdftex 从它\pdfcolorstack 0 pop生成的pdf 中生成时黑色的.....

相关内容