以下是一些愚蠢的做法:
\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
。
如果需要的话,半分也可能得到支持。