воскресенье, 6 октября 2013 г.

Рисуем электрические схемы в LaTeX и TikZ

Иногда в LaTeX нужно нарисовать несложную электрическую схему. Далее рассказано как это сделать без привлечения стороннего ПО средствами самого LaTeX. То что будет написано далее рассчитано на тех, кто уже знаком с таким средством создания векторной для LaTeX, как TikZ. В противном случае нужно сначала ознакомиться с TikZ. Немного информации на русском языке есть тут . Те, кто уже знаком с TikZ - см. под кат.

Для рисования электрических схем служит библиотека circuits. Её нужно подключить в преамбуле документа при помощи команды \usetikzlibrary. Дополнительно в качестве параметра окружения tikzpicture нужно указать circuit ee IEC.

Элементы схем являются в той библиотеке специальными типами узлов и задаются как обычные узлы TikZ командой /node. Здесь нужно обратить внимание, что текст узла, задаваемый в фигурных скобках, у радиоэлементов всегда пустой. Позиционное обозначение и номинал вводятся как параметр узла в квадратных скобках.

Например, если пишем:

\node (L1) at (1,0) [inductor={info = $L_1$, info'= 47 мкГн}] {};

То рисуется катушка (inductor), которая будет обозначена как L1, а индуктивность у неё будет проставлена как 47мкГн. На имя узла L1 можно ссылаться в дальнейшем при рисовании проводов. Чтобы нарисовать конденсатор нужно написать capacitor, а для резистора resistor. Чтобы развернуть элемент схемы на 90 градусов нужно в квадратных скобках через запятую указать параметр point up.

Провода между элементами задаются как обычно в TikZ командой /draw. Узел схемы задаётся специальным узлом contact, который рисует закрашенный кружочек.

Пррямой провод рисуется командой

/draw (R1) -- (C1);

А провод под углом 90 градусов рисуется командой:

/draw (R1) |- (C1);

или

/draw (R1) -| (C1);

К проводам можно применять все параметры (стрелки, толщину линии, как и к обычным траекториям.

Схемы можно сочетать с любой графикой TikZ и, например, размещать на схеме график.

Теперь рассмотрим небольшой пример, который снабжён комментариями.
\documentclass[12pt]{article}
\usepackage{mathtext}
\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\usepackage[pdftex]{graphics}
\usepackage{tikz}

\usetikzlibrary{circuits} % подключаем библиотеки, содержащие
\usetikzlibrary{circuits.ee} % УГО для схем
\usetikzlibrary{circuits.ee.IEC}
\usetikzlibrary{arrows} % подключаем библиотеки со стрелками
\usetikzlibrary{patterns} % и со штриховкой

\begin{document}

Мега-описание RLC-контура

\begin{figure}[!h]
\begin{center}
\begin{tikzpicture}[circuit ee
IEC] % обязательно указываем
circuit ee IEC
\node (in) at (0,0) [contact] {}; % вход - контакт
\node (L1) at (1,0) [inductor={info = $L_1$, info'= 47 мкГн}] {}; % катушка -
% info - обозначение на схеме , info' - номинал
\node (C1) at (3,0) [capacitor={info = $C_1$, info'= 100 пФ}] {}; % конденсатор
\node (R) at (5,0) [resistor={info = $R_1$, info'= 2 Ом}] {}; % резистор
\node (out) at (6,0) [contact] {};% контакт -- точка соединения двух проводов
\draw (in) -- (L1) -- (C1) -- (R) -- (out);
% теперь рисуем провода
\end{tikzpicture}
\end{center}
\caption{Последовательный колебательный контур}
\end{figure}

На схемах можно размещать графики

\begin{figure}[!h]
\begin{center}
\begin{tikzpicture}[circuit ee
IEC]
\node (R) [resistor={info={$R$}}] at (2,2) {};
\node (p1) [contact] at (3,2) {};
\node (C) [point up,
capacitor={info={$C$}}] at (3,1) {}; % конденстаор развернём на 90 градусов
\node (p2) [contact] at (3,0) {};
\draw [-latex] (p1) -- (5,2);
\draw [latex-] (0,2) -- (R);
\draw (R) -- (p1) -- (C) -- (p2);
\draw [latex-] (0,0) -- (p2);
\draw [-latex] (p2) -- (5,0);
\node  at (0,1) {Вход};
\node  at (5,1) {Выход};

% теперь рисуем АЧХ как обычно график
\draw[xshift=60mm,-latex] (0,0) -- (4,0)
node [anchor=west]
{$\omega$};
\draw[xshift=60mm,-latex] (0,0) -- (0,3)
node [anchor=south]
{$K(\omega)$};
\draw [very
thick,xshift=60mm, y=2cm, x=1cm,
declare function={K(\w)=1/sqrt(1+\w^2);}] plot [domain=0:3, samples=10,
smooth] (\x,{K(\x)});
\end{tikzpicture}
\end{center}
\caption{RC - цепочка и её АЧХ}
\end{figure}

\end{document}
Вот что получится, если скомпилировать этот документ при помощи pdflatex:

Комментариев нет:

Отправить комментарий