关于 circuitkz 的简单问题

关于 circuitkz 的简单问题

我对 tikz 还算是个新手,尤其是circuitikz目前我感兴趣的软件包。我刚刚用运算放大器创建了一个简单电路图,不过我认为要得到一个漂亮的最终电路图,有些事情我还没能做到。

电路

我尤其想请求您帮助:

  1. 避免输出处的填充点与上线之间的间隙

  2. 能够将 gnd 符号对齐到图的底部

如果您对如何使我的乳胶代码更简单,更漂亮或总而言之更好有任何其他建议,我将非常感激。


\documentclass[a4paper]{article}
\usepackage{circuitikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{figure}
\centering
\begin{circuitikz}
\draw (0,0) node[op amp] (oa) {};
\node (o) [right=0.5 of oa.out] {};
\draw (oa.-) |- (-1,2) -| (o) node[right] {$V_{\rm{out}}$};
\draw (oa.out) to[short] (o) to[R, l=$R_L$, *-] ++(0,-2) node[ground] {} ++(0,-2);
\draw (oa.+) to[short] ++(-0.5,0) to[sV, l=$1\,\rm{V}$] node[ground] {} ++(0,-2);
\end{circuitikz}
\end{figure}

\end{document}

答案1

有一种可能性是:

在此处输入图片描述

  1. 使用 a\coordinate而不是\node;代码中的间隙来自与节点相关的inner sep/ outer sep

  2. 将节点命名ground为右侧,然后可以使用垂直坐标系将ground节点放置在左侧,以便两者垂直对齐。

代码:

\documentclass[a4paper]{article}
\usepackage{circuitikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{figure}
\centering
\begin{circuitikz}
\draw 
  (0,0) node[op amp] (oa) {}
  coordinate[right=0.5 of oa.out] (o)
  (oa.-) |- (-1,2) -| (o) node[right] {$V_{\rm{out}}$}
  (oa.out) to[short] 
  (o) to[R, l=$R_L$, *-] 
  ++(0,-3) node[ground] (groundr) {}; 
\draw
  (oa.+|-groundr) node[ground] {}
  to[vco, l=$1\,\rm{V}$]  (oa.+);  
\end{circuitikz}
\end{figure}

\end{document}

附注:为了正确排版你的单位,我建议你使用siunitxsiunitx通过包选项加载的包circuitikz(感谢保罗·盖斯勒为了this tip):

\documentclass[a4paper]{article}
\usepackage[siunitx]{circuitikz}
\usetikzlibrary{positioning}

\begin{document}

\begin{figure}
\centering
\begin{circuitikz}
\draw 
  (0,0) node[op amp] (oa) {}
  coordinate[right=0.5 of oa.out] (o)
  (oa.-) |- (-1,2) -| (o) node[right] {$V_{\rm{out}}$}
  (oa.out) to[short] 
  (o) to[R, l=$R_L$, *-] 
  ++(0,-3) node[ground] (groundr) {}; 
\draw
  (oa.+|-groundr) node[ground] {}
  to[vco, l=1<\volt>]  (oa.+);  
\end{circuitikz}
\end{figure}

\end{document}

答案2

我将其改编为如下形式:

\documentclass[a4paper]{article}
\usepackage{circuitikz}
\usetikzlibrary{positioning,calc}
\begin{document}

\begin{figure}
\centering
\begin{circuitikz}
\draw (0,0) node[op amp] (oa) {};
\node (o) [right=0.5 of oa.out] {};
\draw (oa.-) |- (-1,2) -| ($(o) +(0,-2pt)$) node[right] {$V_{\rm{out}}$};
\draw (oa.out) to[short] (o) to[R, l=$R_L$, *-] ++(0,-2.2) node[ground] {} ++(0,-2);
\draw (oa.+) to[short] ++(-0.5,0) to[sV, l=$1\,\rm{V}$] node[ground] {} ++(0,-2);
\end{circuitikz}
\end{figure}

\end{document}

请注意,您现在需要该calc库。这基本上是一些手动微调。也许有人会有更好的解决方案来适应未来的位置变化。

有办法let实现这一点,比如使用语法。但如果只是为了一个单一的小图,我认为没有必要。

相关内容