生成自动修订编号表格

生成自动修订编号表格

情况

我必须为文档制作封面模板。在页面末尾,我必须添加修订号以及其他有用信息,例如以下示例:

\begin{tabular}{lccl}
    Revision 0 & 06-11-2014 & Initial Release & John Smith \\
    Revision 1 & 06-12-2014 & Changed something & Joe Blow \\
    ...
\end{tabular}

客观的

在 TEX 文档中,用户必须添加其修订,如下所示:

\AddRevision{06-11-2014}{Initial Release}{John Smith}
\AddRevision{06-12-2014}{Changed something}{Joe Blow}
...
\createFrontPage

生成 PDF 时,这应该会自动生成上面的表格。请注意,每次 AddRevision 时修订编号都会自动增加 1。

我尝试过

我不熟悉 Latex 宏,所以目前我所拥有的就是这样。我只是不知道我是否接近解决方案,或者我是否完全做错了。这是我的 CLS 文件中的代码:

\newCounter{RowCounter}
\def\AddRev#1,#2,#3{\RevDate{#1}, \RevDesc{#2}, \RevAuthor{#3} \stepCounter{RowCounter}}

\newCounter{i}
\newcommand{\RevisionRows}
{
    \forloop{i}{0}{\value{i} < \value{RowCounter}}
    {
        Revision \arabic{i} & \RevDate & \RevDesc & \RevAuthor \\
    }
}    

\newcommand{\createFrontPage}
{
   % some stuff
   \begin{tabular}{lccl}
       \RevisionRows    
   \end{tabular}
}

问题

我的目标可以实现吗?如果可以,我做错了什么?最好的、最干净的解决方案是什么?欢迎提出任何建议。

非常感谢你的帮助。

答案1

以下是一种方法:

在此处输入图片描述

笔记:

我建议你将第一个之前的所有内容\AddRevision放在单独的包中,并让用户添加修订 \begin{document}

参考:

代码:

\documentclass{article}

%% https://tex.stackexchange.com/questions/175568/build-tabular-content-via-foreach
\newcommand*{\MyTempTableTokens}{}%
\makeatletter
    \newtoks\@tabtoks
    %%% assignments to \@tabtoks must be global, because they are done in \foreach
    \newcommand\AddTableTokens[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}}
    \newcommand\eAddTableTokens[1]{%
      \protected@edef\MyTempTableTokens{#1}%
      \expandafter\AddTableTokens\expandafter{\MyTempTableTokens}%
    }
    %%% variable should always be operated on always locally or always globally
    \newcommand*\ResetTableTokens{\global\@tabtoks{}}
    \newcommand*\PrintTableTokens{\the\@tabtoks}
\makeatother



\newcounter{RowCounter}
\newcommand{\AddRevision}[3]{%
    \stepcounter{RowCounter}%
    \eAddTableTokens{Revision \arabic{RowCounter} & #1 & #2 & #3 \\}%
}%

\newcommand{\createFrontPage}{%
   % some stuff
   \begin{tabular}{lccl}
       \PrintTableTokens    
   \end{tabular}%
   \clearpage
}

\AtBeginDocument{%
    \createFrontPage%
}%

%-----------------------------------------------------------


\AddRevision{06-11-2014}{Initial Release}{John Smith}
\AddRevision{06-12-2014}{Changed something}{Joe Blow}

\begin{document}

     main document here

\end{document}

相关内容