% % Copyright (C) 1998-2019 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. % % Repository: https://github.com/jbezos/titlesec % \def\fileversion{2.13} \def\docdate{2019/10/16} \documentclass[a4paper]{ltxguide} \usepackage[sf,bf,compact,topmarks,calcwidth,pagestyles]{titlesec} \usepackage{titletoc} \def\gobble#1{} \DeclareRobustCommand\cs[1]{\expandafter\gobble\string\\#1} \makeatletter \newenvironment{desc} {\if@nobreak \vskip-\lastskip \vspace*{-2.5ex}% \fi \decl} {\enddecl} \makeatother \usepackage{textcomp,pslatex} \usepackage[linktocpage]{hyperref} \title{Headers and footers with \textsf{titleps}\footnote{The \textsf{titleps} package is currently at version \fileversion. \copyright{} 2016 Javier Bezos. All Rights Reserved.}} \author{Javier Bezos\footnote{For bug reports, comments and suggestions go to \href{http://www.texnia.com/contact.html}% {\texttt{http://www.texnia.com/contact.html}}. English is not my strong point, so contact me when you find mistakes in the manual. Other packages by the same author: \textsf{gloss} (with Jos\'e Luis D\'{\i}az), \textsf{enumitem, accents, tensind, esindex, dotlessi}.}} \date{\docdate} \widenhead{2.1pc}{0pc} \titlelabel{\thetitle.\quad} \renewpagestyle{plain}[\small\sffamily\slshape]{ \footrule \setfoot{}{\thepage}{}} \newpagestyle{myps}[\small\sffamily\slshape]{ \headrule \sethead{titlesec -- titleps}{\sectiontitle}{\thepage}} \pagestyle{myps} \newcommand{\examplesep}{% \begin{center}% \rule{4pt}{4pt}% \end{center}} \contentsmargin{0pt} \titlecontents*{section}[0pt]%[1.8pc] {} {\thecontentslabel. } {} {, \thecontentspage} [. --- ][.] \addtolength{\topmargin}{-3pc} \addtolength{\textwidth}{6pc} \addtolength{\oddsidemargin}{-2pc} \addtolength{\textheight}{7pc} \raggedright \parindent1em \parskip0pt \begin{document} \maketitle \tableofcontents \section{Introduction} The \textsf{titleps} package provides tools for one-stage setting of page styles (headlines and footlines). A higher-level interface is used, where the mark mechanism is hidden and there is no need to deal with |\leftmark|s and |\rightmark|s -- just use a command or variable registered as a ``mark'' as the expected value will be returned, i.e., those when the mark was emitted, either by a sectioning command or explicitly with |\chaptermark|, |\sectionmark|, etc. A simple example, whose meaning should be obvious, is: \begin{verbatim} \newpagestyle{main}{ \sethead[\thepage][\chaptertitle][(\thesection] % even {\thesection)}{\sectiontitle}{\thepage}} % odd \pagestyle{main} \end{verbatim} Other features are: \begin{itemize} \item Working top marks, compatible with floats (unlike the standard |\topmark|, which does not work correctly in \LaTeX{}). \item Access to top, first and botttom marks in a single headline/footline (e.g., the first and last section numbers). \item Marks for more than 2 sectioning levels. \item Auto-defining of suitable |\sectionmark| and the like. \item Simple (and not so simple) headrules and footrules. \item Headlines and footlines for pages with floats. \item Headlines and footlines for specific floats (a sort of |\thispagestyle| for floats). \item Multiple sets of marks (named here \emph{markset}s and \textit{extra marks}). \end{itemize} It can be used without \textsf{titlesec}, but you will get most of it when used together. To load it as a separate package, use the customary \verb|\usepackage{titleps}|, but with \textsf{titlesec} you have to load it with: \begin{verbatim} \usepackage[pagestyles]{titlesec} \end{verbatim} Specific tools for sectioning command marks are provided, which are considered the main \textit{markset} (unnamed) and carry out some internal task. However, \textsf{titleps} can be used as well for headers with the first an last entry of a page in a dictionary or index, for example, thank to the \textit{extra marks} described below. It works with standard classes and many others; however, additional \LaTeX{} layout adjustments could be necessary in some of them (for instance the \textsc{AMS} classes) and several packages emitting marks directly with \verb|\markboth| and \verb|\markleft|.\footnote{% Two columns layout requires the \textsf{fix2col} package by David Carlisle.} Once loaded the package, you can define your own page styles and then activate them, but note page styles so defined cannot be used with \verb|\thispagestyle| except if the surrounding page style has been defined with \textsf{titleps}, too. %%%% empty ? plain ? \section{Defining Page Styles} \begin{desc} |\newpagestyle{}[]{}|\\ |\renewpagestyle{}[]{}| \end{desc} Defines a new style or redefines an existing one, named ||. For convenience, spaces and end of lines are ignored, and you need not ``hide'' them with |%|.\footnote{Even if marks should be reserved to pass information to headers, some classes, like the AMS ones, introduce additional code. When redefining the |plain| style of AMS classes, you must add the following line: |\cs{global}\cs{topskip}\cs{normaltopskip}|.} || is any command to be applied to both footlines and headlines. Fragile commands are allowed. In || you can use: \begin{desc} |\sethead[][][]|\\ | {}{}{}|\\ |\setfoot[][][]|\\ | {}{}{}| \end{desc} Set the corresponding part in headlines and footlines (note the ``visual'' layout of parameters). The optional arguments are the three or none. If no optional arguments are given the odd-page settings applies to both even and odd pages. A couple of starred variant (|\setfoot*|, |\sethead*|) reverses the order of the settings for even pages (obviously, with them the optional arguments are not allowed). If |\sethead| is not given, then the headline it is left empty, and same for |\setfoot| and the footline. In the arguments of |\sethead|/|\setfoot| and because of its one-stage mechanism, we must distinguish between two groups of commands: \begin{itemize} \item The first one includes those saved when the marks are emitted, with information related to sections, and includes: \begin{itemize} \item |\thechapter|, |\thesection|, |\thesubsection|\dots{} \item |\chaptertitle|, |\sectiontitle|, |\subsectiontitle|\dots{} which print the chapter, section\dots{} title. \item (Only \textsf{titlesec}. Not in \textsf{titleps}.) |\ifthechapter{}{}|, |\ifthesection{}{}|, |\ifthesubsection{}{}|\dots{} which expands to || except if the corresponding title lacks of label or there is no title yet after the superior level (for example, between |\chapter| and a subsequent |\section|). \item Any other command or value ``registered'' as ``mark.'' (See below.) \end{itemize} They are ordinary commands, with no internal marks at all, and you can test if, for example, they are empty. \item The second group are those expanded on every page, and includes: \begin{itemize} \item |\thepage|. \item Any other command not included in the previous items. \end{itemize} \end{itemize} \begin{desc} |\settitlemarks{,,...}|\\ |\settitlemarks*{,,...}| \end{desc} Sets which |\...title| commands are to be defined, and when the marks are emitted; any number of levels is allowed (1, 2, 3...). For example |\settitlemarks{chapter,section}| means that: \begin{itemize} \item |\chaptertitle| and |\sectiontitle| are the allowed titles in headlines, \item |\sectiontitle| is reset in |\chapter|, \item (Only \textsf{titlesec}. Not in \textsf{titleps}.) |\ifthechapter| and |\ifthesection| are valid tests. \item Marks are updated in |\chapter| and |\section|. \end{itemize} Default is |\settitlemarks{chapter,section}|, but |\settitlemarks{section,subsection}| in \textsf{article} class. |\settitlemarks| may be used outside |\(re)newpagestyle| to set the default to be used in newly defined and redefined page styles -- it is used in |\pagestyle|.\footnote{The command \texttt{\string\setmarks} is deprecated. Now \texttt{\string\setmarks\string{\string}\string{\string}}is \texttt{\string\settitlemarks\allowbreak\string{,\allowbreak\string}}.} The starred version |\settitlemarks*| creates parallel extra marks as described below. \begin{desc} |\headrule \footrule|\\ |\setheadrule{} \setfootrule{}| \end{desc} If you want a rule below the headline and above the footline. You may also set their width directly with the commands |\setheadrule| and |\setfootrule|. (For instance, |\setheadrule{.4pt}| which is, by the way, the default value.) These commands are local to a page style, i.e., defining them directly in the preamble will not work because the page style settings will override them. \begin{desc} |\makeheadrule \makefootrule| \end{desc} These commands are used by \textsf{titleps} to typeset the rules. If there is no rule, both commands are empty (this value is the default). |\setheadrule{|\emph{dim}|}| just stands for \begin{verbatim} \renewcommand{\makeheadrule}{\rule[-.3\baselineskip]{\linewidth}{}} \end{verbatim} unless if \emph{dim} is 0 pt, which empties |\makeheadrule| (and similarly |\setfootrule|). You can access the total header/footer width with |\linewidth| but the box enclosing the rule is in fact dimensionless. Hence, you must be concerned with the rule placement only. Its baseline is the same as that of the header/footer. That means the material to be used as rule should be raised or lowered with |\raisebox|, the lifting argument in |\rule| or by using sensible coordinates in |picture|, for instance. That makes easy to place material above \emph{and} below. For instance, the following code creates a headline with a black bold line above and a red rule below (the \textsf{color} package is required): \begin{verbatim} \renewcommand{\makeheadrule}{% \makebox[0pt][l]{\rule[.7\baselineskip]{\linewidth}{0.8pt}}% \color[named]{Red}% \rule[-.3\baselineskip]{\linewidth}{0.4pt}} \end{verbatim} Of course, the material to be used as rule is not restricted to actual rules; pictures and leaders, for instance, are allowed, too. \section{On \texttt{\cs{markboth}} and \texttt{\cs{markleft}}} As \textit{The \LaTeX{} Companion explains} ``Leslie Lamport had a specific marking scheme in mind when he designed those commands''. They are clearly intended for the \verb|heading| and \verb|myheading| pagestyles, with a \textit{main-mark} on the left page and a \textit{sub-mark} on the right one. In order to provide the functionality offered by \textsf{titleps}, a more general, less specific mechanism is devised, which means |\markboth| here does not make sense, because it doesn't work like in standard \LaTeX, and in fact, can lead to unpredictable results. Therefore, using directly the marking commands is discouraged (see |titlesec.pdf|), but if you need them, you may write: \begin{verbatim} \chapter*{My Chapter} \chaptermark{My Chapter} \end{verbatim} But some issues remain, because there are a number of packages assuming the pagestyle is \verb|heading| or \verb|myheading|. This is, of course, a reasonable guess, but not always correct (even if \textsf{titleps} is not used at all). Most of them do the right thing -- \verb|\markboth| is encapsulated into a macro easily redefinable so that the user can modify it if necessary. This is true, for example, for \textsf{biblatex}, but unfortunately not for \textsf{endnotes}. When this happens, you can resort to the following macro. \begin{desc} |\setmarkboth{}| \end{desc} From this point on, \verb|\markboth| behaves as defined. It doesn't redefine directly the command, but rather provides a replacement code (you can use |#1| and |#2| for the two arguments). With |\resetmarkboth| (which can be used inside |\setmarkboth|) the original definition will be again in force. For example, to cancel the next |\markboth|: \begin{verbatim} \setmarkboth{\resetmarkboth\markboth{}{}} \end{verbatim} \section{Headline/footline width} \begin{desc} |\widenhead[][]{}{}|\\ |\widenhead*{}{}| \end{desc} Makes the headlines/footlines lines wider. The extra width is asymmetrically added and hence the two [four] arguments. Like |\sethead|, the starred version reverses the setting for even pages---for example, |\widenhead*{0pt}{6pc}| is the same as |\widenhead[6pc][0pt]{0pt}{6pc}|. To be used outside |\(re)newpagestyle|. \begin{desc} |nopatches| \qquad (package option) \end{desc} By default, sectioning commands are patched slightly for top marks and |\@mkboth| to work, so that page styles behave like standard |headings|. However, if you want to be explicit, like with standard |myheadings|, and emit premarks and, if necessary, marks by yourself, set this package option. Remenber you have to use |\sectionmark| and the like, and not |\markboth| or |\markright|. You might also prefer to patch the sectioning commands by yourself, either with low-level definitions or with the provided |\TitlepsPatchSection| (with a starred version which adds no premark and intended mainly for chapters). For example: \begin{verbatim} \TitlepsPatchSection*{chapter} % patches \chapter \TitlepsPatchSection{section} % patches \section \end{verbatim} (In standard classes |\part| emits no mark, and therefore it is not patched by default.) \section{Marks} Marks can be retrieved in 4 ways: \begin{description} \item[top marks] If a page begins with text, they are the marks belonging to the sectioning unit of that text. If a page begin with a sectioning title, they are the marks of that title. In other words, top marks refer to the section immediately adjacent to the headline. \item[first marks] The marks of the very first sectioning title. \item[botttom marks] The marks of the very last (bottom) sectioning title (also known as \textit{bot marks}). \item[next top marks] A botttom mark with the values of the top mark of the next page (only |straight| class or equivalent); by picking some value from it and comparing it with the corresponding value from the botttom marks you may know if a section continues in the next page. Of course, it will not be used very often. \end{description} Standard \LaTeX{} provides only first and bottom marks. As you see, with \textsf{titleps} you have two additional marks, namely, top and next top marks. It should be stressed top marks are not the same as the primitive \verb|\topmark| (which, in fact, is not used internally at all). They are true top marks, returning the expected result when the title is at the top of the page. Further, they are compatible with floats, which is not true with \verb|\topmark|s. However, they fail with explicit page breaks, but you can use \verb|\pretitlemark| as described below. \begin{desc} |outermarks innermarks topmarks botmarks| \qquad (package options) \end{desc} |innermarks| is the default in \LaTeX, with bottom marks in even pages and first marks in odd pages. More convenient is |outermarks|, with top marks in even pages and bottom marks in odd pages; it is the more usual system in classic scientific literature and it is described in \textit{The \TeX{}book}, p.~259.\footnote{|outermarks| may not work well in conjunction with explicit |\string\
mark| commands} Both of them are intended for two side printing; |topmarks|/|botmarks| are intended for one side printing with top/bot marks in every page (they can be used in two side printing as well). \begin{desc} |\bottitlemarks \toptitlemarks \firsttitlemarks \nexttoptitlemarks|\\ |\outertitlemarks \innertitlemarks| \end{desc} These commands set which mark the values of the subsequent |\thesection|, |\sectiontitle|, etc., will be taken from. These macros are switches, and therefore subsequent commands and variables are taken from the selected mark. The following is valid: \begin{verbatim} \toptitlemarks\textbf{\thesection.} \sectiontitle -- \bottitlemarks\textbf{\thesection.} \sectiontitle \end{verbatim} You can use them freely in your headers;\,% \footnote{Not exactly: top marks must not be used in the page where a chapter begins, except by overriding the default definition and making it of |top| class.} just for fun, the following header shows the section label from three of these marks: \begin{verbatim} \newpagestyle{funny}{ \sethead{\toptitlemarks Top is \thesection} {\firsttitlemarks First is \thesection} {\bottitlemarks Bot is \thesection}} \end{verbatim} In multilingual documents, the language in force is that corresponding to the package options -- command versions does not switch the language, but you can do it easily with the help a new title mark and then switching the language, as explained below. \begin{desc} |\newtitlemark{}|\\ |\newtitlemark*{}| \end{desc} Add a command or a variable to the list of ``marks'' to be emitted at a sectioning command. The macro must be parameterless, and the variable is either a length, if it has the form \verb|\|, or a counter, if it has the form \verb|| (i. e., a string). For example, if you write (with \textsf{babel}): \begin{verbatim} \newtitlemark{\languagename} \end{verbatim} then a |\languagename| in the head/foot will contain the language when the corresponding mark was emitted; unfortunately, \textsf{babel} does not allow |\languagename| as the first argument of |\foreignlanguage| (it enters in a infinite loop), but there is a simple trick -- just use an intermediate command: \begin{verbatim} \newcommand\titlelanguage{\languagename} \newtitlemark{\titlelanguage} \end{verbatim} (What is saved is the expansion of |\titlelanguage|, which is turn is the expansion of |\languagename|. Alternatively, you can create the intermediate command with |\let| in the header itself.) Marks to be emitted at other places (not sectioning commands) are handled with extra marks and \textit{marksets} (see below). Commands must be robust, but not protected, or the value returned will not be the right one. Remember there are two kinds of robust commands -- those containing in turn robust commands and those protected with, say, |\DeclareRobustCommand|.\footnote{Unfortunately, \texttt{\string\DeclareRobustCommand} has a misleading name, because a command created with \texttt{\string\newcommand} can be robust, too. A better name would have been \texttt{\string\DeclareProtectedCommand}.} An example of how to use protected commands is a layout used sometimes if sections are long as well as their titles, where the title is splitted across the left and the right pages. Here is how this can be carried out: \begin{verbatim} \DeclareRobustCommand\splitheader[2]{#1 #2} \def\contsplitheader{} \def\dosplitheader{% \gdef\contsplitheader{}% \DeclareRobustCommand\splitheader[2]{##1\gdef\contsplitheader{##2}}} \renewpagestyle{headings}{ \sethead[\thepage] [] [\dosplitheader\sectiontitle] {\contsplitheader} {} {\thepage} } \pagestyle{headings} \end{verbatim} (Note the header also uses |\DeclareRobustCommand|.) \begin{desc} |\pretitlemark{
}{}|\\ |\pretitlemark*{
}{}| \end{desc} Top marks require in fact two marks, one before the page break and other after it. This is done by \textsf{titlesec}, while \textsf{titleps} patches the sectioning commands as described above. However, if you need an explicit page break you can emit the mark with |\pretitlemark|. For example: \begin{verbatim} \pretitlemark{section}{Performing Brahms} \newpage \section{Performing Brahms} \end{verbatim} Note the text in the premark is the title of the next section. The counter is advanced temporarily, so that it has the right value, but if for some reason you do not want that, just use \verb|\pretitlemark*|. \begin{desc} |\ifsamemark{}{}{}{}| \end{desc} One of the disavantaged of the switching mechanism is that comparing a command from, say, the top marks and the botttom marks is not trivial. This macro just makes it simpler. If you want to compare the currect \verb|\thesection| with that in the top mark, write: \begin{verbatim} \ifsamemark\toptitlemarks\thesection{}{} \end{verbatim} \section{Running heads with floats} \begin{desc} |psfloats| \qquad (package option) \end{desc} This package option activates the commands described in this section.% \footnote{It redefines some internal \LaTeX{} commands and there could be incompatibilities with other packages modifying the same commands. That's the very reason these commands are loaded only optionally. As of version 2.6 the syntax was extended with a new argument to allow extra stuff in running heads/foots. This change is backward compatible---just preserve the old name \verb|floatps|, which is deprecated, if you want the pre-2.6 behaviour.} \begin{desc} |\setfloathead*{.}{.}{.}{}[]|\\ |\setfloathead[.][.][.]{.}{.}{.}{}[]|\\ (Similarly |\setfloatfoot|.) \end{desc} The arguments with a dot are similar to those of |\sethead|. The final argument says the head is used when there is a float of the specified types (default is |tp| in headers, and |bp| in footers). For example: \begin{verbatim} \newpagestyle{main}{% \sethead ... your definition \setfoot ... your definition \headrule \footrule \setfloathead{}{}{}{\setheadrule{0pt}}[p] \setfloatfoot{}{}{}{\setfootrule{0pt}}[p]} \end{verbatim} removes the header/footer on float pages, including the rules. \begin{desc} |\nextfloathead*{.}{.}{.}{}[]|\\ |\nextfloathead[.][.][.]{.}{.}{.}{}[]|\\ (Similarly |\nextfloatfoot|.) \end{desc} You may force a header (respectively footer) when a certain float is the first top one (respectively last bottom) with those commands just before the corresponding float, where the arguments with a dot are similar to those of |\sethead|. Those commands are used by themselves, without putting them inside |\(re)newpagestyle|. So, to empty the headline when a certain figure is placed at the top (because it is a bleed, for example): \begin{verbatim} \nextfloathead{}{}{}{}[t] \begin{figure} ... \end{figure} \end{verbatim} \section{Extra marks} Both \textsf{titlesec} and \textsf{titleps} provide tools for handling extra marks, if you are using an $\epsilon$-\TeX{} based engine (currently most of them) and load the \textsf{etex} package or equivalent. The way they work are conceptually similar to the title marks described above -- you set which commands or variables are to get synchronized in heads and foots. To use extra marks, you have to load them with the following package option: \begin{desc} |extramarks| \qquad (package option) \end{desc} Extra marks are subsidiary. If page styles are modified internally by another package and the document does not make use of sectioning commands, you might still need an empty title mark (like \verb|\sectionmark{}|), as well as to synchronize the language by hand. In many cases, the following ``short'' marks mechanism will be enough. With it, you simply say with \verb|\newshormark| the name of a command to be used in heads or foots, and then emit the mark at appropiated places (short marks for variables are not available). An example illustrates how this is carried out: \begin{verbatim} \newcommand\lemmatitle{} \newshortmark\lemmatitle \newcommand\lemma[1]{% \renewcommand\lemmatitle{#1}% \preshortmark\lemmatitle % if you want top marks \pagebreak[2]% \vspace{1em}% \textbf{#1}\enspace \shortmark\lemmatitle} \newpagestyle{main}{ \sethead{}{\topshortmark\lemmatitle --\firstshortmark\lemmatitle --\botshortmark\lemmatitle --\nexttopshortmark\lemmatitle}{}} \pagestyle{main} \end{verbatim} Top marks require emitting the marks before the page break -- just use the command \verb|\preshortmark| as shown above. Otherwise, you may omit it. Unlike title marks and extra marks, the selector of short marks (\verb|\topshortmark|, \verb|\firstshortmark|, \verb|\botshortmark|, \verb|\nexttopshortmark|), is \textit{not} a switch and must be always immediately followed by the command to be retrieved. For a more general approach use the following tools. \begin{desc} |\newmarkset{}| \end{desc} A \textit{markset} contains a set of related commands and variables intended to be emitted simultaneously as marks, so that their values can be retrieved in heads/foots. A typical \textit{markset} could be a title and its counter (and perhaps, in a multilingual document, the active language, i.e., \verb|\languagename| in \textsf{babel}, or an intermediate command). There is always a special unnamed \textit{markset} for sectioning marks, which is the main one and handled with the tools described above (with |title| in their names). \begin{desc} |\newextramark{}{}|\\ |\newextramark*{}{}| \end{desc} Add to a \textit{markset} a command or a variable to be synchronized . They are identical to \verb|\newtitlemark| and \verb|\newtitlemark*|, except for the additional parameter with the \textit{markset} name. \begin{desc} |\botextramarks{} \topextramarks{}|\\ |\firstextramarks{} \nexttopextramarks{}|\\ |\outerextramarks{} \innerextramarks{}| \end{desc} The \verb|extra| counterparts of the \verb|title| commands described above, with the same behaviour. For example: \begin{verbatim} \newcommand{\lemmatitle}{} \newcounter{lemma} \newmarkset{lemma} \newextramark{lemma}{\lemmatitle} \newextramark*{lemma}{lemma} % ie, the counter `lemma' \newcommand{\lemma}[1]{% \renewcommand{\lemmatitle}{#1}% \stepcounter{lemma}% \preextramark{lemma}% \pagebreak[2]% \vspace{1em}% \textbf{(\arabic{lemma}) #1}\enspace \extramark{lemma}} \newpagestyle{main}{ \sethead{} {\topextramarks{lemma}(\arabic{lemma}) \textbf{\lemmatitle}} {}} \pagestyle{main} \end{verbatim} \begin{desc} |\settitlemarks*{,,...}| \end{desc} By default, \LaTeX{} and \textsf{titleps} use a single \textit{markset} for all sectioning levels. This is problematic, for example, in the \textsf{article} class, because sections does not start a new page. Consider the following piece of code: \begin{verbatim} \section{A section} \subsection{A subsection} \end{verbatim} On odd pages with first marks and subsection titles, the head has no title, because \verb|\subsection| is the second mark, not the first one. To overcome this limitation, you can use the starred version of \verb|\settitlemarks|, which creates parallel \textit{marksets} (one per level) synchonized with the main \textit{markset}. They are retrieved like other extra marks, but they are special in that you cannot emit them by yourself -- they are always emitted by the corresponding sectioning mark. So, with \begin{verbatim} \settitlemarks*{section,subsection} \end{verbatim} and a page style containing \begin{verbatim} \firstextramarks{subsection}\subsectiontitle \end{verbatim} you retrieve the mark emitted by the first \verb|\subsection|, even if preceded by a \verb|\section|. (Top marks are best retrieved from the main \textit{markset}.) They are extra marks, and therefore language synchronization has to be done by hand -- add \verb|\languagename| or an intermediate command to the main \textit{markset} with \verb|\newtitlemark| and, if you want, define a command. For example: \begin{verbatim} % use an intermediate command because we'll need \foreignlanguage \newcommand\titlelanguage{\languagename} \newtitlemark{\titlelanguage} % define a command to ease defining page styles \newcommand{\toplang}[1]{% {\topextramarks{section}% \foreignlanguage{\titlelanguage}{#1}}} \end{verbatim} \section{A couple of examples} Because of the way marks are handled, special constructs like this are allowed: \begin{verbatim} \newpagestyle{main}[\small\sffamily]{ \sethead[\textbf{\thepage}] [\textsl{\chaptertitle}] [[\toptitlemarks\thesection--\bottitlemarks\thesection] {\toptitlemarks\thesection--\bottitlemarks\thesection]} {\textsl{\sectiontitle}} {\textbf{\thepage}}} \end{verbatim} As you can see, the range of sections in a page with |\thesection| is printed in both left and right heads. Of course, this example should be fine tuned to collapse the ranges if there is a single section in a page (with |\ifsamemark|), but it gives a hint of how to get stunning headers. In this document, the following styles are used: \begin{verbatim} \widenhead{2.1pc}{0pc} \renewpagestyle{plain}[\small\sffamily\slshape]{ \footrule \setfoot{}{\thepage}{}} \newpagestyle{myps}[\small\sffamily\slshape]{ \headrule \sethead{titlesec -- titleps}{\sectiontitle}{\thepage}} \end{verbatim} The following definitions provide page styles similar to those in Lamport's \textit{The \LaTeX\ book} (with the \textsf{calc} package): \begin{verbatim} \widenhead*{0pt}{\marginparsep + \marginparwidth} % symmetrically \renewpagestyle{plain}{} \newpagestyle{latex}[\bfseries]{ \headrule \sethead[\thepage][][\chaptertitle] {\thesection\ \sectiontitle}{}{\thepage}} \pagestyle{latex} \end{verbatim} % \section{Remarks} % % Page styles in standard \LaTeX{} are somewhat rudimentary. For % example |\thispagestyle| is not always correctly synchronized with % sectioning marks, and if you set |\pagestyle{plain}| and then % |\thispagestyle{headings}|, its behaviour is not the expected one. % The same happens if a page style defined in \textsf{titleps} is used % in a |\thispagestyle| in the context of a standard page style -- you % have to define the main one as well. % \section{Some tips and tricks} % % star |\*| % % split heads % % bible \end{document} MIT License ----------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.