页眉/页脚的标准用途是显示章节/部分信息,这些信息通常从新页面开始。我想要做的是让页眉显示第一的特定页面上的问题,而不是最后的。当问题跨越页面边界时这很有用,我可以参考标题来知道页面顶部的问题是什么。
在 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
。为了(某种程度上)匹配您的格式定义\MyInclude
,titlesec
提供了\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 自定义标题。