我正在创建一组测试解决方案,需要有一个标题表来指示问题编号、测试年份等。
我创建了下面的代码,使用 tikz 创建表格并使用 afterpage 将其添加到解决方案的每一页。
这可行,但 pdf 生成会在文档末尾创建几个额外的页面。有人知道为什么吗?似乎只要一个解决方案运行超过一页就会发生这种情况,但即使是下面的简化示例也会生成两个额外的页面。
任何帮助都将不胜感激。示例代码如下:
\documentclass[12pt,a4paper]{article}
\usepackage[top=6cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{fancyhdr}
\usepackage{tikz}
\usepackage{array}
\usepackage{booktabs}
\usepackage{afterpage}
\setlength\extrarowheight{5px}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\pagestyle{fancyplain}
\fancyhf{}
\cfoot{\thepage}
\renewcommand{\headrulewidth}{0pt}
\newcounter{qno}
\setcounter{qno}{1}
\newcommand{\question}[1]{
\begin{itemize}\item[\arabic{qno}.]\hfill\textbf{[#1]}\end{itemize}}
\newcommand\module{XXX}
\newcommand\examyear{XXX}
\newcommand\setter{XXX}
\newcommand\examtable{%
\begin{tikzpicture}[remember picture,overlay]
\node [yshift=-1.2cm,below,align=center,font=\bfseries] at (current page.north)
{
TEST\\
\\
\hspace{14cm} for Coordinator\\
\begin{tabular} { | p{4.1cm} | >{\centering\arraybackslash}m{6.5cm} | p{0.5cm} | >{\centering\arraybackslash}m{2.9cm} | >{\centering\arraybackslash}m{2.1cm} |}
\cmidrule{1-2} \cmidrule{4-5}
Name 1 & {\centering\setter} & & Paper & Question \\
\cmidrule{1-2} \cmidrule{4-5}
Name 2 & \module & & & \\
\cmidrule{1-2}
Year & \examyear & & \module & \theqno \\
\cmidrule{1-2}
Initials & & & & \\
\cmidrule{1-2} \cmidrule{4-5}
\end{tabular}\\
\vspace{2\baselineskip}
};
\end{tikzpicture}
\afterpage{\examtable}%
}
% End of preamble
\begin{document}
% Beginning of title page
\examtable
\question{25} % Question 1
XXX
\stepcounter{qno}
\newpage
\question{25} % Question 2
XXX
\end{document}
答案1
正如评论中所述,原始标记指定每个页面都会生成另一个页面,因此文档只会偶然终止。
表格似乎是页面标题,并且fancyhdr
包已加载,因此这只是指定表格是页面标题。因此,它需要从系统中获取当前方程编号\mark
。
这只会产生两页,
\documentclass[12pt,a4paper]{article}
\usepackage[top=6cm, bottom=1.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{fancyhdr}
\usepackage{tikz}
\usepackage{array}
\usepackage{booktabs}
\usepackage{afterpage}
\setlength\extrarowheight{5px}
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\pagestyle{fancyplain}
\fancyhf{}
\cfoot{\thepage}
\fancyhead{\parbox{\textwidth}{\examtable}}
\renewcommand{\headrulewidth}{0pt}
\setlength\headheight{30pt}
\newcounter{qno}
\setcounter{qno}{1}
\newcommand{\question}[1]{%
\begin{itemize}\item[\arabic{qno}.]\markright{\theqno}\hfill\textbf{[#1]}\end{itemize}}
\newcommand\module{XXX}
\newcommand\examyear{XXX}
\newcommand\setter{XXX}
\newcommand\examtable{%
\begin{tikzpicture}[remember picture,overlay]
\node [yshift=-1.2cm,below,align=center,font=\bfseries] at (current page.north)
{%
TEST\\[\baselineskip]%
\hspace{14cm} for Coordinator\\
\begin{tabular} { | p{4.1cm} | >{\centering\arraybackslash}m{6.5cm} | p{0.5cm} | >{\centering\arraybackslash}m{2.9cm} | >{\centering\arraybackslash}m{2.1cm} |}
\cmidrule{1-2} \cmidrule{4-5}
Name 1 & {\centering\setter} & & Paper & Question \\
\cmidrule{1-2} \cmidrule{4-5}
Name 2 & \module & & & \\
\cmidrule{1-2}
Year & \examyear & & \module & \rightmark\\
\cmidrule{1-2}
Initials & & & & \\
\cmidrule{1-2} \cmidrule{4-5}
\end{tabular}\\
\vspace{2\baselineskip}
};
\end{tikzpicture}%
}
% End of preamble
\begin{document}
% Beginning of title page
\question{25} % Question 1
XXX
\stepcounter{qno}
\newpage
\question{25} % Question 2
XXX
\end{document}