如何在使用 \expandafter 时获取 pgffor 中计数器的值

如何在使用 \expandafter 时获取 pgffor 中计数器的值

我调查了这个答案并尝试改进它。我的目标是得到这个表:

| 1 |
| 2 |
| 3 |

但我得到的却是:

| 1 |
| 1 |
| 1 |

代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgffor}
\makeatletter
\newtoks\@tabtoks
\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}}
\newcommand*\resettabtoks{\global\@tabtoks{}}
\newcommand*\printtabtoks{\the\@tabtoks}
\makeatother
\begin{document}
\resettabtoks
\foreach \i in {1,...,3} {%
  \addtabtoks{\i \\\hline}
}

\begin{tabular}{ | c | }
  \hline
  \printtabtoks
\end{tabular}
\end{document}

我认为这是由引起的\expandafter,但我不知道如何解决它。

答案1

\i你想添加不是令牌的扩展\i,所以

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgffor}
\makeatletter
\newtoks\@tabtoks
\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}}
\newcommand*\resettabtoks{\global\@tabtoks{}}
\newcommand*\printtabtoks{\the\@tabtoks}
\makeatother
\begin{document}
\resettabtoks
\foreach \i in {1,...,3} {%
  \expandafter\addtabtoks\expandafter{\i \\\hline}%
}

\begin{tabular}{ | c | }
  \hline
  \printtabtoks
\end{tabular}
\end{document}

相关内容