根据 .tex 文件中的键自动生成具有多行和多列的表格

根据 .tex 文件中的键自动生成具有多行和多列的表格

我想循环遍历 LaTeX 文档并收集具有多个条目的键的每个实例。

IE

\begin{document}
\lipsum[1-1]
\key{name=Peter, age=50, gender=male}
\lipsum[1-1]
\key{name=Max, age=20, gender=male}
\lipsum[1-1]
\key{name=Lena, age=90, gender=female}

\makekeylist

\end{document}

\makekeylist应该生成一个\tabularx包含上述条目以及它们首先出现的各自页面的类似表。

我迄今为止的尝试makeidx并没有取得任何结果,而且我对正确的答案也有点一无所知。

谢谢大家的帮助。

答案1

在此处输入图片描述

\documentclass[a5paper]{article}
\usepackage{keyval,tabularx}
\usepackage{lipsum}


\makeatletter
\def\zz@table{}
\newcount\zz@count
\define@key{zz}{name}{\def\zz@name{#1}}
\define@key{zz}{age}{\def\zz@age{#1}}
\define@key{zz}{gender}{\def\zz@gender{#1}}

\newcommand\key[1]{%
\global\advance\zz@count\@ne
\label{zz\the\zz@count}%
\setkeys{zz}{name=?,age=?,gender=?}%
\setkeys{zz}{#1}%
\xdef\zz@table{\expandafter\unexpanded\expandafter{\zz@table}%
  \zz@name&\zz@age&\zz@gender&\noexpand\pageref{zz\the\zz@count}\noexpand\\}%
}

\newcommand\makekeylist{%
  \begin{center}
    \begin{tabularx}{\textwidth}{XXXX}
    Name&Age&Gender&Page\\
\hline
  \zz@table
\end{tabularx}
\end{center}}

\begin{document}
\lipsum[1-1]
\key{name=Peter, age=50, gender=male}
\lipsum[1-1]
\key{name=Max, age=20, gender=male}
\lipsum[1-1]
\key{name=Lena, age=90, gender=female}

\makekeylist

\end{document}

相关内容