我对 tikz 还算是个新手,尤其是circuitikz
目前我感兴趣的软件包。我刚刚用运算放大器创建了一个简单电路图,不过我认为要得到一个漂亮的最终电路图,有些事情我还没能做到。
我尤其想请求您帮助:
避免输出处的填充点与上线之间的间隙
能够将 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
有一种可能性是:
使用 a
\coordinate
而不是\node
;代码中的间隙来自与节点相关的inner sep
/outer sep
。将节点命名
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}
附注:为了正确排版你的单位,我建议你使用siunitx
siunitx
通过包选项加载的包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
实现这一点,比如使用语法。但如果只是为了一个单一的小图,我认为没有必要。