我正在尝试创建一个通过参数提供变量名的环境:
\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),然后强制参数是终止点(可选),后面跟着步骤。