因此,我在放置节点时使用极坐标:
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, calc}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=2cm, >= Stealth, auto, shorten >= 1pt]
\node[state](low){$L$};
\node[state] at ($(low)+(60:2cm)$)(med) {$M$};
\node[state] at ($(med)+(-60:2cm)$)(high) {$H$};
\end{tikzpicture}
\end{figure}
\end{document}
输出:
与我所做的相比,构成等边三角形顶点的节点间距不够[above right = of *node*
。如何修复此问题?
答案1
放置节点的方式固定了节点中心之间的距离。另一方面,库positioning
设置了节点边界之间的距离。所以我们必须添加两倍的节点半径。你可以在 中查找tikzlibraryautomata.code.tex
,其中可以了解到minimum width
节点的state
是2.5em
。因此,
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, calc}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=2cm, >= Stealth, auto, shorten >= 1pt]
\node[state](low){$L$};
\node[state] at ($(low)+(60:2cm+2.5em)$)(med) {$M$};
\node[state] at ($(med)+(-60:2cm+2.5em)$)(high) {$H$};
\end{tikzpicture}
\end{figure}
\end{document}
当然,这里不一定需要 calc。第三个节点可以只设置right of
第一个节点,对于第二个节点,我们可以执行定位操作,但将其推广到任意角度。
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{automata, positioning}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=2cm]
\node[state](low){$L$};
\path (low.60) + (60:2cm) node[anchor=-120,state] (med) {$M$};
\path node[state,right=of low] (high) {$H$};
\end{tikzpicture}
\end{figure}
\end{document}
这也让我们引入了一种风格
angled=<angle> and <distance> of <node>
可以用作
\documentclass[12pt]{article}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage{tikz}
\usetikzlibrary{automata, positioning,calc}
\tikzset{angled/.style args={#1 and #2 of #3}{%
at={($(#3.#1)+(#1:#2)$)},anchor={#1+180}}}
\begin{document}
\begin{figure}[H]\centering
\begin{tikzpicture}[node distance=2cm]
\node[state](low){$L$};
\node[angled=60 and 2cm of low,state] (med) {$M$};
\node[state,right=of low] (high) {$H$};
\end{tikzpicture}
\end{figure}
\end{document}
考虑到这一点,至少我会发现这种风格很有用。原则上,人们可以考虑编写这种风格,而无需calc
将其添加到positioning
...