我有一台投影机,上面有很多图形。问题是,现在我想要的东西需要的设置与之前定义的设置相矛盾。
我有: - 一个包含所有框架的主文件 - 一个命令文件(命令定义和包加载) - 每个图一个文件(位于\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!下面有大量相关讨论此主题无论如何,Ti钾Z 的行为与 LaTeX 非常相似(当然这并不奇怪,因为它基于 LaTeX),因为定义是局部的,除非你明确将它们设置为全局的。因此,如果你定义
\def\XYZ{123}
在组内,它只会在组内为人所知。(你应该避免使用\def
in 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
但我个人不建议这样做)。走私您可能在某一时刻对此感兴趣。
所有这些陈述都适用于 Ti钾Z 后代,如forest
( \forestset
)、pgfplots
( \pgfplotsset
)、smartdiagram
( \smartdiagramset
) 等。它们都将内容放在自己的目录中,这让我们回到这次讨论。