绘制矩形时,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}
答案1
是的,这是一个功能,因为这个键重写了,和键color
上的颜色值,我引用了第 168 页的 3.1 手册(draw
fill
text
15.2 指定颜色):
/tikz/color=<color name> (no default)
此选项设置当前范围内用于填充、绘图和文本的颜色。
TikZ 允许您分别更改用 绘制的线条的颜色值draw
和用 绘制的着色的颜色值fill
。
键为和color
分配相同的颜色 ( < color value >
) 。由于键是按照写入顺序进行评估的,因此您看到的结果是很正常的。draw
fill
(无默认)是什么意思?
TikZ 的大部分常用键可以通过两种方式调用:
明确地例如,明确给出了适用的
\draw[color=red](0,0)rectangle(1,1);
值,这里是键;key
red
color
隐含地使用
\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 密钥管理)。
- 这第一的
key
左边的单词始终是(选项)的名称, - 这第二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}