我有这张 Tikz 图片,我想增加节点之间的水平距离,同时保持垂直距离不变。我知道如何通过使用坐标手动放置节点来实现这一点,但如果可以避免,我宁愿不这样做。
代码如下:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
[align=center,node distance=2cm]
\node[label=above:A] (A)
{(1)};
\node[label=above:B1] (B1) [above right of=A]
{($m+1$)};
\node[label=above:B2] (B2) [below right of=A]
{($m+1$)};
\node[label=above:C] (C) [below right of=B1]
{($2m-1$)};
\end{tikzpicture}
\end{document}
任何帮助均感激不尽。
答案1
您可以使用 tikz 库分别指定相对x
和位置y
positioning
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
[align=center,node distance=2cm] %< no need of this global node separation
\node[label=above:A] (A)
{(1)};
\node[label=above:B1] (B1) [above right=0.7cm and 4cm of A]
{($m+1$)};
\node[label=above:B2] (B2) [below right=0.7cm and 4cm of A]
{($m+1$)};
\node[label=above:C] (C) [below right=0.7cm and 4cm of B1]
{($2m-1$)};
\end{tikzpicture}
\end{document}
答案2
第一种方法使用positioning
和,node distance=2cm and 4cm]
但我不喜欢它。
/tikz/node distance=⟨shifting part⟩(无默认值,最初为 1cm 和 1cm)当且仅当存在 ⟨of-part⟩ 但不存在 ⟨shifting part⟩ 时,此键的值才用作 ⟨shifting part⟩。
和
当 ⟨移动部分⟩ 为 ⟨数字或维度⟩ 和 ⟨数字或维度⟩ 的形式时,它(本质上)具有将节点垂直向上移动第一个 ⟨数字或维度⟩ 的效果,并向左移动第二个 ⟨数字或维度⟩ 的效果。
我认为先垂直移动有点奇怪,我更喜欢自己手动移动。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
[align=center,node distance=2cm and 4cm]
\node[label=above:A] (A) {(1)};
\node[label=above:B1] (B1) [above right= of A] {($m+1$)};
\node[label=above:B2] (B2) [below right= of A] {($m+1$)};
\node[label=above:C] (C) [below right= of B1] {($2m-1$)};
\end{tikzpicture}
\end{document}
我更喜欢+(2, 2)
它++(2, 2)
,above right
它更灵活。但有很多可能性也很好!!!
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} [align=center]
\path (0, 0) node[label=above:A] (A) {(1)}
+(2, 2) node[label=above:B1] (B1) {($m+1$)}
++(2,-2) node[label=above:B2] (B2) {($m+1$)}
++(2, 2) node[label=above:C] (C) {($2m-1$)};
\end{tikzpicture}
\begin{tikzpicture} [align=center,xscale=2] % or x=2cm
\path (0, 0) node[label=above:A] (A) {(1)}
+(2, 2) node[label=above:B1] (B1) {($m+1$)}
++(2,-2) node[label=above:B2] (B2) {($m+1$)}
++(2, 2) node[label=above:C] (C) {($2m-1$)};
\end{tikzpicture}
\end{document}
答案3
正如 Harish 提到的,您可以使用该positioning
库并调整水平和垂直位置。
另一种允许您指定水平和垂直距离的方法是使用矩阵。通过这种方式,您可以设置行和列的距离。代码如下:
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[align=center]
\matrix[matrix of nodes,row sep=0.5cm,column sep=2cm]{
&|[label=above:B1]| ($m+1$)&\\
|[label=above:A]| (1)&&|[label=above:C]| ($2m-1$)\\
&|[label=above:B2]| ($m+1$)&\\
};
\end{tikzpicture}
\end{document}
结果是
答案4
我在尝试修复状态转换图中节点之间的节点间距离时遇到了这个问题。
这教程在这里\tikzset
给出了 STG 的最小示例,并在源代码的序言中建议了以下配置,
\tikzset{
->, % makes the edges directed
>=stealth', % makes the arrow heads bold
node distance=3cm, % specifies the minimum distance between two nodes. Change if necessary.
every state/.style={thick, fill=gray!10}, % sets the properties for each ’state’ node
initial text=$ $, % sets the text that appears on the start arrow
}
这对我来说很有效。