距离不够大极坐标

距离不够大极坐标

因此,我在放置节点时使用极坐标:

\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节点的state2.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...

相关内容