我有某种列表,想将实际的枚举计数添加到该列表中。我假设,在我的问题中,我只是以某种方式存储指向该计数器的指针,而不是值本身,因此即使存储的计数器值也会随着计数器本身的增加而增加。我甚至尝试定义一个临时计数器,将其设置为枚举计数器的值,但我在某处读到,我应该扩展计数器,所以我不知道该怎么做。
\documentclass{scrartcl}
\usepackage{ifthen}
\def\aliste{}
\def\zaliste#1\relax{\gdef\aliste{#1}}
\def\addtoaliste#1{%
\ifthenelse{\equal{\aliste}{}}{%
\expandafter\zaliste\aliste#1\relax
}{\expandafter\zaliste\aliste,#1\relax
}%
}
\begin{document}
Value: \aliste\\
\addtoaliste{A}
Value: \aliste\\ %Returns A
\begin{enumerate}
\item
Output: \arabic{enumi}\\ %is 1
\addtoaliste{\arabic{enumi}} %adds 1 to the list
\aliste %returns A,1
\item
Output: \arabic{enumi}\\ %is 2
\addtoaliste{\arabic{enumi}} %shall add 2 to the list
Value: \aliste %returns A,2,2
\end{enumerate}
Value: \aliste %returns A,2,2
\end{document}
答案1
我删除ifthen
(因为它被认为过时的) 并在添加某些内容之前使用常规\ifx\aliste\relax
测试来查看 的值\aliste
。请注意,添加使用\xdef
-ae x
pandable 版本\gdef
(这是一个g
全局def
初始化)。需要全局定义才能使列表添加在作用域 ( enumerate
) 环境之外存活。
\documentclass{article}
\let\aliste\relax
\def\addtoaliste#1{%
\ifx\aliste\relax
\xdef\aliste{#1}% List is empty. Just add #1
\else
\xdef\aliste{\aliste,#1}% List is non-empty. Add old list, comma and #1
\fi
}
\begin{document}
Value: \aliste \\
\addtoaliste{A}
Value: \aliste \\ % returns A
\begin{enumerate}
\item
Output: \arabic{enumi} \\ % is 1
\addtoaliste{\arabic{enumi}} % adds 1 to the list
Value: \aliste % returns A,1
\item
Output: \arabic{enumi} \\ % is 2
\addtoaliste{\arabic{enumi}} % shall add 2 to the list
Value: \aliste % returns A,1,2
\end{enumerate}
Value: \aliste % returns A,1,2
\end{document}