文档中所有 tikz 绘图的全局变量

文档中所有 tikz 绘图的全局变量

抱歉,这个问题听起来太基础了。我是 TikZ 的新手,但我有使用 LaTeX 的经验。

假设我在 LaTeX 文档中有多个 TikZ 语句,如下所示:

\tikz\draw[line width=2mm] (0,0.1) -- (4,0.1);\hfill\textsc{\Large This is a block}%
 \hfill \tikz\draw[line width=2mm] (0,0.1) -- (4,0.1);

我想定义变量(line_thickness例如line_width

line_thickness = 2mm
line_width = 4

我可以在所有这些语句中使用它,这样,如果我想更改 LaTeX 文档中绘图的参数,我只需在定义变量的地方更改它们的值即可。

在 TikZ 中可以做到这一点吗?我对一个相对通用的解决方案感兴趣,例如其中一些变量可能会指定颜色长度相对坐标等等,尽管解决我的上述特定问题的解决方案已经有很大帮助。

我已阅读这些帖子中的解决方案:

但我不知道如何将这些答案应用到我的问题上。

答案1

变量,或者更准确地说样式或者pgf是引入的一项非常强大的功能,用于帮助创建绘图框架。我在这里说,pgf因为这实际上是TikZ使用如此多的底层机制。请注意,这\tikzset相当于\pgfkeys{/tikz/.cd,#1}

如果您想要快速得到答案,请转到键/样式的范围

在我的回答中,很多人会看到手册中提到的东西。这是故意的。

我不会讨论树结构,也不会讨论处理程序引入的非常强大的功能,也不会讨论。代码就像这样 .styles控制用户界面。我不会区分.styles。代码因为它无助于关键结构的基本解释。

样式:代码执行的快捷方式

这是创建图片/路径时最常用的功能。每次添加路径时,都会添加thickcolor=redline width=2mm

A。风格实际上是单/多的缩写或​​缩写。代码键。这意味着。风格实际上什么也没做,只是本文中的参考资料起了作用。注意。风格也可以指任何其他。风格

因此,当您需要缩短或对路径执行多项操作时,通常会使用样式。

一个例子:

\tikzset{% 
    my box color red/.style={%
        draw,color=red!50!white,fill=black!20!red!50!white
    }
}

现在看看下面两条路径。它们实际上是完全相同的。

\path[my box color red] (0,0) -- (1,0);
\path[draw,color=red!50!white,fill=black!20!red!50!white] (0,.1) -- (1,.1);

请注意,指的my box color red是其他风格,drawcolor=red!50!whitefill=black!20!red!50!white

后来我们意识到,my box color <color>必须在几个地方使用几种不同的颜色。
一个解决方案可能是生成.styles然而,对于每种将要使用的颜色来说,这似乎是多余的。

每种风格都是独一无二的选修的争论。

这意味着我们可以定义。风格作为:

\tikzset{% 
    my box color/.style={%
        draw,color=#1!50!white,fill=black!20!#1!50!white
    }
}

现在看看下面的两条和两条路径。它们实际上完全相同,分别是两条和两条。

\path[my box color=red] (0,0) -- (1,0);
\path[draw,color=red!50!white,fill=black!20!red!50!white] (0,.1) -- (1,.1);

\path[my box color=blue] (0,0) -- (1,0);
\path[draw,color=blue!50!white,fill=black!20!blue!50!white] (0,.1) -- (1,.1);

我们之所以创建它my box color,是因为这样排版更加容易,而且我必须多次使用它。

样式及其默认值

如果使用上述样式,my box color则无法编译:

\path[my box color] (0,0) -- (1,0);

原因是该风格color有一个强制性的参数。你将会无意中了解到这一点,我就是这样的。因此上述代码永远无法编译。

然而,如果没有指定参数,您通常需要默认行为。

以这种向路径添加箭头的样式为例。它接受一个参数,即箭头在路径上的分数位置。

\tikzset{%
    ->-/.style={postaction={decorate},decoration={%
            markings,mark=at position #1 with {\arrow{stealth}}%
        }%
    }%
}

这似乎很明显,它应该始终将箭头放在0.5路径上的位置。但除非您->-=0.5每次需要使用它时都指定,否则它不会这样做。

同时使用。默认风格规范。

所以:

\tikzset{%
    ->-/.default=.5%
}

确保如果你这样做不是指定路径上的分数位置,它将像您指定的那样->-=0.5

\begin{tikzpicture}
  % Will have arrow at 0.5
  \draw[->-] (0,0) -- (1,0);
  % Will have arrow at 0.3
  \draw[->-=0.3] (0,.1) -- (1,.1);
\end{tikzpicture}

已使用款式的使用寿命

有时您会遇到定义几种样式但同时引用另一种样式的情况。

例子:

\tikzset{%
    my box/.style={thin,color=red},
    my thick box/.style={thick,color=blue}
}

\begin{tikzpicture}
  % line 1
  \draw[my box] (0,0) -- (1,0);
  % line 2
  \draw[my thick box] (0,.1) -- (1,.1);
  % line 3
  \draw[my thick box,my box] (0,.2) -- (1,.2);
  % line 4
  \draw[my box,my thick box] (0,.3) -- (1,.3);
  % line 5
  \draw[my box,my thick box,thin] (0,.3) -- (1,.3);
\end{tikzpicture}

在上图中,你可以看到 5 条线。前两条很明显分别是红色和蓝色。但是最后两条呢?

这个问题可以通过知道关键点来回答执行 连续。因此,这些线将具有以下属性:

  1. 红而薄
  2. 蓝色而浓厚
  3. 红而薄
  4. 蓝色而浓厚
  5. 蓝色又薄

因此,您不必担心按键重叠,只需知道最后看到的按键优先于其他按键。

键/样式的范围

正如您的问题所基本提到的,范围非常重要TikZ

您应该期望键/样式具有与普通组相同的范围TeX,即它们存在直到当前组结束。

全球

因此,如果您在序言中,或者不在嵌套组中的其他地方,请设置:

\tikzset{%
    line width=2mm
}

line width这将是一个全局设置的变量。它将对所有使用长度的图纸和形状生效。

全球图片

这是指仅存在于当前图片中的样式。

\begin{tikzpicture}[line width=10mm] % Picture Globally
  % will have width of 10mm
  \draw (0,0) -- (1,0);
\end{tikzpicture}

本地图片

仅在当前路径上采用的样式的声明。

\begin{tikzpicture}
  % will have width of 7mm
  \draw[line width=7mm] (0,0) -- (1,0);
\end{tikzpicture}

以下是它们在文档中不同位置的定义示例:

\tikzset{%
    line width=2mm
}

\begin{tikzpicture}[line width=10mm] % overwrites the above
  % will have width of 10mm
  \draw (0,0) -- (1,0);
  % will have width of 3mm, will override the above
  \draw[line width=3mm] (0,0) -- (1,0);
\end{tikzpicture}

\begin{tikzpicture}
  % will have width of 2mm, due to the globally defined style.
  \draw (0,0) -- (1,0);
  % will have width of 7mm, overrides the global set style.
  \draw[line width=7mm] (0,0) -- (1,0);
\end{tikzpicture}

相关内容