![我是否可以在不加载完整的 circuitikz 包的情况下使用 circuitikz 三极管形状?](https://linux22.com/image/279936/%E6%88%91%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%9C%A8%E4%B8%8D%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%95%B4%E7%9A%84%20circuitikz%20%E5%8C%85%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BD%BF%E7%94%A8%20circuitikz%20%E4%B8%89%E6%9E%81%E7%AE%A1%E5%BD%A2%E7%8A%B6%EF%BC%9F.png)
我正在使用 tikz 电路库来绘制图形。但我刚刚意识到我需要晶体管。这些晶体管存在于 circuitikz 中,但不存在于 tikz 库中。有没有办法只使用 circuitikz 形状而不加载完整的 circuitikz 包?
问题是我已经有现有的图纸,使用 tikz 库完成,并且如果在同一个文档中使用 circuitikz 会产生冲突(相关:是否存在解决 circuitikz 和 TikZ 标签冲突的方法或解决方案?)。我想避免重新绘制使用 tikz 电路库完成的电路。
例如此代码将会中断:
\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{positioning}
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (0,0) to [diode={name=LED}] (0,2);
\node[right of=LED] {LED};
\end{tikzpicture}
\end{document}
答案1
三极点是普通的 TikZ 节点,它们在 中定义pgfcirctripoles.sty
。
您可以尝试仅输入该文件,但不幸的是,它与 CircuiTikZ 发行版中的其他文件有多个依赖关系。
是的,如果您愿意,您可以从该文件中提取某些节点形状,但随后您必须四处寻找所需宏/键的定义。冗长而无聊。
无论如何,如果问题只是 CircuiTikZ 重新定义resistor
(嗯,实际上我的电阻在 TikZ 中出现电路库之前就存在了 ;) ),那么您只需编辑此行即可
\tikzset{resistor/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
进入
\tikzset{R/.style= {\circuitikzbasekey, /tikz/to path=\pgf@circ@resistor@path, l=#1}}
然后删除此行
\tikzset{R/.style= {resistor = #1}}
(均来自circuitikz1.code.tex
),然后语法to[R]
应该可以正常工作,而不再覆盖 TikZ 的resistor
。
也许我会在下一个版本中引入一个可以执行此类操作的包选项。