我如何从 CircuiTikZ 或 TikZ 的电路库中获取这样的电池符号?我找不到任何具有较厚负极端子的符号。pst-circ
的\battery
命令正是我想要的,但我更愿意坚持使用 TikZ。
梅威瑟:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (0, 1) to [battery] (0, 0) {};
\end{tikzpicture}
\end{document}
答案1
也许我应该提到,你还必须将组件拆分为两条路径,以实现两种不同的线宽,
请注意,您可能可以重用\linethickness
而不是\tempwidth
。快速搜索 sty 文件只发现它在geometry
和gkpmac
(?) 中使用。此外,本地更改不会超出tikzpicture
。
\documentclass{standalone}
\usepackage{circuitikz}
\newlength{\tempwidth}
\makeatletter
\ctikzset{bipoles/battery/width/.initial=.1}
\pgfcircdeclarebipole{}{\ctikzvalof{bipoles/battery/height}}{battery}{\ctikzvalof{bipoles/battery/height}}{\ctikzvalof{bipoles/battery/width}}{
\pgf@circ@res@step = -\ctikzvalof{bipoles/battery/width}
\pgf@circ@Rlen \divide \pgf@circ@res@step by 2
\tempwidth=\pgfkeysvalueof{/tikz/circuitikz/bipoles/thickness}\pgfstartlinewidth
\pgfsetlinewidth{\tempwidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
\pgfusepath{draw}
\pgfsetlinewidth{2\tempwidth}
\pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{-\pgf@circ@res@step}{.5\pgf@circ@res@down}}
\pgfusepath{draw}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw (0, 1) to [battery] (0, 0) {};
\end{tikzpicture}
\end{document}