在 circuitikz 中使用垂直坐标

在 circuitikz 中使用垂直坐标

受到 Paul Gessler 的回答的启发这个问题,我决定尝试一下,并调整下图以使用垂直坐标:

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
    \begin{circuitikz}
        \draw
        (0,0) node[op amp] (opamp) {}
        (opamp.-) node(node1)[circ]{}
        (node1) -- ++(0,1.5) to[R] ++(1.5,0) node(node2){} to[short] ++(1.5,0) to[R] ++(0,-2)
        ;
    \end{circuitikz}
\end{document}

期望输出

请注意,最后的坐标(0,-2)是通过反复试验找到的。因此,我尝试使用垂直坐标以避免猜测它们。以下是我写的。我只是定义了坐标foo并遵循了 Paul 的回答。本来希望得到完全相同的结果,但不幸的是它不符合要求:

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
    \begin{circuitikz}
        \draw
        (0,0) node[op amp] (opamp) {}
        (opamp.-) node(node1)[circ]{}
        (node1) -- ++(0,1.5) to[R] ++(1.5,0) node(node2){} to[short] ++(1.5,0) coordinate (foo) to[R] (foo |- (opamp.out)) to[short] (opamp.out)
        ;
    \end{circuitikz}
\end{document}

Package pgf Error: No shape named (opamp is known. ...dinate (leftC) to[R] (leftC |- (opamp.out)(x3)

Package tikz Error: Giving up on this path. Did you forget a semicolon?. ...inate (leftC) to[R] (leftC |- (opamp.out))

什么原因导致了这个错误?

答案1

如果你要指定基于和的垂直坐标(a)(b)则语法为

  • (a |- b)

或者

  • (a -| b)

如果你还在坐标周围添加括号,则会出现错误。也就是说

  • (a |- (b))

将不起作用,因为 TikZ 将寻找名为(b而不是 的形状或坐标b

因此,可以通过省略额外的括号来更正您的代码:

\documentclass[tikz,border=5pt]{standalone}
\usepackage{circuitikz}
\begin{document}
  \begin{circuitikz}
    \draw
    (0,0) node[op amp] (opamp) {} (opamp.-) node(node1)[circ]{} (node1) -- ++(0,1.5) to[R] ++(1.5,0) node(node2){} to[short] ++(1.5,0) coordinate (foo) to[R] (foo |- opamp.out) to[short] (opamp.out) ;
  \end{circuitikz}
\end{document}

修正编译结果

相关内容