I am writing a book and one of my chapter has a very long title. As it can't be displayed correctly on the top of even pages, I provide a "short title name" via the \chapter[short title]{long title} command. But then, "short title" appears in the table of contents, instead of the original/true/long one.

How can i have the "short title" in the header of even pages, and the "long title" in the ToC and in the "Title header"?

For reference, here is the code I use:

\documentclass[11pt,a4paper]{book}

\begin{document}

\tableofcontents

\chapter[Short title]{Very vey very very very very very very long title
    i can't display in the header}

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

\cleardoublepage

\end{document}
up vote 127 down vote accepted
\chapter[toc version]{doc version}
\chaptermark{version for header}

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=runheadtoobig

  • 1
    you were faster. :-) BTW, is this your third account? If yes, have you thought about asking a moderator to merge your accounts? – lockstep Dec 10 '10 at 13:39
  • That works perfectly, thanks! – Thomas ABBALLE Dec 10 '10 at 13:40
  • Thanks! For future readers: the link also provides very useful information for section headers, and notes the easy solution with the [toctitles] package option if you're using the {titlesec} package. – phfaist Feb 25 '16 at 19:28
  • Extra points should be given for such short answers =) – loved.by.Jesus Sep 1 '17 at 19:27
  • Aren't you life saver! – imsrgadich Sep 21 at 13:00

The sectioning commands of the memoir class feature a second optional argument:

\documentclass[11pt,a4paper]{memoir}

\begin{document}

\tableofcontents*% Starred form for not including the ToC in the ToC

\chapter[Title displayed in ToC][Title displayed in header]{Title}

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

\clearpage\null

\end{document}

EDIT: Since v3.10, the KOMA-Script classes allow to specify the usage of the optional argument of sectioning commands. The class options are headings=optiontohead, headings=optiontotoc, and headings=optiontoheadandtoc.

\documentclass[headings=optiontohead]{scrbook}

\begin{document}

\tableofcontents

\chapter[Title displayed in header]{Title; also displayed in ToC}

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

\clearpage\null

\end{document}

Another option is to use the truncate package, with fancyhdr, which truncates the header if it's too long, and adds an elypsis at the end:

 \usepackage[fit]{truncate}
 \usepackage{fancyhdr}
 \pagestyle{fancy}
 \fancyhead[RO,LE]{\truncate{.95\headwidth}{\leftmark}}
 \fancyfoot[C]{\thepage}

the ams document classes behave this way by default -- the optional argument is used only for the running head, and the long form is used in the toc.

because adjustments such as line breaks must sometimes be applied to the long form, the ams classes provide an "in-title" modification mechanism to allow different changes to apply to the header itself vs. what goes into the toc.

two commands are provided:

  • \for{toc}{...} includes the specified material in the toc entry;

  • \except{toc}{...} uses the material in the header itself, but excludes it from the toc.

this mechanism works also for lof and lot entries. additional commentary can be found in the ams author faq.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.