Условный оператор if в latex
Нужно построить график (векторную диаграмму диода) причем если угол(\Fi) будет больше чем 90, то все вектора будут равны 0. Не понимаю как правильно использовать if в latex.
\usepackage{ifthen} подключил, пробовал разные вариации, но все время выдает ошибку.
Буду очень благодарен за помощь!
Вот пример одной из моих попыток
$$
\frac{\partial \vec{I}} {\partial t}
$$
\begin{circuitikz}
\newcommand{\DV}{5}
\newcommand{\DI}{4}
\newcommand{\Fi}{80}
\newcommand{\Fii}{\Fi+7}
\ifthenelse{\Fi < 90}
{{\draw[->,blue] (0,0) -- ( {\DV*cos(\Fi)}, {\DV*sin(\Fi)}) node[right] {$\vec{V}$};
\draw[->,red](0,0) -- ( {\DI*cos(\Fi -10)}, {\DI*sin(\Fi-10)}) node (A) {}node[below right]
{$\vec{I}(t)$};
\draw[->,red](0,0) -- ( {\DI*cos(\Fii -10)}, {\DI*sin(\Fii-10)}) node (B) {}node[right]
{$\vec{I}(t+ {\small\Delta}t)$};
\draw[->] (A.center) -- (B.center);
\draw[->,ultra thin] (-6,0) -- (6,0) node[below] {x}}
{\draw[->,ultra thin] (-6,0) -- (6,0)}
\end{circuitikz}
Ответы (1 шт):
Не претендую на абсолютную точность, но... В LaTeX можно целочисленные переменные делать через счетчики, а не через макросы (над счетчиками можно выполнять простейшие вычисления). Для обращения к значению счетчика можно использовать либо его имя с приставкой \the (например, для счетчика страниц page получить значение можно командой \thepage), либо используя специальную команду \value{} (например, \value{page}).
Можно отдельно протестировать работу условного оператора со счетчиками, а потом уже использовать соответствующие команды для рисования.
Короткий тестовый пример для условного оператора (кодировку и язык, конечно же, нужно указать свои)
\documentclass[12pt,a4paper]{article}
\usepackage[cp1251]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{ifthen}
\newcounter{Fi}
\setcounter{Fi}{80}
\begin{document}
\ifthenelse{\theFi < 90}
{true}
{false}
\end{document}
должен вывести либо true, либо false в зависимости от значения счетчика и числа в условии. И в данном примере я обращаюсь к значению счетчика через команду \theFi
(спойлер: при указанных значениях далжно быть выведено true).
Далее, можно переходить к программе с рисунком. Нужно задать все переменные как счетчики, задать им нужные значения и после этого можно к ним обращаться (в следующем примере, для разнообразия, применим команду \value{}).
\documentclass[12pt,a4paper]{article}
\usepackage[cp1251]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage[europeanresistors,americaninductors,RPvoltages]{circuitikz}
\newcounter{DV}
\newcounter{DI}
\newcounter{Fii}
\newcounter{Fi}
\setcounter{DV}{5}
\setcounter{DI}{4}
\setcounter{Fi}{80}
\setcounter{Fii}{\value{Fi}} %здесь TeX не дает прямо сложить с числом, поэтому добавляем 7 следующей строкой
\addtocounter{Fii}{7}
\begin{document}
$$
\frac{\partial \vec{I}} {\partial t}
$$
\begin{circuitikz}
\ifthenelse{\value{Fi} < 90}
{
\draw[->,blue] (0,0) -- ( {\value{DV}*cos(\value{Fi})}, {\value{DV}*sin(\value{Fi})}) node[right] {$\vec{V}$};
\draw[->,red](0,0) -- ( {\value{DI}*cos(\value{Fi} -10)}, {\value{DI}*sin(\value{Fi}-10)}) node (A) {}node[below right] {$\vec{I}(t)$};
\draw[->,red](0,0) -- ( {\value{DI}*cos(\value{Fii} -10)}, {\value{DI}*sin(\value{Fii}-10)}) node (B) {}node[right] {$\vec{I}(t+ {\small\Delta}t)$};
\draw[->] (A.center) -- (B.center);
\draw[->,ultra thin] (-6,0) -- (6,0) node[below] {x};
}
{
\draw[->,ultra thin] (-6,0) -- (6,0)
}
\end{circuitikz}
\end{document}
В итоге, получился странный рисунок, но думаю, что это именно то, что просили нарисовать:
