Tikz 中图形的不同设置

Tikz 中图形的不同设置

我有一台投影机,上面有很多图形。问题是,现在我想要的东西需要的设置与之前定义的设置相矛盾。

我有: - 一个包含所有框架的主文件 - 一个命令文件(命令定义和包加载) - 每个图一个文件(位于\input主文件中)

特别是,在命令文件中我有

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\tikzset{node distance=5cm, every edge quotes/.append style={midway, below}}

到目前为止,这种方法效果很好,因为所有图形都具有相同的结构。

现在我创建了另一个具有以下设置的图形(决策树):

\usepackage{forest}
\tikzset{
decision/.style={rectangle, minimum height=3pt, minimum width=3pt, draw=black, fill=black, thick, inner sep=0pt},
chance/.style={circle, minimum width=3pt, draw=black, fill=black, thick, inner sep=0pt}
 }

\forestset{
 declare toks={optimality}{},
 declare toks={edge label below}{},
 }

这很可能是一个新手问题,但我想知道如何“加载”包并定义诸如\tikzset只有一个图形之类的东西。找不到解决方案。

在此先感谢您的帮助 !

答案1

欢迎使用 TeX-SE!下面有大量相关讨论此主题无论如何,TiZ 的行为与 LaTeX 非常相似(当然这并不奇怪,因为它基于 LaTeX),因为定义是局部的,除非你明确将它们设置为全局的。因此,如果你定义

\def\XYZ{123}

在组内,它只会在组内为人所知。(你应该避免使用\defin favor of,\newcommand但这是另一回事。)类似的语法是\tikzset在组中执行,或者更简单地将定义传递给 的选项tikzpicture。因此,参考你的问题,你可能想做类似的事情

\begin{tikzpicture}[decision/.style={rectangle, minimum height=3pt, minimum width=3pt, draw=black, fill=black, thick, inner sep=0pt}, chance/.style={circle, minimum width=3pt, draw=black, fill=black, thick, inner sep=0pt}] 
... 
\end{tikzpicture}

这样样式就被本地定义了。如果你在“外部”定义了同名的样式,它们将被本地覆盖,但仅限于此。

很多时候,人们会想或多或少地采用一种风格,但会有一些细微的局部变化。可以想象,你想拥有

 \tikzset{decision/.style={rectangle, minimum height=3pt, minimum width=3pt, draw=black, fill=black, thick, inner sep=0pt}}

在完整文档中,但您希望在本地进行更改inner sep。这可以通过以下方式实现

\begin{tikzpicture}[decision/.append style={inner sep=2pt}]
  ... 
\end{tikzpicture}

它只是inner sep通过覆盖来改变它,但其他一切都保持原样。

另一件可能有用的事情是,standalone如果文档是自行编译的,则在本地覆盖文档中的样式。然后你可以这样说

 \ifstandalone
  \tikzset{my style/.style={line width=3pt,-latex}}
 \fi

它定义了当独立文件单独编译时(但通过 包含在主文档中时不包含)的样式\includestandalone{subfile.tex}。这允许您(例如)普遍重新定义某些箭头的外观,但您仍然可以编译和测试较长文档的小片段。

请注意,在 LaTeX 中,你可以将定义设为全局的,例如

 \global\def\XYZ{123}

或者

 \gdef\XYZ{123}

或者

 \gxdef\XYZ{123}

在这种情况下,它们的作用是一样的(但总体上\xdef不同于\gdef它扩展了定义)。这对于 Ti 来说是不可能的Z(除非你非常勇敢,\globaldefs1但我个人不建议这样做)。走私您可能在某一时刻对此感兴趣。

所有这些陈述都适用于 TiZ 后代,如forest( \forestset)、pgfplots( \pgfplotsset)、smartdiagram( \smartdiagramset) 等。它们都将内容放在自己的目录中,这让我们回到这次讨论

相关内容