\vspace 在 tikzpicture 环境中不起作用

\vspace 在 tikzpicture 环境中不起作用

我正在尝试使用 tikz 创建一个图形,现在代码如下所示:

\begin{center}
\begin{tikzpicture}
\draw[black, very thick](0,0) circle (3cm);

\draw[black, thick](3,0)--(3.5,0);
\hspace{3.5cm}\text{$+\Omega$}\hspace{-3.5cm}

\draw[black, thick](-3.51,0)--(-4.01,0);
\hspace{-4.56cm}\text{$-\Omega$}\hspace{4.56cm}

\draw[black, thick](-1,-3)--(-1,-3.5);
\hspace{-1.1cm}\vspace{3.5cm}
\text{$0$}
\hspace{1.1cm}\vspace{-3.5cm}

\draw[black, thick](-1,3)--(-1,3.5);
\hspace{-1.1cm}\vspace{-3.5cm}
\text{$\infty$}

\end{tikzpicture}
\end{center}

这将创建下图:

在此处输入图片描述

如您所见, \vspace 没有执行任何操作,0 和 ∞ 仍然位于中心,我可以使用 \vspace 让它们上下移动吗?如果不行,我该怎么做才能将字符置于其设计位置?

答案1

您可以使用 foreach 循环,迭代迭代变量定义的标签\lab

该变量起什么作用\lab

此变量\lab依次获取列表的值{\infty, -\Omega, 0, +\Omega}。然后使用count=\n和 计算角度,对它们进行计数evaluate=\n as \angle using \n*90

  1. 首先,变量\lab将取值\infty,计数器\n初始化为1,角度\angle1*90=90°
  2. 然后\lab将取第二个值-\Omega\n计数器增加1,因此值是2;角度是2*90=180°
  3. ETC。

因此循环代码:

\foreach \lab[count=\n,evaluate=\n as \angle using \n*90] 
    in {\infty,-\Omega,0,+\Omega}
        {\draw (\angle:3cm)--(\angle:3.5cm) node[]{$\lab$};}

相当于以下代码:

\draw (90:3cm)--(90:3.5cm) node[]{$\infty$};
\draw (180:3cm)--(180:3.5cm) node[]{$-\Omega$};
\draw (270:3cm)--(270:3.5cm) node[]{$0$};
\draw (360:3cm)--(360:3.5cm) node[]{$+\Omega$};

shift={(\angle:3mm)}允许您移动标签,使其不与线重叠。对于此移动,我使用极坐标,这允许我偏移后者。

我使用 改进了代码anchors,这样可以将标签放置在尽可能靠近线条的位置。因此文本和线条之间的间距在任何地方都是相同的。

1. 不移位:标签与线重叠

截屏

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[black, very thick](0,0) circle (3cm);
\foreach \lab[count=\n,evaluate=\n as \angle using \n*90] 
    in {\infty,-\Omega,0,+\Omega}
        {\draw (\angle:3cm)--(\angle:3.5cm) node[]{$\lab$};}
\end{tikzpicture}
\end{document}

2. 移位:无重叠,但间距不好

截屏

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[black, very thick](0,0) circle (3cm);
\foreach \lab[count=\n,evaluate=\n as \angle using \n*90] 
    in {\infty,-\Omega,0,+\Omega}
        {\draw (\angle:3cm)--(\angle:3.5cm)
            node[shift={(\angle:3mm)}]{$\lab$};}
\end{tikzpicture}
\end{document}

3. 使用锚点:更好的间距

截屏

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[black, very thick](0,0) circle (3cm);
\foreach \lab[count=\n,evaluate=\n as \angle using \n*90] 
    in {\infty,-\Omega,0,+\Omega}
        {\draw (\angle:3cm)--(\angle:3.5cm)node [anchor=\angle-180]{$\lab$};}
\end{tikzpicture}
\end{document}

答案2

我真的很想知道你是从哪里得到这个方法的。

要在 TikZ 图表中添加文本,请使用nodes。它们可以附加到路径末尾,例如\draw (0,0) -- (1,1) node{foo};,也可以单独添加,例如\node at (1,1) {foo};。节点还可以采用定义其形状、颜色等以及位置的选项。例如,\draw (0,0) -- (1,1) node[above] {foo};将节点置于 上方(1,1)

绘制图表的一种方法如下:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[black, very thick](0,0) circle (3cm);

\draw[black, thick](3,0)--(3.5,0) node[right] {$+\Omega$};

\draw[black, thick](-3,0)--(-3.5,0) node[left] {$-\Omega$};

\draw[black, thick](0,-3)--(0,-3.5) node[below] {$0$};

\draw[black, thick](0,3)--(0,3.5) node[above] {$\infty$};

\end{tikzpicture}
\end{document}

相关内容