
Создаю несколько электрических цепей в tikz впервые и мне нужно воспроизвести следующее изображение
Не очень сложная схема. Теперь вот что я сделал на данный момент
\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{circuit declare symbol = ac source}
\tikzset{set ac source graphic = ac source IEC graphic}
\tikzset{
ac source IEC graphic/.style=
{
transform shape,
circuit symbol lines,
circuit symbol size = width 3 height 3,
shape=generic circle IEC,
/pgf/generic circle IEC/before background=
{
\pgfpathmoveto{\pgfpoint{-0.8pt}{0pt}}
\pgfpathsine{\pgfpoint{0.4pt}{0.4pt}}
\pgfpathcosine{\pgfpoint{0.4pt}{-0.4pt}}
\pgfpathsine{\pgfpoint{0.4pt}{-0.4pt}}
\pgfpathcosine{\pgfpoint{0.4pt}{0.4pt}}
\pgfusepathqstroke
}
}
}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (0,0) to [capacitor={info={$q$\ \ $-q$}}] ++(1, 0)
to [resistor={info ={$R$}}] ++(2, 0)
to [current direction' = {info = {$I$}}]++(0,-2)
to [inductor={info=$L$}] (0,-2)
to [ac source={info={$V$}}] (0,0);
\end{tikzpicture}
\end{document}
Я понятия не имею, что я сделал до сих пор, я просто скопировал примеры из интернета. Узлы — это беспорядок, так как я просто продолжал пытаться, пока они все не соединились. Что означает ++? И может ли кто-нибудь помочь мне понять, как исправить мою схему, чтобы она напоминала изображение выше? =)
решение1
Мое решение приводит к:
Код:
\documentclass[10pt,a4paper]{minimal}
\usepackage{tikz}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{circuit declare symbol = ac source}
\tikzset{set ac source graphic = ac source IEC graphic}
\tikzset{
ac source IEC graphic/.style=
{
transform shape,
circuit symbol lines,
circuit symbol size = width 3 height 3,
shape=generic circle IEC,
/pgf/generic circle IEC/before background=
{
\pgftransformrotate{90}
\pgfpathmoveto{\pgfpoint{-0.575pt}{0pt}}
\pgfpathsine{\pgfpoint{0.3pt}{0.3pt}}
\pgfpathcosine{\pgfpoint{0.3pt}{-0.3pt}}
\pgfpathsine{\pgfpoint{0.3pt}{-0.3pt}}
\pgfpathcosine{\pgfpoint{0.3pt}{0.3pt}}
\pgfusepathqstroke
}
}
}
\begin{document}
\scalebox{1.5}{
\begin{tikzpicture}[circuit ee IEC]
\draw (0,0) to [capacitor={info'={$C$}}] ++(1.5, 0)
to [resistor={info'={$R$}}] ++(2.5, 0)
to [current direction = {info' = {$I$}}]++(0,-3)
to [inductor={info'=$L$}] (0,-3)
to [ac source={info={$V$}}] (0,0);
\node[above right] at (0.75,0){$-q$};
\node[above left] at (0.75,0){$q$ \ };
\end{tikzpicture}
}
\end{document}
От начальной точки (0,0)
все элементы отображаются последовательно. Например, конденсатор размещается от начальной точки до координаты (1.5,0)
(в этом смысл ++). Можно отображать информацию с помощью клавиши info
или info'
; в общем случае '
позволяет инвертировать расположение метки или направление тока: вот почему в моем примере я просто использовал current direction
стрелку, указывающую вниз.
Что касается меток q
, то -q
вместо того, чтобы вставлять их с помощью ключа info
, я предпочел использовать простые узлы: с одной стороны, это позволяет вводить C
с помощью info
, а с другой стороны, позволяет лучше позиционировать q
и -q
.
Наконец, чтобы повернуть символ источника напряжения, я просто добавляю его в ваш код \pgftransformrotate{90}
и немного уменьшаю размер.
решение2
@ClaudioFiandrino опередил меня с ответом на вопрос о ++
:)
, но у меня есть еще несколько улучшений/замечаний. Смотрите измененный код ниже:
\documentclass[10pt,a4paper]{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{circuit declare symbol = ac source}
\tikzset{set ac source graphic = ac source IEC graphic}
\tikzset{
ac source IEC graphic/.style=
{
transform shape,
circuit symbol lines,
circuit symbol size = width 3 height 3,
shape=generic circle IEC,
/pgf/generic circle IEC/before background=
{
\pgftransformresetnontranslations
\pgfpathmoveto{\pgfpoint{-0.8\tikzcircuitssizeunit}{0\tikzcircuitssizeunit}}
\pgfpathsine{\pgfpoint{0.4\tikzcircuitssizeunit}{0.4\tikzcircuitssizeunit}}
\pgfpathcosine{\pgfpoint{0.4\tikzcircuitssizeunit}{-0.4\tikzcircuitssizeunit}}
\pgfpathsine{\pgfpoint{0.4\tikzcircuitssizeunit}{-0.4\tikzcircuitssizeunit}}
\pgfpathcosine{\pgfpoint{0.4\tikzcircuitssizeunit}{0.4\tikzcircuitssizeunit}}
\pgfusepathqstroke
}
}
}
\begin{document}
\begin{tikzpicture}[circuit ee IEC]
\draw (0,0) to [capacitor={info={$q$\ \ $-q$}}] ++(1, 0)
to [resistor={info ={$R$}}] ++(2, 0)
to [current direction = {info = {$I$}}]++(0,-2)
to [inductor={info=$L$}] (0,-2)
to [ac source={info={$V$}}] (0,0);
\end{tikzpicture}
\end{document}
что дает следующий результат:
Во-первых, его лучше использовать \tikzcircuitssizeunit
как единицу измерения, тогда цифра всегда масштабируется правильно.
Во-вторых, \pgftransformresetnontranslations
это также более общее правило, чем явное указание поворота на 90 градусов, и позволяет повторно использовать графику под любым углом без дополнительных усилий.
И последнее, что касается источника переменного тока, я хотел бы указать на этовопрос(спасибо @Jake за его отличный ответ) опубликовано мной (самое первое сообщение, которое я когда-либо размещал здесь TeX.SE
... аххх - ностальгия... :)
).