Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

In the header latex shows the title of the section which starts on a page. I would like it to show the title of the section which is continued from the previous page.

An example:

\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}

In this example the header on page 2 shows "2 SECTION TWO" but I'd like it to show "1 SECTION ONE".

share|improve this question

3 Answers 3

up vote 7 down vote accepted

easy fix, although it's necessary to "descend" to tex primitives to accomplish it.

in latex.ltx, the \rightmark is defined thus:

\def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}

\firstmark is (as its name implies) the first object marked on a page.

you want to change this to \topmark, which is whatever mark is in effect at the top of a page. add the following lines to your preamble:

\makeatletter
\def\rightmark{\expandafter\@rightmark\topmark\@empty\@empty}
\makeatother
share|improve this answer
    
+1 for letting me learn a new thing today. –  karlkoeller Mar 13 at 15:38
    
@bcsikos Please consider accepting this answer. See how here: How do you accept an answer? –  karlkoeller Mar 13 at 19:48

Here is a solution.

We redefine \ps@headings so to define a new command \currentsectionname which stores the name of the current section.

\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

Then, we check if the section starts a new page. If not, we change the headings so to have the name of the previous section.

\pretocmd{\section}{%
  \ifnum\value{section}>0
    \ifdim\pagetotal>0pt
      \markright{\MakeUppercase{\thesection\quad\currentsectionname}}%
    \fi
  \fi
  }{}{}

MWE:

\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} 

Output:

enter image description here

share|improve this answer

With titleps you can use a switch to decide whether you use "top", "first" or "bottom" (or others) in terms of the page style marks. For your requirement, you would use \toptitlemarks with the following in your document preamble:

\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

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.