在页眉中,LaTeX 显示从页面开始的部分的标题。我希望它显示从上一页继续的部分的标题。
一个例子:
\documentclass{article}
\pagestyle{headings}
\begin{document}
\section{Section One}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sit
amet nulla ornare erat commodo iaculis. Suspendisse eleifend nunc
nec nulla congue accumsan. Nulla ut suscipit libero, a vulputate metus.
Phasellus a vulputate sapien. In auctor rhoncus elit sit amet eleifend.
Aliquam vitae egestas nisl, in dapibus erat. Etiam ut ornare neque.
Duis feugiat nisi sit amet ligula ornare hendrerit. Curabitur interdum
arcu augue, in tincidunt mi bibendum eget. Nam eleifend nulla at ipsum
gravida, nec semper ligula sodales. Phasellus et sollicitudin sapien.
Integer eu nunc nisi. In cursus, tellus non dapibus auctor, mauris
lacus gravida felis, vel condimentum nibh ipsum in diam.
Nulla a viverra lacus. Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Proin aliquam eget ligula sit amet bibendum. Maecenas in sodales
mauris, vitae accumsan dolor. Nam vitae nunc commodo, fermentum nibh
sed, volutpat elit. Curabitur auctor tellus quis justo mollis ultrices.
Nullam porta dapibus hendrerit. Ut non iaculis tortor, quis sollicitudin
ante. Nam ut tristique enim, in aliquam augue.
Nam eu cursus lacus. Aliquam tempor placerat nulla, ac auctor nisl
commodo ac. Duis congue sed est a auctor. Aliquam dictum eu neque
ac ornare. Maecenas sodales tristique est vestibulum tempor. Morbi
commodo nibh eget fermentum vulputate. Fusce mattis ultrices neque,
eu imperdiet massa scelerisque varius. Fusce tincidunt neque sapien,
vel luctus lectus imperdiet sit amet. Nullam aliquet ultricies enim,
et sollicitudin lorem dignissim quis.
Pellentesque at convallis est. Suspendisse eget elit et nulla egestas
semper in porttitor nisi. Nunc facilisis nec arcu ut vulputate. Donec
vel semper velit. Donec blandit neque eget volutpat lacinia. Quisque
eleifend enim vel odio consequat, ut mattis ante lobortis. Morbi tempor
lorem turpis, a dignissim massa imperdiet in. Vestibulum ante ipsum
primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Sed neque augue, iaculis nec feugiat eget, varius id dui. Sed varius
lorem vitae neque placerat aliquam. Nulla volutpat congue urna id
rutrum. Morbi ullamcorper, nisl et posuere dignissim, augue lectus
tincidunt quam, sit amet luctus turpis risus sit amet velit. Curabitur
ligula orci, sollicitudin vitae neque ac, imperdiet interdum risus.
Pellentesque ut risus ante. Cras facilisis nulla id pretium consectetur.
Ut ac enim cursus, dictum tortor ultricies, lacinia nunc.
Ut quis sem nibh. Curabitur tempus felis in porttitor bibendum. Praesent
condimentum iaculis semper. In hac habitasse platea dictumst. Fusce
accumsan pulvinar ornare. Mauris eu lacinia orci. Phasellus ultricies,
ipsum eget imperdiet rutrum, nulla arcu consequat justo, in sodales
metus libero sagittis urna. Nam id ullamcorper elit. Curabitur volutpat,
nibh sit amet blandit venenatis, metus quam rhoncus massa, nec euismod
magna sapien a odio. Etiam consequat tortor dui. Ut eu lectus ac magna
elementum pretium sed nec nibh. Praesent non mi sit amet nunc gravida
tempor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sit
amet nulla ornare erat commodo iaculis. Suspendisse eleifend nunc
nec nulla congue accumsan. Nulla ut suscipit libero, a vulputate metus.
Phasellus a vulputate sapien. In auctor rhoncus elit sit amet eleifend.
Aliquam vitae egestas nisl, in dapibus erat. Etiam ut ornare neque.
Duis feugiat nisi sit amet ligula ornare hendrerit. Curabitur interdum
arcu augue, in tincidunt mi bibendum eget. Nam eleifend nulla at ipsum
gravida, nec semper ligula sodales. Phasellus et sollicitudin sapien.
Integer eu nunc nisi. In cursus, tellus non dapibus auctor, mauris
lacus gravida felis, vel condimentum nibh ipsum in diam.
Nulla a viverra lacus. Lorem ipsum dolor sit amet, consectetur adipiscing
elit. Proin aliquam eget ligula sit amet bibendum. Maecenas in sodales
mauris, vitae accumsan dolor. Nam vitae nunc commodo, fermentum nibh
sed, volutpat elit. Curabitur auctor tellus quis justo mollis ultrices.
Nullam porta dapibus hendrerit. Ut non iaculis tortor, quis sollicitudin
ante. Nam ut tristique enim, in aliquam augue.
\section{Section Two}
Nam eu cursus lacus. Aliquam tempor placerat nulla, ac auctor nisl
commodo ac. Duis congue sed est a auctor. Aliquam dictum eu neque
ac ornare. Maecenas sodales tristique est vestibulum tempor. Morbi
commodo nibh eget fermentum vulputate. Fusce mattis ultrices neque,
eu imperdiet massa scelerisque varius. Fusce tincidunt neque sapien,
vel luctus lectus imperdiet sit amet. Nullam aliquet ultricies enim,
et sollicitudin lorem dignissim quis.
Pellentesque at convallis est. Suspendisse eget elit et nulla egestas
semper in porttitor nisi. Nunc facilisis nec arcu ut vulputate. Donec
vel semper velit. Donec blandit neque eget volutpat lacinia. Quisque
eleifend enim vel odio consequat, ut mattis ante lobortis. Morbi tempor
lorem turpis, a dignissim massa imperdiet in. Vestibulum ante ipsum
primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Sed neque augue, iaculis nec feugiat eget, varius id dui. Sed varius
lorem vitae neque placerat aliquam. Nulla volutpat congue urna id
rutrum. Morbi ullamcorper, nisl et posuere dignissim, augue lectus
tincidunt quam, sit amet luctus turpis risus sit amet velit. Curabitur
ligula orci, sollicitudin vitae neque ac, imperdiet interdum risus.
Pellentesque ut risus ante. Cras facilisis nulla id pretium consectetur.
Ut ac enim cursus, dictum tortor ultricies, lacinia nunc.
\section{Section Three}
Ut quis sem nibh. Curabitur tempus felis in porttitor bibendum. Praesent
condimentum iaculis semper. In hac habitasse platea dictumst. Fusce
accumsan pulvinar ornare. Mauris eu lacinia orci. Phasellus ultricies,
ipsum eget imperdiet rutrum, nulla arcu consequat justo, in sodales
metus libero sagittis urna. Nam id ullamcorper elit. Curabitur volutpat,
nibh sit amet blandit venenatis, metus quam rhoncus massa, nec euismod
magna sapien a odio. Etiam consequat tortor dui. Ut eu lectus ac magna
elementum pretium sed nec nibh. Praesent non mi sit amet nunc gravida
tempor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\end{document}
在此示例中,第 2 页的标题显示“2 SECTION TWO”,但我希望它显示“1 SECTION ONE”。
答案1
很容易修复,尽管需要“下降”到 tex 原语才能完成它。
在 中latex.ltx
,\rightmark
定义如下:
\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
\firstmark
是(顾名思义)页面上标记的第一个对象。
您想将其更改为\topmark
,即页面顶部有效的标记。将以下几行添加到您的序言中:
\makeatletter
\def\rightmark{\expandafter\@rightmark\topmark\@empty\@empty}
\makeatother
答案2
这是一个解决方案。
我们重新定义\ps@headings
这样来定义一个\currentsectionname
存储当前部分名称的新命令。
\makeatletter
\def\ps@headings{%
\let\@oddfoot\@empty
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
\let\@mkboth\markboth
\def\sectionmark##1{%
\def\currentsectionname{##1}%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\thesection\quad
\fi
##1}}}}
\makeatother
然后,我们检查该部分是否开始新页面。如果不是,我们将更改标题,以便使用上一节的名称。
\pretocmd{\section}{%
\ifnum\value{section}>0
\ifdim\pagetotal>0pt
\markright{\MakeUppercase{\thesection\quad\currentsectionname}}%
\fi
\fi
}{}{}
梅威瑟:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{lipsum} % just for the example
\pretocmd{\section}{%
\ifnum\value{section}>0
\ifdim\pagetotal>0pt
\markright{\MakeUppercase{\thesection\quad\currentsectionname}}%
\fi
\fi
}{}{}
\makeatletter
\def\ps@headings{%
\let\@oddfoot\@empty
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
\let\@mkboth\markboth
\def\sectionmark##1{%
\def\currentsectionname{##1}%
\markright {\MakeUppercase{%
\ifnum \c@secnumdepth >\m@ne
\thesection\quad
\fi
##1}}}}
\makeatother
\pagestyle{headings}
\begin{document}
\section{Section One}
\lipsum[1-6]
\section{Section Two}
\lipsum[1-2]
\section{Section Three}
\lipsum[1-3]
\end{document}
输出:
答案3
和titleps
您可以使用开关来决定在页面样式标记方面使用“top”、“first”还是“bottom”(或其他)。根据您的要求,您可以\toptitlemarks
在文档序言中使用以下内容:
\usepackage{titleps}% http://ctan.org/pkg/titleps
\newpagestyle{main}{% Create new pagestyle 'main'
\setheadrule{0pt}% No header rule
\sethead
{\toptitlemarks\thesection\quad\MakeUppercase{\sectiontitle}}% left
{}% center
{\thepage}% right
}
\pagestyle{main}% Select 'main' page style