我需要绘制电路中的多级电流,这涉及 MOSFET,电流通过其通道或体二极管。当电流通过通道时,我希望用实线绘制 FET,用虚线绘制体二极管,反之亦然。
我知道我可以分别绘制 MOSFET 和二极管,但我认为这会花费更多时间。有没有办法让标签bodydiode
拥有自己的线条样式?
说清楚一点,我想要这样的东西:
但是,上面的图片是用单独的组件制作的。我想要这种组件:
用
\documentclass[12pt]{report}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
\draw (0,0) node (mosfet1) [nigfete,anchor=D,bodydiode] {$Q_1$};
\end{circuitikz}
\end{document}
答案1
(更新2022 年 9 月 9 日)我为下一个版本 1.5.4 添加了体二极管样式选项。您可以在此处预览:https://github.com/circuitikz/circuitikz/pull/651。
对于 <1.5.4 的版本,您可以使用以下代码来修补体二极管绘图代码:
\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikz}
\usepackage{etoolbox}
\def\bodydiodehook{\relax}
\tikzset{bodydiode hook/.store in=\bodydiodehook}
\patchcmd{\drawbodydiode}
{\pgfscope}{\bodydiodehook\pgfscope}
{}{\fail}
\begin{document}
\begin{tikzpicture}[]
\draw (0,0) node (mosfet1) [nigfete,anchor=D,bodydiode] {$Q_1$};
\draw[densely dashed] (2,0) node (mosfet1) [nigfete,anchor=D,bodydiode] {$Q_2$};
\draw (4,0) node (mosfet1) [nigfete,anchor=D,bodydiode] {$Q_A$};
\draw (0,-2) node (mosfet1) [nigfete,anchor=D,bodydiode, bodydiode hook={\pgfsetdash{{1pt}{1pt}}{0pt}}] {$Q_3$};
\draw[densely dashed] (2,-2) node (mosfet1) [nigfete,anchor=D,bodydiode, bodydiode hook={\pgfsetdash{}{0pt}}] {$Q_4$};
\draw (4,-2) node (mosfet1) [nigfete,anchor=D,bodydiode] {$Q_B$};
\path (5,0);% for the bounding box
\end{tikzpicture}
\end{document}