afterpage 生成的额外页面

afterpage 生成的额外页面

我正在创建一组测试解决方案,需要有一个标题表来指示问题编号、测试年份等。

我创建了下面的代码,使用 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}

相关内容