提供未定义的命令作为参数

提供未定义的命令作为参数

我正在尝试创建一个通过参数提供变量名的环境:

\documentclass{article}
\usepackage{pgfplots} % Foreach loops inside align
\pgfplotsset{compat=1.18}

\NewDocumentEnvironment{fora}{+m +b}
  {\pgfplotsforeachungrouped #1 in {0,...,5}{#2}}
{}

\begin{document}

  \begin{fora}[\i]
    \i\textit{testing}
  \end{fora}

\end{document}

但是,我收到以下错误\end{fora}

Missing control sequence inserted.
Illegal unit of measure (pt inserted).
Missing number, treated as zero.

产生的输出如下:=0.0[pt¿5.5pt

我的预期输出是这样的: 1测试2测试3测试4测试5测试

有什么方法可以让用户提供 \i?

答案1

您用 定义了第一个参数m,因此它是必需的。在这种情况下,+m这并不好,因为您不想允许\par,对吗?

但是有一个更好的方法可以做到这一点,而不必为变量找到一个好的名字,而事实\i并非如此。

\documentclass{article}

\ExplSyntaxOn

\NewDocumentEnvironment{fora}{O{1}mO{1} +b}
  {
   \cs_set:Nn \__melodicat_fora:n { #4 }
   \int_step_function:nnnN { #1 } { #3 } { #2 } \__melodicat_fora:n
  }
  {}

\ExplSyntaxOff

\begin{document}

\begin{fora}[0]{5}
#1\textit{testing}
\end{fora}

\begin{fora}{5}
#1\textit{testing}
\end{fora}

\begin{fora}[0]{6}[2]
#1\textit{testing}
\end{fora}

\end{document}

“变量” 用 表示#1。第一个可选参数是起始点(默认 1),然后强制参数是终止点(可选),后面跟着步骤。

在此处输入图片描述

相关内容