
Я обнаружил, что circuitikz доступен в ConTeXt, и поскольку он гораздо более полный, чем библиотека circuits.ee.IEC tikz, я подумываю перейти на него. Однако я не могу отобразить ядро трансформатора (я обновил свой контекстный дистрибутив сегодня утром, чтобы убедиться, что обновления не было). Вот мой MWE:
\usemodule[tikz]
\usemodule[circuitikz]
\ctikzset{current=european, voltage=straight, resistor=european, inductor=american}
\starttext
\starttikzpicture
\draw (0, 0) node [transformer core] (T) {}; % asking for node[transformer] (T) {} works
\stoptikzpicture
\stoptext
Спрос на transformer core
приводит к следующей ошибке
Control sequence expected instead of undefined
Конечно, я могу воссоздать основной символ, используя якоря трансформатора, но это кажется глупым, поскольку он уже определен в библиотеке... Есть ли простое решение этой проблемы?
заранее спасибо
решение1
ЦиркуиТикZ пытается использовать \pgfmoveto
макрос, который устарел с 2005 года. pgf
загружает пакеты совместимости по умолчанию в LaTeX, но не в ConTeXt. Так что, строго говоря, эта ошибка не является исключительной для ConTeXt, поскольку следующий документ LaTeX выдает ту же ошибку:
\documentclass{article}
\usepackage[version=latest]{pgf} % Works if this line is removed
\usepackage{circuitikz}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) node [transformer core] (T) {};
\end{tikzpicture}
\end{document}
Чтобы решить эту проблему, вам просто нужно предоставить соответствующие определения для \pgfmoveto
и \pgflineto
:
\usemodule[circuitikz]
\let\pgfmoveto=\pgfpathmoveto % Added
\let\pgflineto=\pgfpathlineto % Added
\startTEXpage
\starttikzpicture
\node [transformer core] {};
\stoptikzpicture
\stopTEXpage