我昨天更新了我的 MikTeX,并获得了新版本的软件包circuitikz
!我立即做了简短检查,看看我的旧circuitikz
图片是否能像旧软件包版本一样工作。到目前为止,除了一个测试之外,所有测试都给出了相同的结果。例外情况如下:
\documentclass[border=3mm]{standalone}
\usepackage{circuitikz}
\ctikzset{bipoles/diode/height=0.25,bipoles/diode/width=0.25}
\begin{document}
\begin{circuitikz}[scale=1.25],
\draw
(0,0) coordinate (T1+)
node [nigbt,anchor=S,
rotate=-90,color=gray] (igbt2) {} % IGBT as node, in gray color
(T1+) to [short,*-] ++ (0,-0.5) coordinate (D2)
to [Do,a=D,color=red] (D2 -| igbt2.D) % diode, in red color
to [short,-*] (igbt2.D)
to [Do,a=D,color=blue] ++ (1,0) % diode, in blue color
;
\end{circuitikz}
\end{document}
只有在旋转 igbt 元件和设置二极管标签时,红色二极管标签才会错位a=D
。如果我将其替换为l=D
,则“D”在二极管另一侧的位置是正确的。使用旧包版本,它可以正常工作。
这里有没有人有类似的经历?我是不是漏掉了什么?
答案1
此问题已在 0.9.1 版(未发布)中得到修复,该版本将在等待错误报告一段时间后发布。在此期间,您可以使用在https://circuitikz.github.io/circuitikz/。
上一个答案
我思考我有一个答案。似乎有时路径方向没有规范化,所以我得到了错误的锚点位置。
试试这个:编辑文件pgfcirclabel.tex
。转到第 104 行,你应该看到
...
\ifnum \pgf@circ@temp < 0
\pgfmathadd{\pgf@circ@labanc}{180}
\edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
\fi
\ifpgf@circuit@bipole@inverted
...
...在\fi
第 104 行之后插入以下内容:
\pgfmathmod{\pgf@circ@labanc}{360}
\edef\pgf@circ@labanc{\expandafter\pgf@circ@stripdecimals\pgfmathresult\pgf@nil}
然后重试。现在它似乎对我有用,并且补丁在逻辑上是正确的。你能检查一下吗?
原始答案和解决方法
这确实令人费解,我需要深入研究pgfcircpath.tex
和pgfcirclabel.tex
代码才能找到发生了什么。请注意,如果我将绘图拆分为如下形式:
\documentclass[border=3mm]{standalone}
\usepackage{circuitikz}
\ctikzset{bipoles/diode/height=0.25,bipoles/diode/width=0.25}
\begin{document}
\begin{circuitikz}[scale=1.25],
\draw
(0,0) coordinate (T1+)
node [nigbt,anchor=S, rotate=-90,color=gray] (igbt2) {} % IGBT as node, in gray color
(T1+) to [short,*-] ++ (0,-0.5) coordinate (D2);
\draw
(D2) to [Do,a=D,color=red] (D2 -| igbt2.D) % diode, in red color
to [short,-*] (igbt2.D)
to [Do,a=D,color=blue] ++ (1,0) % diode, in blue color
;
\end{circuitikz}
\end{document}
(应该完全等价)结果是
...我预计这里会有一些困难的调试... :-(