我一直在尝试使用三端线性稳压器绘制线性电源的原理图。如您所见,我已成功使用稳压器。大致如下:
但是,我使用的代码似乎不必要地复杂,我不禁觉得一定有更好的方法。这是一个最小的例子,请看一下:
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
\draw (0,0) -- (1,0) ++(1,0) node[rectangle,draw,
minimum width=2cm,minimum height=1.2cm,
label={[below]north:LM317},
label={[right]west:in},
label={[above]south:adj},
label={[left]east:out}]{} ++(1,0) -- (4,0);
\end{circuitikz}
\end{document}
特别要注意计算运算符坐标的笨拙方式++
:为了使矩形的左侧与线相邻,我们必须将矩形宽度的一半向右移动。右侧也同样如此。
我理想中想要的是一个可以像在 circuitikz 中使用所有其他图形元素一样使用的东西,并带有适当的锚点。我查看了 circuitikz 手册,但没有找到任何看起来像我想要的图形元素,我也查看了 TikZ 手册,但不知道在哪里可以找到。有人能帮忙吗?
编辑添加了最小完整示例
答案1
如果你想重复使用该电路,我建议看一下手册关于muxdemuxes
(例如这里)以及子电路(例如这里)。
我的看法是这样的(请参阅代码片段中的注释):
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
% bare shape for the object.
\tikzset{regulatorshape/.style={muxdemux,
muxdemux def={
Lh=2, Rh=2, w=4,
NL=1,NR=1,NT=0,NB=1,
}
}}
% se manual section 3.4 "subcircuits"
\ctikzsubcircuitdef{lmTOS}{% TOS=three one seven, no numbers allowed here
in, out, adj, center}{% anchors
coordinate (#1-center)
node [regulatorshape, anchor=center](#1-shape){} % main node
% labels
(#1-shape.north) node[font=\ttfamily\small, below]{LM317}
(#1-shape.blpin 1) node[font=\ttfamily\small, right]{in}
(#1-shape.brpin 1) node[font=\ttfamily\small, left]{out}
(#1-shape.bbpin 1) node[font=\ttfamily\small, above]{adj}
% anchors
(#1-shape.lpin 1) coordinate(#1-in)
(#1-shape.bpin 1) coordinate(#1-adj)
(#1-shape.rpin 1) coordinate(#1-out)
% we are leaving the "current" position at the output
}
\ctikzsubcircuitactivate{lmTOS}
\begin{tikzpicture}[]
\draw (0,0) -- ++(1,0) \lmTOS{myreg}{in} % position using anchor "-in"
-- ++(1,0); % this work because the subcircuit
% "end" position is -out
% otherwise you need
% ... \lmTOS{myref}{in} (myreg-out) -- ++(1,0)
\draw (myreg-adj) to[R] ++(0,-2) node[ground]{};
% you can acces the internal anchors too:
\draw [red, <-] (myreg-shape.brpin 1) -- ++(45:1);
\end{tikzpicture}
\end{document}