我想使用单个路径内的节点,以便我可以使用++(x,y)
符号将一个节点相对于另一个节点定位。
但是,我想要用来设置节点样式的范围仅设置路径样式(因此似乎什么也不做,因为路径是“不可见的”)。
在路径内(节点周围)添加范围不起作用。
那么,有没有办法将范围应用于路径内的节点?
非常感谢您的帮助。
例子:
\documentclass{article}
\usepackage{tikz}
\tikzset{
every node/.style = {
shape = rectangle,
minimum height = 20mm,
minimum width = 20mm,
line width = .5mm},
mystyle/.style = {draw = red!50!black!50}
}
\begin{document}
\begin{tikzpicture}
% These two nodes have the correct style,
% but I have to specify the style for every node
% (I'll have around 100 nodes in total, hence the
% desire to use a scope for the style).
\path (0,6)
node(nodeOne) [mystyle] {Node One}
++(5,0) node(nodeTwo) [mystyle] {Node Two};
% These two nodes are in the ``mystyle'' scope,
% but the style is not applied to the nodes
% as they reside inside a path.
\begin{scope}[mystyle]
\path (0,0)
node(nodeThree) {Node Three}
++(5,0) node(nodeFour) {Node Four};
\end{scope}
\end{tikzpicture}
\end{document}
答案1
路径或范围[mystyle]
仅适用于路径(如果它们被画出来),而且由于您只使用了\path
而不是某种线条(--
,to
,...),所以没有太多东西可画。
首先,path
您可以添加every node/.append style=mystyle
它的选项,以便路径的节点获得除序言中mystyle
全局设置的样式之外的附加样式。every node/.style
\tikzset
\path[every node/.append style=mystyle] (0,6) node(nodeOne) {Node One}
++(5,0) node(nodeTwo) {Node Two};
这也适用于范围:
\begin{scope}[every node/.append style=mystyle]
\path (0,0) node(nodeThree) {Node Three}
++(5,0) node(nodeFour) {Node Four};
\end{scope}
如果您只想将节点相对于彼此放置,您可以考虑(使用positioning
TikZ 库(例如\usetikzlibary{positioning}
)。
\begin{scope}[every node/.append style=mystyle, on grid]
\node (nodeOne) at (0,6) {node One};
\node[right=5cm of nodeOne] (nodeTwo) {node Two};
\end{scope}
请注意on grid
确保相对定位是从中心到中心,而不是在节点的外边界之间。“高级放置选项”在 16.5.3 节中有详细说明PGF/TikZ
手动的。
对于简单的放置情况,设置一个就足够了node distance
:
\begin{scope}[every node/.append style=mystyle, node distance=5cm, on grid]
\node (nodeOne) at (0,6) {node One};
\node[right=of nodeOne] (nodeTwo) {node Two};
\end{scope}
答案2
我以前遇到过类似的事情......我认为初始每个节点/.style = {options} 都有效,无论后续\begin{scope} .... \end{scope}
环境如何。
尝试在相关范围内使用另一个every node/.style = { options }
,将其本地应用于您想要更改节点生成方式的地方。