以下是我现在的情况:
\documentclass[12pt]{article}
\usepackage{pgfplots}
\usepackage{float}
\pgfplotsset{compat=1.17}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, positioning, matrix, calc}
\usepackage[RPvoltages, american,siunitx]{circuitikz}
\usepackage[margin=1in]{geometry}
\usepackage{steinmetz}
\begin{document}
\begin{figure}[H]
\centering
\begin{circuitikz}
\draw(0,0) to [V = $250\phase{\ang{0}}$] ++(0, 3) ;
\end{circuitikz}
\end{figure}
\end{document}
输出:
现在,我试图将以下任一项输入到括号中:
[V = $\SI[parse-numbers = false]{250\phase{\ang{0}}} {\volt}$]
错误:Package tikz Error: (, +, coordinate, pic, or node expected. \draw(0,0) to [$\SI[parse-numbers = false]{
[V = $250\phase{\ang{0}}$ <\volt>]
错误:Argument of \XC@definec@lor has an extra }. ... [V = $250\phase{\ang{0}}$ <\volt>] ++(0, 3)
我希望 siunit 能V
像往常一样显示。如何解决?
编辑:我也尝试对电感器做同样的事情:
\documentclass[12pt]{article}
\usepackage{pgfplots}
\usepackage{float}
\pgfplotsset{compat=1.17}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, automata, positioning, matrix, calc}
\usepackage[RPvoltages, american,siunitx]{circuitikz}
\usepackage[margin=1in]{geometry}
\usepackage{steinmetz}
\begin{document}
\begin{figure}[H]
\centering
\begin{circuitikz}
\draw(0,0) to [$\SI[parse-numbers = false]{250\phase{\ang{0}}} {\volt}$] ++(0, 3) to[L = $j10$ <\ohm>] ++(3, 0);
\end{circuitikz}
\end{figure}
\end{document}
但是,我还收到一条错误消息:
Package siunitx Error: Invalid token '$' in numerical input. \draw(0,0) to[L = $j10$ <\ohm>] ++(3, 0)
如何修复这个问题?请注意,我试图绘制的内容基于以下内容:
答案1
这里有两个问题。
第一个是错误/限制circuitikz
;当向下传递参数时,它们是没有额外的支架保护,所以你必须保护所有对 Ti 有意义的角色钾Z 解析器(如,
、=
、]
)多次。虽然使用一组 8 个(!)括号就足够了,但我发现使用一个\mbox{}
更简单。
第二个是“加速 siunitx 语法” <unit>
(我个人不喜欢,因为我更喜欢更清晰的\SI{}{}
)仅适用于结构數字<
單位>
,因此您必须删除数学开关。
最后,这个工作正常:
\documentclass[12pt]{article}
\usepackage[RPvoltages, american,siunitx]{circuitikz}
\usepackage{steinmetz}
\sisetup{copy-complex-root, complex-root-position=before-number}
\begin{document}
\begin{circuitikz}
\draw(0,0) to [V=\mbox{$\SI[parse-numbers = false]{250\phase{\ang{0}}} {\volt}$}]
++(0, 3) to[L = j10<\ohm>] ++(3, 0);
\end{circuitikz}
\end{document}