使用具有相对路径的电路库会破坏我的 LED。下面是 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{circuits.ee.IEC}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
%broken
\draw (-2,0) to [diode={light emitting}] +(0,4);
%ok
\draw (0,0) to [diode={light emitting}] (0,4);
\end{tikzpicture}
\end{document}
意外结果:
有没有办法在 tikz 中的电路库中使用相对路径?
答案1
如果circle declare annotation
s 的设置不同,它就可以工作。它们最初使用++
运算符。我重新定义了它们,以便它们使用shift
ing。
这里我使用了一个名为的辅助坐标@
。如果想避免这种情况,可以替换路径的起点,这样它会被评估两次,但@
不使用坐标(及其宏)。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{
circuit declare annotation={light emitting}{1.75\tikzcircuitssizeunit}
{
(+-.2\tikzcircuitssizeunit,+.65\tikzcircuitssizeunit) coordinate (@) edge[line to] ([shift=(45:+1.25\tikzcircuitssizeunit)] @)
( +.2\tikzcircuitssizeunit,+.25\tikzcircuitssizeunit) coordinate (@) edge[line to] ([shift=(45:+1.25\tikzcircuitssizeunit)] @)
},
circuit declare annotation={light dependent}{1.75\tikzcircuitssizeunit}
{
[shift=(135:1.25\tikzcircuitssizeunit)]
( +.2\tikzcircuitssizeunit,+.65\tikzcircuitssizeunit) coordinate (@) edge[line to] ([shift=(-45:+1.25\tikzcircuitssizeunit)] @)
(+-.2\tikzcircuitssizeunit,+.25\tikzcircuitssizeunit) coordinate (@) edge[line to] ([shift=(-45:+1.25\tikzcircuitssizeunit)] @)
}
}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (-2,0) to [diode={light emitting}] +(0,4) to [diode=light dependent] +(1,3);
\draw (0,0) to [diode={light emitting}] (0,4) to [diode=light dependent] (1,3);
\end{tikzpicture}
\end{document}
输出
答案2
\documentclass{article}
\usepackage{circuitikz}
\usetikzlibrary{circuits.ee.IEC}
\begin{document}
\begin{circuitikz}[circuit ee IEC]
%broken
\draw (-2,0) to [diode={light emitting}] +(0,4);
%ok
\draw (0,0) to [diode={light emitting}] (0,4);
%circuitikz
\draw (2,0) to [leDo] +(0,4);
\end{circuitikz}
\end{document}