我想使用“right of”对齐三列,并使用 \phantom{} 将项目放置在空位置旁边。但是,该元素似乎发生了偏移。在这里使用 \phantom 有什么问题?我想我应该使用类似 \phantom[node] 的东西。有类似的东西吗?( \phantom{\node (X2M) [ right of=X2] {$L_3$};} 给出相同的结果。
好的,我找到了一个近似解决方案,但我修改了问题。从“节点距离”开始,我猜测诸如中心或最左边的位置等会对齐,因此我可以像使用网格一样放置我的对象。我错了吗?
\documentclass[english,14pt]{memoir}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=1.5cm,
semithick]
\tikzstyle{every state}=[scale=0.75]
\node[state] (L3) {$L_3$};
\node[state] (L4) [ below of=L3] {$L_3$};
\node[state] (X1) [ left of=L3] {$X_1$};
\node (XM) [ below of=X1] {};
\node[state] (X2) [ below of=XM] {$X_2$};
\node (X2M) [ right of=X2] {\phantom{$L_3$}};
\node (C3) [ right of=L3] {$Cycle\ 3$};
\node (C4) [ right of=L4] {$Cycle\ 4$};
\node (C5) [ right of=X2M] {$Cycle\ 5$};
\path
(L3) edge [bend right] (X2)
(L4) edge (X2);
\end{tikzpicture}
\end{document}
答案1
请尝试以下操作:
\documentclass[english,14pt]{memoir}
\usepackage{tikz}
\usetikzlibrary{arrows,automata,positioning}
\begin{document}
\begin{tikzpicture}[->,>=stealth', semithick, shorten >=1pt,
auto,
node distance = 1.5cm and 1.5cm,
every state/.style = {scale=0.75}
]
% middle column
\node[state] (L3) {$L_3$};
\node[state] (L4) [below=of L3] {$L_3$};
% left column
\node[state] (X1) [left= of L3] {$X_1$};
\node[state] (X2) [below left=of L4] {$X_2$};
% labels
\node (C3) [right=of L3] {\emph{Cycl} 3};
\node (C4) [right=of L4] {\emph{Cycl} 4};
\node (C5) [right=of L3.east |- X2] {\emph{Cycl} 5};
%
\path (L3) edge [bend right] (X2)
(L4) edge (X2);
\end{tikzpicture}
\end{document}
我添加了 tikzlibrary positioning
,并通过它帮助消除了对幻影节点的需求。通过正确定义,node distance
所有节点都可以放置在您想要的位置。同样,在右列中,与定义的坐标对齐,L3.east |- X2
并且再次不需要“幻影”节点。
答案2
对不起,打扰你。
\phantom{\node[state] (X2M) [ 右侧=X2] {$L_3$};}
作品。