我正在创建一个可自定义的 TikZ 图片,我想启用或禁用其中的某些部分(例如某些标签)。有没有一种样式可以传递给节点、图片、路径等,但又不明显地绘制出来?基本上就像draw=none
,只不过它还应该扩展到text
,fill
等等。
第一次尝试是\tikzset{none/.style={draw=none,fill=none,text opacity=0}}
,但我不相信对此没有“适当的解决方案”。也许有,我只是不知道要寻找哪种风格。
例如看看我的第一次尝试如何使用:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[bla/.pic={\node {A};},none/.style={draw=none,fill=none,text opacity=0}]
\pic at (0,0) {bla};
\pic[none] at (2,0) {bla};
\node at (0,2) {B};
\node[none] at (2,2) {B};
\draw (0,4) -- node[right] {C} (0,5);
\draw[none] (0,4) -- node[right] {C} (0,5);
\end{tikzpicture}
\end{document}
编辑:正如 Percusse 指出的那样,让 TeX 真正不画所以也许更容易问如何无形地绘制它。
答案1
我会定义一种风格,任何一个在所有需要此功能的构造中使用它或者确定要关闭可见和不可见构造的图表部分的范围:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[bla/.pic={\node {A};},
none/.style={text opacity=0,opacity=0,fill opacity=0},
my path/.style={},
%<line 1>%my path/.style={every path/.style={none},none},
%<line 2>%my path
]
\pic at (0,0) {bla};
\pic at (2,0) {bla};
\begin{scope}[line width=8pt,draw=red,my path]
\node (SB1) at (0,2) {SB1};
\node (SB2) at (2,2) {SB2};
\draw (SB1) -- (SB2);
\end{scope}
\draw (0,4) -- node[right] (C1) {C1} (0,5);
\draw (2,4) -- node[right] (C2) {C2} (2,5);
\draw[my path] (SB1) -- (SB2);
\draw[red,line width=2pt] (current bounding box.north east) -- (current bounding box.west);
\fill[fill=blue!30,my path] (current bounding box.north east) rectangle (current bounding box.west);
\end{tikzpicture}
\end{document}
通过取消注释,%<line 1>%
您可以将样式应用到您想要的位置。通过取消注释,%<line 2>%
您可以更广泛地应用它。