错误或功能:tikz 对矩形的颜色规范的解释不同

错误或功能:tikz 对矩形的颜色规范的解释不同

绘制矩形时,Tikz 会以两种不同的方式解释颜色,具体取决于在选项中指定的顺序。

在下面的例子中:当首先指定颜色时,就像在前两个例子中一样,它用于为矩形的框架着色---正如我所料。但在第三个矩形中,红色指定实际上用红色填充了矩形。这是预期的吗?

\documentclass{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \draw[color=red,very thick] (0,0) rectangle (1,1);
  \draw[color=red,very thick,fill=blue] (2,0) rectangle (3,1);
  \draw[very thick,fill=blue,color=red] (4,0) rectangle (5,1);
\end{tikzpicture}
\end{document}

3 个正方形

答案1

是的,这是一个功能,因为这个键重写了,和键color上的颜色值,我引用了第 168 页的 3.1 手册(drawfilltext15.2 指定颜色):

/tikz/color=<color name> (no default)此选项设置当前范围内用于填充、绘图和文本的颜色。

TikZ 允许您分别更改用 绘制的线条的颜色值draw和用 绘制的着色的颜色值fill

键为和color分配相同的颜色 ( < color value >) 。由于键是按照写入顺序进行评估的,因此您看到的结果是很正常的。drawfill

(无默认)是什么意思?

TikZ 的大部分常用键可以通过两种方式调用:

  • 明确地例如,明确给出了适用的\draw[color=red](0,0)rectangle(1,1);值,这里是键;keyredcolor

  • 隐含地使用\draw[red](0,0)rectangle(1,1);,这里 TikZ 识别颜色值并将其分配给color键。不强制说明key颜色值适用于哪个。TikZ 隐式地将颜色值分配给color键。

另一方面,如果你写\draw[color],就会出现错误,因为没有指定颜色值。没有默认颜色。我引用了错误:

包 pgfkeys 错误:键‘/tikz/color’需要一个值。


具有默认值的键的示例:

有时可以不给键赋值,在这种情况下它采用默认值:

例如,double键的默认值为white。您可以省略颜色并写入

\draw[double](0,-1)--(2,-1);

这与\draw[double=white](0,-1)--(2,-1);

双键

但可以指定默认值以外的颜色值,例如这里是青色

\draw[double=cyan](0,-2)--(2,-2);

双青色

pgfkeys

选项由key=value系统提供,称为pgfkeys这些选项由 3.1 版手册第 946 页开始描述86 密钥管理)。

  1. 第一的key左边的单词始终是(选项)的名称,
  2. 第二word 始终是选项的名称value

因此:

  • color=red,关键是color,价值是red
  • draw=blue,关键是draw,价值是blue

手册中对颜色词的指定不同:

/tikz/color=< color name >

  • 该密钥名为color
  • 手册上写明< color name >了值(红色、蓝色等)。

所以,是的,我们必须小心谨慎,明确我们在谈论什么。我们通常谈论“颜色”,但经常忘记明确它是 thekey还是 its value。这会导致混淆。

我修正了这个答案,每次都指定它是键还是它的值。我希望答案现在更清楚了。

答案2

您使用了错误的键。color设置fill和。draw也就是说text,它只会设置颜色,而不会应用它/操作。

  • \draw[color=red]将绘制一个红框(等于\draw[draw=red]
  • \draw[color=red,fill]将绘制一个用红色填充的红框(等于\draw[fill=red]\filldraw[red]
  • \draw[color=red,fill,draw=none]将绘制红色填充但没有框架(等于\fill[red]
  • \draw[color=red] node {Test};将绘制一个带有红色文本的节点(等于\draw[text=red] node {Test};

TLDR:用于draw改变框架。

\documentclass{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
  \draw[color=red,very thick] (0,0) rectangle (1,1);
  \draw[color=red,very thick,fill=blue] (2,0) rectangle (3,1);
  \draw[very thick,fill=blue,draw=red] (4,0) rectangle (5,1);
\end{tikzpicture}
\end{document}

相关内容