如何更改标题以列出页面的第一部分而不是最后一部分

如何更改标题以列出页面的第一部分而不是最后一部分

页眉/页脚的标准用途是显示章节/部分信息,这些信息通常从新页面开始。我想要做的是让页眉显示第一的特定页面上的问题,而不是最后的。当问题跨越页面边界时这很有用,我可以参考标题来知道页面顶部的问题是什么。

在 MWE 中,当我查看第 2 页时,我只能知道第一部分属于问题 2,因为我看到问题 3 紧随其后。更糟糕的是,第 2 页的标题显示问题 4,但问题 4 直到第 3 页才开始。

所以,我的问题是,我该如何调整问题编号这样它就只能在页面边界上改变值,并且让标题显示第一的页面上的问题。

\documentclass{article}
\usepackage{lipsum}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[LE, LO] {Page \thepage}
\fancyhead[RE, RO] {Question \the\QuestionNumber}

% Each question is included from a separate file. But,
% for these purposes can imitate that with this
\newtoks{\QuestionNumber}
\newcommand{\MyInclude}[1]{%
    \QuestionNumber={#1}
    Question #1\newline\smallskip \lipsum[1-3]
}

\begin{document}
\MyInclude{1} 
\MyInclude{2} 
\MyInclude{3} 
\MyInclude{4} 
\MyInclude{5} 
\end{document}

总而言之,我希望第 1 页显示问题 1,显示第 2 页问题2,第 3 页显示问题 4

这个问题似乎相关在页面开始时保存文本宏的值。

答案1

以下代码生成您使用后的结果titlesec\toptitlemarks(如@StefanKottwitz 所建议)。主要要求是使用pagestyles包选项,并使用分段命令来定义编号环境/命令。在下面的示例中,我使用了\subsection。但是,它也应该适用于\section\subsubsection。我认为它不适用于\paragraph。为了(某种程度上)匹配您的格式定义\MyIncludetitlesec提供了\titleformat。在这种情况下,它删除了子节编号并将其排版为\normalfont

\documentclass[twoside]{article}
\usepackage[pagestyles]{titlesec}% http://ctan.org/pkg/titlesec
\usepackage{lipsum}% http://ctan.org/pkg/lipsum

% Definition of the page style with required headers
\newpagestyle{TitleMarks}{%
  \sethead[Top is~\toptitlemarks\thesubsection]% even-left
    [First is~\firsttitlemarks\thesubsection]% even-center
    [Bottom is~\bottitlemarks\thesubsection]% even-right
    {Top is~\toptitlemarks\thesubsection}% odd-left
    {First is~\firsttitlemarks\thesubsection}% odd-center
    {Bottom is~\bottitlemarks\thesubsection}% odd-right
}
\newpagestyle{Headings}{%
 \sethead[Page~\thepage]% even-left
   []% even-center
   [Question~\toptitlemarks\thesubsection]% even-right
   {Page~\thepage}% odd-left
   {}% odd-center
   {Question~\toptitlemarks\thesubsection}% odd-right
}
\pagestyle{Headings}% Setting the page style to the above headings

% Reformatting \subsection to look like a normal numbered paragraph (without the number)
\titleformat{\subsection}[block]{\normalfont}{}{0pt}{\smallskip}
% Strip subsection numbering from other sectional counters
\renewcommand\thesubsection{\arabic{subsection}}

% Definition of \MyInclude{...}
\newcommand{\MyInclude}[1]{%
    \subsection{Question #1} \lipsum[1-3]
}

\begin{document}
\MyInclude{1}
\MyInclude{2}
\MyInclude{3}
\MyInclude{4}
\MyInclude{5}
\end{document}

在此处输入图片描述

要查看完整内容\...titlemarks,请使用TitleMarks页面样式(而不是Headings)。它显示每个页面的顶部、第一个和底部(通过和\top...)子部分。\first...\bot...

答案2

您可以使用\toptitlemarks命令titlesec包。Gonzalo Medina 在这里给出了一个例子:不使用 fancyhdr 自定义标题

相关内容