如何改变电路中节点标签的位置?

如何改变电路中节点标签的位置?

我一直在努力把这些字母a、bC在这个电路上,就在它们的右侧,而不是上方或下方。问题是,如果我将代码更改为位于侧面,它将放置在电线上,就像这样:

在此处输入图片描述

这是我正在使用的代码:


\documentclass[border=10pt]{standalone}

\usepackage{tikz, tkz-euclide}

\usepackage[american]{circuitikz}

\begin{document}

    \begin{tikzpicture}
    
    \draw (0,0) to[sV] (0,-2) to[short, -o] node[right]{$c$} (3,-2);
    \draw (0,0) to[sV] (0,2) to[short, -o] node[right]{$a$} (3,2);
    \draw (0,0) to[sV, -o] node[right]{$b$} (3,0);
    
    
    \end{tikzpicture}

\end{document}

我不知道还能做什么,希望得到一点帮助;)

答案1

您正在使用类似这样的内容:

(coord1) to[...] node[...] {contents} (coord2)

这将从 到 绘制一个路径组件,(coord1)并将(coord2)指定节点放置在此子路径的某个位置,默认情况下位于pos=0.5(即中间;midway是 的同义词pos=0.5)。通常,pos=0表示“子路径的起点”,pos=1表示“子路径的终点”,其他值是插值的。

在您的示例中,positionpos=0产生了让我有些惊讶的结果,但它使用了选项中的sVshort键,这当然解释了这一点 — 抱歉,我没有使用过。话虽如此,在所有三种情况下,这似乎是您要寻找的位置:circuitikztocircuitikzpos=1

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage[american]{circuitikz}

\begin{document}
\begin{tikzpicture}
\draw (0,0) to[sV] (0,-2) to[short, -o] node[pos=1, right]{$c$} (3,-2);
\draw (0,0) to[sV] (0,2) to[short, -o] node[pos=1, right]{$a$} (3,2);
\draw (0,0) to[sV, -o] node[pos=1, right]{$b$} (3,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

为了获得更好的输出,我建议使用来微调标签位置,以outer xsep=0.7ex调整水平位置,并anchor=mid west为了更好地垂直定位,特别是b,在我看来:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage[american]{circuitikz}

\begin{document}
\begin{tikzpicture}[outer xsep=0.7ex]
\draw (0,0) to[sV] (0,-2) to[short, -o] node[pos=1, anchor=mid west]{$c$} (3,-2);
\draw (0,0) to[sV] (0,2) to[short, -o] node[pos=1, anchor=mid west]{$a$} (3,2);
\draw (0,0) to[sV, -o] node[pos=1, anchor=mid west]{$b$} (3,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这是其中一种方法。我使用\coordinate来表示右下角的连接器,只是为了稍微减少噪音。最后,我\node使用 选项将 放置在所述坐标处,并为其添加一个不同的标签[yshift]。括号()引用坐标并防止引入新的坐标。当然,您可以在此处使用数学模式:$c-label$

您也可以直接操作数值,这更多取决于个人喜好。您还可以使用\usetikzlibrary{positioning},它允许相对定位。

简而言之,您可以将任何 tikz 命令与此电路库一起使用。请参阅 pgf 手册以了解更多选择。

在此处输入图片描述

\documentclass[border=10pt]{standalone}
\usepackage{tikz}%, tkz-euclide}% not needed for this purpose
\usepackage[american]{circuitikz}

\begin{document}

    \begin{tikzpicture}
    
    \draw (0,0) to[sV] (0,-2) to[short, -o] node[right]{$c$} (3,-2);
    \draw (0,0) to[sV] (0,2) to[short, -o] node[right]{$a$} (3,2);
    \draw (0,0) to[sV, -o] node[right]{$b$} (3,0);
    
    
    \end{tikzpicture}


\tikz {% one way to do it
    \coordinate (c) at (3, -2);% coordinates name is "c"
    
    \draw (0,0) to[sV] (0,-2) to[short, -o]  (c);%(c) references coordinate c
    \node [yshift=3mm] at (c) {c-label};% put a lable above, named "c-label"
}


\end{document}

相关内容