数组的数组

数组的数组

在这个例子中,我尝试定义一个数组数组\vartypes

\documentclass{article}
\usepackage{tikz}
\begin{document}
\def\varA{A, B}
\def\varB{C, D, E}
\def\vartypes{\varA, \varB}
\foreach \type in \vartypes{
  \foreach \var in \type{
    \foreach \prefix in {var1, var2}{
      \prefix \var
      }
  }
  \\
}
\end{document}

迭代的输出\foreach

在此处输入图片描述

而我期望

在此处输入图片描述

我怎样才能定义\vartypes为数组的数组?

答案1

以下提供了预期的输出,除了一些虚假空格:

在此处输入图片描述

\documentclass{article}

\usepackage{pgffor}

\begin{document}

\def\varA{A, B}
\def\varB{C, D, E}
\def\vartypes{\varA, \varB}
\foreach \type in \vartypes{
  \edef\x{\noexpand\foreach \noexpand\var in {\type}}%
  \x {
    \foreach \prefix in {var1, var2}{
      \prefix{} \var
      }
  }
  \\
}
\end{document}

我们不假设它\type会扩大,而是创造\x扩展版的仅有的 \type然后\foreach \var in {\type}将其用作其后组的前缀。

答案2

1 级循环采用\type取值\varA和来执行\varB

第一次迭代的 2 级循环针对单个项目进行,即\varA,因为\type仅展开一次。

更准确地说,\foreach确实如此\def\type{\varA}

\documentclass{article}
\usepackage{tikz}

\def\eforeach#1in #2{
  \begingroup
  \edef\x{%
    \endgroup\noexpand\foreach\noexpand#1 in
    {\unexpanded\expandafter\expandafter\expandafter{#2}}}%
  \x
}


\begin{document}
\def\varA{A, B}
\def\varB{C, D, E}
\def\vartypes{\varA, \varB}
\foreach \type in \vartypes{
  \eforeach \var in \type{
    \foreach \prefix in {var1, var2}{
      \prefix \var
      }
  }
  \\
}
\end{document}

在此处输入图片描述

更简单地说:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\def\vartypes{{A,B},{C,D,E}}
\foreach \type in \vartypes{
  \foreach \var in \type{
    \foreach \prefix in {var1, var2}{
      \prefix \var
      }
  }
  \\
}
\end{document}

相关内容