线连接不覆盖(斜接)

线连接不覆盖(斜接)

我有以下连接到两个电阻器的电压源代码。

\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,但这在这里不起作用,所以你需要“帮助” TiZ 做正确的事。

\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最后一个示例中的键“不起作用”。另一方面,->前两个示例中的箭头指令无效。这是因为toshort(或其他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 的回答(顺序是随机的,在这里我不会对一个提案进行排名)。

相关内容