我有以下连接到两个电阻器的电压源代码。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (0,0) to[V=$U$] ++(0,2) to[R=$R_i$, -*] ++(2,0) to[short, i=$I$] ++(1,0) to[R=$R_u$] ++(0,-2) to[short, -*] ++(-1,0) to[short] (0,0);
\end{circuitikz}
\end{document}
创建以下示意图。
如您所见,起点和终点(左下角)没有正确连接。我尝试使用line join=miter
但没有成功。如何正确操作?
答案1
以下是其他几种变体:
\documentclass[multi=circuitikz]{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (0,0) to[V=$U$,name=U] ++(0,2)
to[R=$R_i$, -*] ++(2,0)
to[short, i=$I$] ++(1,0)
to[R=$R_u$] ++(0,-2)
to[short, -*] ++(-1,0)
to[short] (0,0)
to[short] (U.west);
\end{circuitikz}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (2,0) to[short,*-] (0,0)
to[V=$U$] ++(0,2)
to[R=$R_i$, -*] ++(2,0)
to[short, i=$I$] ++(1,0)
to[R=$R_u$] ++(0,-2)
to[short,-*] (2,0);
\end{circuitikz}
\end{document}
答案2
我的第一反应是告诉你使用,cycle
但这不起作用,如手册第 5.10 节所述circuitikz
。原因是,如下面进一步解释的那样,路径被分解为子路径,因此您需要添加-.
。在路径没有被分成子路径的情况下,您应该使用cycle
,但这在这里不起作用,所以你需要“帮助” Ti钾Z 做正确的事。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (0,0) to[V=$U$] ++(0,2) to[R=$R_i$, -*] ++(2,0)
to[short, i=$I$] ++(1,0) to[R=$R_u$] ++(0,-2) to[short, -*] ++(-1,0)
to[short,-.] (0,0);
\end{circuitikz}
\end{document}
已添加注释:由于这引起了一些困惑,我想补充一些信息。显而易见的困惑是为什么cycle
不起作用。这是因为当使用某些键时,行为会发生to
变化circuitikz
。考虑 MWE
\documentclass[border=3.14mm]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}[line width=1pt]
\draw[line join=miter] (0,0) to[->] ++(0,2) to ++(2,0) -- cycle;
\end{tikzpicture}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (0,0) to[-*] ++(0,2) to ++(2,0) -- cycle;
\end{circuitikz}
\begin{circuitikz}[line width=1pt]
\draw[line join=miter] (0,0) to[short,-*] ++(0,2) to ++(2,0) -- cycle;
\end{circuitikz}
\end{document}
正如您所看到的,cycle
最后一个示例中的键“不起作用”。另一方面,->
前两个示例中的箭头指令无效。这是因为to
与short
(或其他circuitikz
指令)相关的路径被分解了。为了更好地理解这些内容,您可能需要查看pgfcircpath.tex
,其中进行了部分定义。(注释:也可以在那里找到
\ifx\pgf@temp\pgf@circ@temp % if it has not a name
\pgfmathrandominteger{\pgf@circ@rand}{1000}{9999}
\ctikzset{bipole/name = #2\pgf@circ@rand} % create it
\fi
我猜在某个时刻,有人可能会报告一些奇怪的行为,因为意外引用了错误的路径,但也许我在这里遗漏了一些东西。)在这个块附近,你会找到路径分解例程。总之,最简单的解决方法是查看手册的第 5.10 节circuitikz
,其中建议使用-.
,使用@Kpym 建议的方法,或者一些技巧John Kormylo 的回答(顺序是随机的,在这里我不会对一个提案进行排名)。