
Я хочу включить в некоторые из своих рисунков более интуитивно понятный символ для повышающего/понижающего трансформатора, например, такой:
или версия «милого индуктора»:
Я пытался сделать то, чтоэта ссылкапредложил скопировать тип кода, используемый для определения «индуктора» в pgfcircbipoles.tex, т.е. определить «long_inductor» для использования в коде, но мне не ясно, как все это объединить:
\begin{circuitikz}
\draw (1,5) to[short, o-] (2, 5)
to [long_inductor, l = Primary] (2, 0)
to [short, -o](1,0);
\draw (2.3,5) -- (2.3,0);
\draw (2.4,5) -- (2.4,0);
\draw (4,4) to[short, o-] (3,4)
to [inductor,l = Secondary] (3,1)
to [short, -o](4,1);
\end{circuitikz}
Я видел примеры использованияпстрикс,но я только начал изучать tikz и circuitikz, поэтому на данном этапе мне больше интересно узнать, как использовать эти инструменты... включая определение моих собственных форм для использования.
решение1
Количество катушек можно настроить, в том числе и на рисунке:
\begin{circuitikz}[]
\begin{scope}
\ctikzset{bipoles/cuteinductor/width/.initial=1.2}%default 0.6
\ctikzset{bipoles/cuteinductor/coils/.initial=10}%default 5
\draw (0, 0) to [short, o-] +(1, 0)
to [cute inductor] +(0, 3)
to [short, -o] +(-1, 0);
\end{scope}
%% vertical bare fore the core. The middle is in y=1.5
\draw[thick] (1.4, 0.5) -- (1.4, 2.5);
\draw[thick] (1.6, 0.5) -- (1.6, 2.5);
%% Secondary
\draw(3, 0) to [short, o-] +(-1, 0)
to [cute inductor] +(0, 3)
to [short, -o] +(1, 0);
%%American inductor version(only working using the most recent gitversion!)
\begin{scope}[xshift=4cm]
\begin{scope}
\ctikzset{bipoles/americaninductor/width/.initial=1.6}%default 0.8
\ctikzset{bipoles/americaninductor/coils/.initial=8}%default 4
\draw(0, 0) to [short, o-] +(1, 0)
to [inductor] +(0, 3)
to [short, -o] +(-1, 0);
\end{scope}
%% vertical bare fore the core. The middle is in y=1.5
\draw[thick] (1.4, 0.5) -- (1.4, 2.5);
\draw[thick] (1.6, 0.5) -- (1.6, 2.5);
%%Secondary
\draw (3, 0) to [short, o-] +(-1, 0)
to [inductor] +(0, 3)
to [short, -o] +(1, 0);
\end{scope}
\end{circuitikz}
Во время тестирования я обнаружил ошибку, поэтому код для американского индуктора (не милого/кудрявого)) работает только при использовании последней версии git или при корректировке кода после этого коммита:https://github.com/circuitikz/circuitikz/commit/1dc2ee4cef798bcd8f9a5fabbaf83f66afeaf0f2
С наилучшими пожеланиями, Стефан
решение2
Альтернативой может быть изготовление катушек самостоятельно с использованием декораций. Тогда они будут работать точно так же, как линии, но нарисованные bumps
для первой и coil
для второй. Я не сравнивал с катушками в circuitikz, что, вероятно, дает некоторые изменения в настройках. Единственное различие между первичной и вторичной обмоткой — это зеркальное отображение. Это также можно сделать, изменив направление линии.
\documentclass[border=1cm]{standalone}
\usepackage{circuitikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{circuitikz}[%
line width=1pt,
MyPrimaryBumps/.style={decorate,decoration={bumps,amplitude=10pt,segment length=10mm,mirror}},
MySecondaryBumps/.style={decorate,decoration={bumps,amplitude=10pt,segment length=10mm}},
MyPrimaryCoil/.style={decorate,decoration={coil,amplitude=10pt,segment length=4.8mm,mirror}},
MySecondaryCoil/.style={decorate,decoration={coil,amplitude=10pt,segment length=4.7mm}},
]
\draw[o-] (0,0) -- +(2,0);
\draw[MyPrimaryBumps] (2,0) -- +(0,3.01);
\draw[-o] (2,3) -- +(-2,0);
\draw(2.45,0) -- +(0,3);
\draw(2.54,0) -- +(0,3);
\draw[o-] (5,0.5) -- +(-2,0);
\draw[MySecondaryBumps] (3,0.5) -- +(0,2.01);
\draw[-o] (3,2.5) -- +(2,0);
\begin{scope}[xshift=8cm]
\draw[o-] (0,0) -- +(2,0);
\draw[MyPrimaryCoil] (2,0) -- +(0,3.01);
\draw[-o] (2,3) -- +(-2,0);
\draw(2.45,0) -- +(0,3);
\draw(2.54,0) -- +(0,3);
\draw[o-] (5,0.5) -- +(-2,0);
\draw[MySecondaryCoil] (3,0.5) -- +(0,2.01);
\draw[-o] (3,2.5) -- +(2,0);
\end{scope}
\end{circuitikz}
\end{document}
решение3
Мое решение — использовать две inductor
катушки и создать большую катушку.
Вот мой MWE:
\documentclass[12pt]{article}
\usepackage[americaninductors]{circuitikz}
\begin{document}
\begin{circuitikz}
%% left side of the transformer This has two coils to indicate more
%% windings. Use relative coordinates, counting from the startpoint
%% The horizontal width is from y=0 to y=1
\draw
(0, 0) node[inductor] (P) {}
to [short, o-] +(1, 0)
to [inductor] +(0, 1.2)
to [inductor] +(0, 1.2)
to [short, -o] +(-1, 0);
%% vertical bare fore the core. The middle is in y=1.5
\draw (1.4, -0.1) -- (1.4, 2.5);
\draw (1.6, -0.1) -- (1.6, 2.5);
% %% right side of the transformer, being smaller than the first
% side. The width is y=3 to y=2
\draw
(3, 0) node[inductor] (S) {}
to [short, o-] +(-1, 0)
to [inductor, mirror] +(0, 2.5)
to [short, -o] +(1.2, 0);
\end{circuitikz}
\end{document}
И результат
Я должен признать, что я использовал опцию mirror
на правом передатчике, чтобы отразить катушки обеих сторон передатчика. Я также пытался использовать опцию mirror
на левой стороне катушек, но это дало уродливые соединения между соединительными линиями. :-(