如何自动生成表格?

如何自动生成表格?

以下是一些愚蠢的做法:

\documentclass{article}

\newcounter{exercise}
\setcounter{exercise}{0}
\newcommand{\exercise}[1]{
\stepcounter{exercise}
\bigbreak\textbf{Exercise \arabic{exercise} (#1pt)}\par
}

\begin{document}

% To be automatically generated
\begin{tabular}{|c|c|}
\hline
\textbf{Ex} & \textbf{Pt} \\ 
\hline
1 & 3 \\
\hline
2 & 5 \\
\hline
3 & 2 \\
\hline
\textbf{Total} & \textbf{10} \\
\hline
\end{tabular}


\exercise{3}
First exercise

\exercise{5}
Second exercise

\exercise{2}
Third exercise

\end{document}

我怎样才能从练习中自动生成表格?

在此处输入图片描述

非常感谢您的帮助!

奥利维尔

答案1

您可以使用该.aux文件:

\documentclass{article}

\newcounter{exercise}
\newcommand{\exercise}[1]{%
  \bigbreak
  \stepcounter{exercise}%
  \textbf{Exercise \arabic{exercise} (#1pt)}%
  \writepoints{#1}%
  \par\nopagebreak
}
\makeatletter
\newcommand{\writepoints}[1]{%
  \protected@write\@auxout{}{\string\vogel@addpoints{\arabic{exercise}}{#1}}%
}
\newcounter{vogel@points}
\newcommand{\vogel@addpoints}[2]{%
  \g@addto@macro\vogel@pointtable{#1 & #2 \\ \hline}%
  \addtocounter{vogel@points}{#2}%
}
\newcommand{\vogel@pointtable}{}%
\newcommand{\printpointtable}{%
  \begin{flushleft}
  \begin{tabular}{|c|c|}
  \hline
  \textbf{Ex} & \textbf{Pt} \\
  \hline
  \vogel@pointtable
  \textbf{Total} & \arabic{vogel@points} \\
  \hline
  \end{tabular}
  \end{flushleft}
}
\makeatother

\begin{document}

\printpointtable

\exercise{3}
First exercise

\exercise{5}
Second exercise

\exercise{2}
Third exercise

\end{document}

这个想法是\exercise在文件中写一个注释.aux;在开始文档时读取数据并在中使用\printpointtable

如果需要的话,半分也可能得到支持。

在此处输入图片描述

相关内容