newcommand、$ $ 和 circuitikz

newcommand、$ $ 和 circuitikz

我尝试创建一个新命令以避免输入一些内容。新命令的参数在 中不起作用吗$ $?还是我做错了什么?感谢您的帮助。

我收到错误:

Package pgfkeys Error: I do not know the key '/tikz/R=$R_{1}$,i=$I_{1}$,v=$U_{1}$' and I am going to ignore it. Perhaps you misspelled it. \draw (0,0) to [\Res{1}] (3,0)

下面是我的最小不工作示例:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}

\begin{document}
    \newcommand{\Res}[1]{R=$R_{#1}$, i=$I_{#1}$, v=$U_{#1}$}

    \begin{circuitikz}

        \draw (0,0) to [\Res{1}] (3,0) ;

    \end{circuitikz}
\end{document}

答案1

您可以(并且应该)定义一种风格:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}

\tikzset{
  Res/.style={R=$R_{#1}$, i=$I_{#1}$, v=$U_{#1}$},
}

\begin{document}

\begin{circuitikz}
\draw (0,0) to [Res=1] (3,0) ;
\end{circuitikz}

\end{document}

在此处输入图片描述

答案2

在 tikz 解析器需要查看逗号分隔的值之前,您需要扩展宏。

一种方法是

在此处输入图片描述

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}

\begin{document}
    \newcommand{\Res}[2]{\draw #1 to [R=$R_{#2}$, i=$I_{#2}$, v=$U_{#2}$]}

    \begin{circuitikz}

        \Res{(0,0)}{1} (3,0) ;

    \end{circuitikz}
\end{document}

相关内容