You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1058 lines
47 KiB
1058 lines
47 KiB
% ======================================================================
|
|
% common-pagestylemanipulation.tex
|
|
% Copyright (c) Markus Kohm, 2013-2019
|
|
%
|
|
% This file is part of the LaTeX2e KOMA-Script bundle.
|
|
%
|
|
% This work may be distributed and/or modified under the conditions of
|
|
% the LaTeX Project Public License, version 1.3c of the license.
|
|
% The latest version of this license is in
|
|
% http://www.latex-project.org/lppl.txt
|
|
% and version 1.3c or later is part of all distributions of LaTeX
|
|
% version 2005/12/01 or later and of this work.
|
|
%
|
|
% This work has the LPPL maintenance status "author-maintained".
|
|
%
|
|
% The Current Maintainer and author of this work is Markus Kohm.
|
|
%
|
|
% This work consists of all files listed in manifest.txt.
|
|
% ----------------------------------------------------------------------
|
|
% common-pagestylemanipulation.tex
|
|
% Copyright (c) Markus Kohm, 2013-2019
|
|
%
|
|
% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
|
|
% Version 1.3c, verteilt und/oder veraendert werden.
|
|
% Die neuste Version dieser Lizenz ist
|
|
% http://www.latex-project.org/lppl.txt
|
|
% und Version 1.3c ist Teil aller Verteilungen von LaTeX
|
|
% Version 2005/12/01 oder spaeter und dieses Werks.
|
|
%
|
|
% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
|
|
% (allein durch den Autor verwaltet).
|
|
%
|
|
% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
|
|
%
|
|
% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
|
|
% ======================================================================
|
|
%
|
|
% Text that is common for several chapters of the KOMA-Script guide
|
|
% Maintained by Markus Kohm
|
|
%
|
|
% ----------------------------------------------------------------------
|
|
%
|
|
% Absaetze, die mehreren Kapitels in der KOMA-Script-Anleitung gemeinsam sind
|
|
% Verwaltet von Markus Kohm
|
|
%
|
|
% ============================================================================
|
|
|
|
\KOMAProvidesFile{common-pagestylemanipulation.tex}
|
|
[$Date: 2018-02-05 01:50:56 -0800 (Mon, 05 Feb 2018) $
|
|
KOMA-Script guide (common paragraph:
|
|
Setting up defined page styles)]
|
|
\translator{Markus Kohm\and Jana Schubert\and Karl Hagen}
|
|
|
|
% Date version of the translated file: 2019-12-06
|
|
|
|
\section{Manipulating Page Styles}
|
|
\seclabel{pagestyle.content}
|
|
\BeginIndexGroup
|
|
\BeginIndex{}{page>style}
|
|
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
Although \Package{scrlayer} itself does not define concrete page styles with
|
|
content\,---\,the previously mentioned page styles
|
|
\DescRef{\LabelBase.pagestyle.@everystyle@} and \PageStyle{empty} are
|
|
initially defined without any layers, i.\,e., without content\,---\,, the
|
|
package provides some options and commands to manipulate their contents.%
|
|
}{%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\autoref{sec:scrlayer-scrpage.predefined.pagestyles} explains how the page
|
|
styles \DescRef{\LabelBase.pagestyle.scrheadings} and
|
|
\DescRef{\LabelBase.pagestyle.plain.scrheadings} are defined and how these
|
|
defaults can be changed. But topics such as creating running headers,
|
|
changing the widths of the header and footer, and putting horizontal lines
|
|
above or below the header or footer have yet to be described. Although
|
|
these capabilities are actually part of the
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
\important{\hyperref[cha:scrlayer]{\Package{scrlayer}}} package, they will
|
|
be explained below because these basic features of
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}} make up an important part of
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\Package{scrlayer-scrpage}%
|
|
}{%
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
}.%
|
|
}{%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage-experts}{%
|
|
This section is a supplement to
|
|
\autoref{sec:scrlayer.pagestyle.content}. It describes features that may
|
|
be too complicated for beginners.%
|
|
}{\InternalCommonFileUsageError}%
|
|
}%
|
|
}
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iffalse}{%
|
|
\csname iftrue\endcsname}%
|
|
\begin{Declaration}
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
\Option{automark}
|
|
\OptionVName{autooneside}{simple switch}
|
|
\Option{manualmark}
|
|
}{}%
|
|
\Macro{automark}\OParameter{section level of the right mark}
|
|
\Parameter{section level of the left mark}
|
|
\Macro{automark*}\OParameter{section level of the right mark}
|
|
\Parameter{section level of the left mark}
|
|
\Macro{manualmark}
|
|
\end{Declaration}
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\begin{Explain}
|
|
In both the standard \LaTeX{} classes and the \KOMAScript{} classes, the
|
|
decision of whether to use automatic or static running
|
|
heads\Index{running heads>automatic}\Index{running heads>static} is made
|
|
by using the appropriate page style. Running heads repeat some
|
|
descriptive text, such as a title, that is appropriate to the page or
|
|
column, usually in the header, more rarely in the footer. As already
|
|
explained in
|
|
\autoref{sec:maincls.pagestyle}, you get automatic running heads with
|
|
\DescRef{maincls.pagestyle.headings}\IndexPagestyle{headings}%
|
|
\important{\DescRef{maincls.pagestyle.headings}}
|
|
|
|
In the article classes\OnlyAt{\Class{article}\and \Class{scrartcl}}
|
|
\Class{article} or \hyperref[cha:maincls]{\Class{scrartcl}}, the
|
|
\PageStyle{headings}\IndexPagestyle{headings} page style uses the
|
|
section heading, which is either the mandatory or the optional argument
|
|
of \DescRef{maincls.cmd.section}, for the running head%
|
|
\textnote{automatic running head} of one-sided documents. Two-sided
|
|
documents use this section heading as the \emph{left mark} and the
|
|
subsection heading as the \emph{right mark}. The left mark is printed,
|
|
as the name indicates, on left-hand (verso) pages. The right mark is
|
|
printed on right-hand (recto)\,---\,in one-sided printing this means on
|
|
all\,---\,pages. The classes by default also delete the right mark
|
|
whenever they put the section heading into the left mark.
|
|
|
|
The report and book classes \OnlyAt{\Class{report}\and
|
|
\Class{scrreprt}\and \Class{book}\and \Class{scrbook}} start one level
|
|
higher. Thus they use the chapter heading as the right mark in one-sided
|
|
printing. In two-sided printing, the chapter heading is the left mark
|
|
and the section heading is the right mark.
|
|
|
|
If you use \DescRef{maincls.pagestyle.myheadings}%
|
|
\IndexPagestyle{myheadings}%
|
|
\important{\DescRef{maincls.pagestyle.myheadings}}\textnote{manual
|
|
running head}, the marks in the page header still exist, and the page
|
|
numbers are placed in the same way, but section commands no longer set
|
|
the marks automatically. You can set them manually\important{%
|
|
\DescRef{\ThisCommonLabelBase.cmd.markright}\\
|
|
\DescRef{\ThisCommonLabelBase.cmd.markboth}} using the commands
|
|
\DescRef{\ThisCommonLabelBase.cmd.markright} and
|
|
\DescRef{\ThisCommonLabelBase.cmd.markboth}, which are described later
|
|
in this section.
|
|
\end{Explain}\par%
|
|
This distinction has been eliminated by %
|
|
\iffalse \Package{scrpage2} and now also by \fi%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}\IndexPackage{scrlayer}. Instead
|
|
of distinguishing between automatic\textnote{automatic and manual running
|
|
heads} and manual running heads by which page style is selected, there
|
|
are two new commands: \Macro{automark} and \Macro{manualmark}.%
|
|
}{%
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
For most classes, the choice of a page style\,---\,generally
|
|
\PageStyle{headings} or \PageStyle{myheading}\,---\,determines whether
|
|
the running heads are created automatically or manually.
|
|
% TODO: Fix new translation
|
|
With \Package{scrlayer} the distinction is done with the two commands
|
|
\Macro{automark} and \Macro{manualmark}.%
|
|
% :ODOT
|
|
}{\InternalCommonFileUsageError}%
|
|
}%
|
|
|
|
The \Macro{manualmark}\important{\Macro{manualmark}} command switches to
|
|
manual marks and deactivates the automatic filling of the marks. In contrast,
|
|
\Macro{automark}\important{\Macro{automark}} and \Macro{automark*} define
|
|
which section levels should be used to set the mark automatically. The
|
|
optional argument is the \PName{section level of the right mark}, the
|
|
mandatory argument the \PName{section level of the left mark}. The
|
|
arguments should always be the name of a section level like
|
|
\PValue{part}, \PValue{chapter}, \PValue{section}, \PValue{subsection},
|
|
\PValue{subsubsection}, \PValue{paragraph}, or \PValue{subparagraph}.
|
|
|
|
Normally, the higher level should be used for the left mark and the lower
|
|
level for the right mark. This is only a convention and not a requirement,
|
|
but it makes sense.
|
|
|
|
Please note\textnote{Attention!} that not every class provides running heads
|
|
for every section level. For example, the standard classes\textnote{%
|
|
\KOMAScript{} vs. standard classes} never use \DescRef{maincls.cmd.part}
|
|
in the heading. The \KOMAScript{} classes, on the other hand, support all
|
|
levels.
|
|
|
|
The difference between \Macro{automark} and \Macro{automark*}%
|
|
\important{\Macro{automark*}} is that \Macro{automark} overrides all
|
|
previous commands to automatically set the mark, while \Macro{automark*}
|
|
changes only the behaviour of the section levels specified in its
|
|
arguments.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{}{ %
|
|
With this feature you can handle
|
|
relatively complex cases.%
|
|
}% Umbruchoptimierung
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname
|
|
iffalse\endcsname}%
|
|
\iffalse% Umbruchkorrekturtext
|
|
\iffree{}{\par
|
|
The obsolete package
|
|
\Package{scrpage2}\IndexPackage{scrpage2}\important{\Package{scrpage2}}
|
|
understands both \Macro{manualmark} and \Macro{automark}, but not
|
|
\Macro{automark*}. Therefore the following examples are not completely
|
|
transferable when using \Package{scrpage2}.%
|
|
}%
|
|
\fi
|
|
%
|
|
\begin{Example}
|
|
\phantomsection\xmpllabel{mark}%
|
|
Suppose you want chapter headings to be used as the running head of even
|
|
pages and the section heading to be the running head of odd pages, as
|
|
usual. But on odd pages you also want the chapter headings to be used as
|
|
the running head until the first section appears. To do so, you first
|
|
have to load \IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\Package{scrlayer-scrpage}%
|
|
}{%
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
}
|
|
and select the \DescRef{\LabelBase.pagestyle.scrheadings} page style,
|
|
so the document starts with:
|
|
\begin{lstcode}
|
|
\documentclass{scrbook}
|
|
\usepackage{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\end{lstcode}
|
|
Next, ensure that the chapter headings set both the left and the right
|
|
marks:
|
|
\begin{lstcode}
|
|
\automark[chapter]{chapter}
|
|
\end{lstcode}
|
|
Then the section heading should also set right marks:
|
|
\begin{lstcode}
|
|
\automark*[section]{}
|
|
\end{lstcode}
|
|
Here the starred version is used, since the previous \Macro{automark}
|
|
command should remain in effect. Additionally, the mandatory argument
|
|
for the \PName{section level of the left mark} is empty because this
|
|
mark should remain unchanged.
|
|
|
|
All that's missing now is a bit of document content to show the result:
|
|
\begin{lstcode}
|
|
\usepackage{lipsum}
|
|
\begin{document}
|
|
\chapter{Chapter Heading}
|
|
\lipsum[1-20]
|
|
\section{Section Heading}
|
|
\lipsum[21-40]
|
|
\end{document}
|
|
\end{lstcode}
|
|
We use the extremely useful \Package{lipsum}\IndexPackage{lipsum}
|
|
package to generate some dummy text with command
|
|
\Macro{lipsum}\IndexCmd{lipsum}.
|
|
|
|
If you test the example, you will see that the first page of the chapter
|
|
appears, as usual, without a running head, since this page automatically
|
|
uses the \PageStyle{plain} page style
|
|
\DescRef{\LabelBase.pagestyle.plain.scrheadings} (see the
|
|
\DescRef{maincls.cmd.chapterpagestyle} on
|
|
\DescPageRef{maincls.cmd.chapterpagestyle}). Pages~2--4 have the
|
|
chapter headings in the running head. After the section heading on
|
|
page~4, the running head of page~5 changes to this section heading. From
|
|
this page to the end, the running head alternates from page to page
|
|
between the chapter and section headings.%
|
|
\end{Example}
|
|
\fi
|
|
|
|
\IfThisCommonLabelBase{scrlayer}{}{%
|
|
\begin{Declaration}
|
|
\Option{automark}
|
|
\OptionVName{autooneside}{simple switch}
|
|
\Option{manualmark}
|
|
\end{Declaration}}
|
|
Instead of the commands described previously, you can also use the
|
|
\Option{manualmark}\important{\Option{manualmark}\\\Option{automark}} and
|
|
\Option{automark} options to switch between automatic and manual running
|
|
heads. \Option{automark} always uses the default\textnote{default}
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname
|
|
iffalse\endcsname}%
|
|
\lstinline|\automark[section]{chapter}| for classes with
|
|
\DescRef{maincls.cmd.chapter} and
|
|
\lstinline|\automark[subsection]{section}| for other classes.
|
|
\else
|
|
\begin{lstcode}
|
|
\automark[section]{chapter}
|
|
\end{lstcode}
|
|
for classes with \DescRef{maincls.cmd.chapter} and
|
|
\begin{lstcode}
|
|
\automark[subsection]{section}
|
|
\end{lstcode}
|
|
for other classes.
|
|
\fi
|
|
|
|
\IfThisCommonLabelBaseOneOf{scrlayer,scrlayer-scrpage}{%
|
|
In one-sided printing, you normally want only the higher section levels
|
|
to provide the running title.%
|
|
}{%
|
|
In one-sided printing, you normally do not want the lower section level
|
|
to influence the right mark. Instead, you want the higher section
|
|
level, which would appear in only the left mark in two-sided printing, to
|
|
be the running head of all pages.%
|
|
} The default option \Option{autooneside}\important{\Option{autooneside}}
|
|
corresponds to this behaviour. The option accepts the values for
|
|
simple switches listed in \autoref{tab:truefalseswitch},
|
|
\autopageref{tab:truefalseswitch}. If you deactivate this option, the
|
|
optional and mandatory arguments of \Macro{automark} and \Macro{automark*}
|
|
will again control the running head in one-sided printing.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{\csname
|
|
iffalse\endcsname}%
|
|
\begin{Example}
|
|
\phantomsection\xmpllabel{mark.oneside}%
|
|
Suppose you have a one-sided report but want running heads similar to
|
|
those in the previous book example. Specifically, the chapter headings
|
|
should be used as the running head until the first section appears.
|
|
From the then on, the section heading should be used. So we modify the
|
|
previous example a little bit:
|
|
\begin{lstcode}
|
|
\documentclass{scrreprt}
|
|
\usepackage[autooneside=false]{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\automark[section]{chapter}
|
|
\usepackage{lipsum}
|
|
\begin{document}
|
|
\chapter{Chapter Heading}
|
|
\lipsum[1-20]
|
|
\section{Section Heading}
|
|
\lipsum[21-40]
|
|
\end{document}
|
|
\end{lstcode}
|
|
As you can see an \DescRef{\LabelBase.cmd.automark*} command is not
|
|
required in this case. You should try the example with
|
|
\Option{autooneside} set to \PValue{true}, or remove the option, for
|
|
comparison. You will notice a difference in the running head from
|
|
page~4 on.
|
|
\end{Example}
|
|
\fi
|
|
|
|
Note\textnote{Attention!} that merely loading the package does not have any
|
|
effect on whether automatic or manual running heads are used, or what kind
|
|
of sectioning headings fill the marks. Only by explicitly using the option
|
|
\Option{automark} or \Option{manualmark}, or the command
|
|
\DescRef{\LabelBase.cmd.automark} or \DescRef{\LabelBase.cmd.manualmark},
|
|
will the conditions here be initialized.%
|
|
\IfThisCommonLabelBase{scrlayer}{\par%
|
|
You can find additional background information and examples of how to use
|
|
these commands in the documentation for the \Package{scrlayer} package
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
in \autoref{sec:scrlayer-scrpage.pagestyle.content}, starting on
|
|
\DescPageRef{scrlayer-scrpage.cmd.manualmark}.%
|
|
}{%
|
|
\EndIndexGroup%
|
|
}%
|
|
\EndIndexGroup
|
|
|
|
|
|
\IfThisCommonLabelBase{scrlayer}{% already described at \layercontentsmeasure
|
|
}{%
|
|
\begin{Declaration}
|
|
\OptionVName{draft}{simple switch}
|
|
\end{Declaration}
|
|
This \KOMAScript{} option accepts the values for simple switches
|
|
listed in \autoref{tab:truefalseswitch}, \autopageref{tab:truefalseswitch}.
|
|
If this option is active, all elements of the page styles will also show
|
|
rulers\index{ruler}%
|
|
\IfThisCommonLabelBase{scrlayer}{ for}{%
|
|
. This can sometimes be useful during}
|
|
the drafting process.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{ %
|
|
If this option has been set globally (see the optional argument
|
|
of \DescRef{\LabelBase.cmd.documentclass}) but you do not want the
|
|
rulers, you can deactivate them for this package alone by using
|
|
\OptionValue{draft}{false} as an optional argument of
|
|
\DescRef{\LabelBase.cmd.usepackage} while loading the package.%
|
|
}{}%
|
|
\EndIndexGroup%
|
|
}%
|
|
|
|
\begin{Declaration}
|
|
\Macro{MakeMarkcase}\Parameter{text}
|
|
\OptionVName{markcase}{value}
|
|
\end{Declaration}
|
|
Automatic running heads, but not manual ones, use \Macro{MakeMarkcase} for
|
|
their output. If the command has not been defined, e.\,g., by the class
|
|
while loading \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}, it is defined by default to output the argument \PName{text} without
|
|
changes. But the default can be changed either by redefining
|
|
\Macro{MakeMarkcase}. Using the \DescRef{\LabelBase.option.markcase}%
|
|
\IndexOption{markcase}\important{\DescRef{\LabelBase.option.markcase}}
|
|
option with one of the values of \autoref{tab:scrlayer-scrpage.markcase}
|
|
also redefines \Macro{MakeMarkcase}.
|
|
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
Because of the poor typographical quality of the primitive capitalisation
|
|
routine (see the explanation of \DescRef{scrlayer-scrpage.option.markcase}
|
|
in \autoref{sec:scrlayer-scrpage.pagestyle.content},
|
|
\autopageref{expl:scrlayer-scrpage.MakeUppercase}) the author of
|
|
\KOMAScript recommends that you avoid upper-case typesetting for running
|
|
heads.%
|
|
}{%
|
|
Unfortunately,\phantomsection\label{expl:\ThisCommonLabelBase.MakeUppercase}
|
|
the \LaTeX{} command for converting text to upper case\Index{upper case},
|
|
\Macro{MakeUppercase}\IndexCmd{MakeUppercase}, does not produce good
|
|
results because it neither spaces characters nor balances lines
|
|
appropriately. This is certainly in part due to the fact that a
|
|
typographically correct upper-case conversion requires analysing the
|
|
glyphs to account for the different letter shapes \iffree{and their
|
|
combinations}{} while balancing the block. I therefore recommend that
|
|
you avoid upper-case typesetting for running heads.%
|
|
} This is usually possible with \OptionValue{markcase}{used}\important{%
|
|
\OptionValue{markcase}{used}}\IndexOption[indexmain]{markcase~=used}.
|
|
However, some classes insert \Macro{MarkUppercase}, or even the \TeX{}
|
|
command \Macro{uppercase}, into the running heads. For such cases, you can
|
|
use the option \OptionValue{markcase}{noupper}%
|
|
\important{\OptionValue{markcase}{noupper}}%
|
|
\IndexOption[indexmain]{markcase~=noupper}. This will also deactivate
|
|
\Macro{MakeUppercase} and \Macro{uppercase} inside the running heads.
|
|
|
|
You can find all valid values for \Option{markcase} in
|
|
\autoref{tab:scrlayer-scrpage.markcase}%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{}{,
|
|
\autopageref{tab:scrlayer-scrpage.markcase}}.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\begin{table}
|
|
\centering
|
|
\caption[Available values for the \Option{markcase} option]{Available
|
|
values for the \Option{markcase} option to select upper/lower case
|
|
typesetting in automatic running heads}%
|
|
\label{tab:\ThisCommonLabelBase.markcase}%
|
|
\begin{desctabular}
|
|
\pventry{lower}{\IndexOption[indexmain]{markcase~=lower}%
|
|
redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the
|
|
automatic running heads into lower-case letters using
|
|
\Macro{MakeLowercase} (lower case typesetting).%
|
|
}%
|
|
\pventry{upper}{\IndexOption[indexmain]{markcase~=upper}%
|
|
redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to convert the
|
|
automatic running heads into upper-case letters using
|
|
\Macro{MakeUppercase} (upper case typesetting).%
|
|
}%
|
|
\pventry{used}{\IndexOption[indexmain]{markcase~=used}%
|
|
redefines \DescRef{\LabelBase.cmd.MakeMarkcase} to use automatic
|
|
running heads without any case changes.%
|
|
}%
|
|
\entry{\PValue{ignoreuppercase}, \PValue{nouppercase},
|
|
\PValue{ignoreupper},
|
|
\PValue{noupper}}{\IndexOption[indexmain]{markcase~=noupper}%
|
|
redefines not only \DescRef{\LabelBase.cmd.MakeMarkcase} but also
|
|
\Macro{MakeUppercase} and \Macro{uppercase} locally to the running
|
|
heads to leave the automatic running heads unchanged.%
|
|
}%
|
|
\end{desctabular}
|
|
\end{table}
|
|
}{}%
|
|
\EndIndexGroup
|
|
\fi
|
|
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname}
|
|
\begin{Declaration}
|
|
\Macro{righttopmark}
|
|
\Macro{rightbotmark}
|
|
\Macro{rightfirstmark}
|
|
\Macro{rightmark}
|
|
\Macro{lefttopmark}
|
|
\Macro{leftbotmark}
|
|
\Macro{leftfirstmark}
|
|
\Macro{leftmark}
|
|
\end{Declaration}
|
|
\LaTeX\ChangedAt{v3.16}{\Package{scrlayer}} typically uses a two-part
|
|
\TeX{} mark for page styles. Running heads can access the left part of that
|
|
mark with \DescRef{scrlayer.cmd.leftmark}%
|
|
\important{\DescRef{scrlayer.cmd.leftmark}}\IndexCmd{leftmark} and the right
|
|
part with \DescRef{scrlayer.cmd.rightmark}%
|
|
\important{\DescRef{scrlayer.cmd.rightmark}}\IndexCmd{rightmark}. In fact,
|
|
it was probably intended to use \DescRef{scrlayer.cmd.leftmark} for the
|
|
running head of left (even) pages and \DescRef{scrlayer.cmd.rightmark} for
|
|
the running head of right (odd) pages of two-sided documents. In
|
|
one-sided printing, however, the standard classes do not even set the left
|
|
part of the mark.
|
|
|
|
\TeX{} itself knows three ways to access a mark. The \Macro{botmark}%
|
|
\IndexCmd{botmark}\important{\Macro{botmark}} is the last valid mark of the
|
|
most recent page that has been built. If no mark has been set on the page,
|
|
it corresponds to the last mark set on the pages that have already been
|
|
shipped out. The \LaTeX{} command \DescRef{scrlayer.cmd.leftmark} uses
|
|
precisely this mark, so it returns the left part of the last mark of the
|
|
page. This corresponds exactly to \Macro{leftbotmark}%
|
|
\important{\Macro{leftbotmark}}. By comparison, \Macro{rightbotmark}%
|
|
\important{\Macro{rightbotmark}} prints the right part of this mark.
|
|
|
|
\Macro{firstmark}\IndexCmd{firstmark}\important{\Macro{firstmark}} is the
|
|
first mark of the last page that has been built. This is the first mark that
|
|
has been set on the page. If no mark has been set on the page, it
|
|
corresponds to the last mark of the pages that have already been shipped
|
|
out. The \LaTeX{} command \DescRef{scrlayer.cmd.rightmark} uses precisely
|
|
this mark, so it returns the right part of the first mark of the page. This
|
|
corresponds exactly to \Macro{rightfirstmark}%
|
|
\important{\Macro{rightfirstmark}}. By comparison, \Macro{leftfirstmark}%
|
|
\important{\Macro{leftfirstmark}} prints the left part of this mark.
|
|
|
|
\Macro{topmark}\IndexCmd{topmark}\important{\Macro{topmark}} is the content
|
|
that \Macro{botmark} had before building the current page. \LaTeX{} itself
|
|
does not use it. Nevertheless, \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
} provides \Macro{lefttopmark}\important{\Macro{lefttopmark}} to access the
|
|
left part of this mark and \Macro{righttopmark}%
|
|
\important{\Macro{righttopmark}} to access the right part.
|
|
|
|
Note\textnote{Attention!} that the left and right portions of the mark
|
|
can only be set together. Even if you use
|
|
\DescRef{scrlayer.cmd.markright}\IndexCmd{markright} to change only the
|
|
right part, the left part will set again (unchanged). Accordingly, in
|
|
two-sided printing, using the \PageStyle{headings}%
|
|
\important{\PageStyle{headings}}\IndexPagestyle{headings} page style,
|
|
the higher section levels always make both parts. For example,
|
|
\DescRef{scrlayer.cmd.chaptermark} uses \DescRef{scrlayer.cmd.markboth} with
|
|
an empty right argument in this case. This is the reason
|
|
\DescRef{scrlayer.cmd.rightmark} or \Macro{rightfirstmark} always shows an
|
|
empty value on pages which start a chapter, even if there was a
|
|
\DescRef{scrlayer.cmd.sectionmark} or \DescRef{maincls.cmd.section} on the
|
|
same page to make the right part of the mark.
|
|
Please note\textnote{Attention!} that using any of these commands to show
|
|
the left or right part of the mark as part of the page content may lead to
|
|
unexpected results. They are really meant for use in the header or footer
|
|
of a page style only. Therefore, they should always be part of the contents
|
|
of a layer when using \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}. But it does not matter whether the layer is restricted to the background
|
|
or the foreground, since all layers are shipped out after building the
|
|
current page.
|
|
|
|
If you need more information about the mark mechanism
|
|
\iffree{of \TeX{}}{\unskip}, please have a look at
|
|
\cite[chapter~23]{knuth:texbook}. The topic is flagged there as an issue for
|
|
real experts. \IfThisCommonLabelBase{scrlayer}{% Umbruchkorrektur
|
|
So if the explanation above confused you, please don't worry about it.}{}%
|
|
\EndIndexGroup
|
|
\fi
|
|
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iffalse}{%
|
|
\csname iftrue\endcsname}%
|
|
\begin{Declaration}
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\Macro{leftmark}
|
|
\Macro{rightmark}
|
|
}{}%
|
|
\Macro{headmark}
|
|
\Macro{pagemark}
|
|
\end{Declaration}
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
If you want to depart from the predefined page styles, you typically need
|
|
to decide where to place the marks' contents. With
|
|
\Macro{leftmark}\important{\Macro{leftmark}} you can define what will
|
|
appear in the left mark when the page is output.
|
|
|
|
Similarly, you can use \Macro{rightmark}\important{\Macro{rightmark}} to
|
|
define the contents of the right mark.\iffree{}{ For information about
|
|
some subtleties when using these commands, see further
|
|
\DescRef{maincls-experts.cmd.rightmark} in
|
|
\autoref{sec:maincls-experts.addInfos},
|
|
\DescPageRef{maincls-experts.cmd.rightmark}.}
|
|
|
|
}{}%
|
|
|
|
You can make life easier with \Macro{headmark}\important{\Macro{headmark}}.
|
|
This extension of \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
} is a shorthand that resolves to either \Macro{leftmark} or
|
|
\Macro{rightmark} depending on whether the current page is even or odd.
|
|
|
|
The \Macro{pagemark}\important{\Macro{pagemark}} command has nothing to do
|
|
with \TeX's mark mechanism. It is serves to output a formatted page number.
|
|
\BeginIndex{FontElement}{pagenumber}\LabelFontElement{pagenumber}%
|
|
The font of element
|
|
\FontElement{pagenumber}\important{\FontElement{pagenumber}} will be used
|
|
for the output. This can be changed using the \Macro{setkomafont} or
|
|
\DescRef{maincls.cmd.addtokomafont} commands (see also
|
|
\autoref{sec:maincls.textmarkup}, \DescPageRef{maincls.cmd.setkomafont}).%
|
|
\EndIndex{FontElement}{pagenumber}%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
|
|
\par %
|
|
If you are interested in an example showing the usage of the
|
|
\Macro{headmark} and \Macro{pagemark} commands, see
|
|
\autoref{sec:scrlayer-scrpage.pagestyle.content},
|
|
\PageRefxmpl{scrlayer-scrpage.cmd.headmark}. Internally, the
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\Package{scrlayer-scrpage}%
|
|
}{%
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
} package uses many such features of
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}{%
|
|
\Package{scrlayer}%
|
|
}.%
|
|
\csname iffalse\endcsname}%
|
|
\begin{Example}
|
|
\phantomsection\xmpllabel{cmd.headmark}%
|
|
Suppose you want the running head to be aligned to the left margin and
|
|
the page number to the right margin in one-sided printing. The following
|
|
minimal working example does just this:
|
|
\begin{lstcode}
|
|
\documentclass{scrreprt}
|
|
\usepackage{blindtext}
|
|
\usepackage[automark]{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\ihead{\headmark}
|
|
\ohead*{\pagemark}
|
|
\chead{}
|
|
\cfoot[]{}
|
|
\begin{document}
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
The \Package{blindtext}\IndexPackage{blindtext} package and its
|
|
\Macro{blinddocument}\IndexCmd{blinddocument} command have been used
|
|
here to quickly generate sample document content for the example.
|
|
|
|
The \DescRef{scrlayer-scrpage.cmd.ihead}\IndexCmd{ihead} and
|
|
\DescRef{scrlayer-scrpage.cmd.ohead*}\IndexCmd{ohead*} commands
|
|
configure the desired marks. The starred variant
|
|
\DescRef{scrlayer-scrpage.cmd.ohead*} %
|
|
\iffalse% Umbruchvarianten
|
|
configures the page number mark not only on the pages set with the
|
|
\DescRef{\LabelBase.pagestyle.scrheadings}%
|
|
\IndexPagestyle{scrheadings} page style but also those set
|
|
with the \PageStyle{plain} %
|
|
\else%
|
|
also configures the page number with the %
|
|
\fi%
|
|
\DescRef{\LabelBase.pagestyle.plain.scrheadings}%
|
|
\IndexPagestyle{plain.scrheadings} page style used on the first page of
|
|
a chapter.%
|
|
|
|
Because these page styles have predefined marks in the centre of the
|
|
header and footer, those elements are cleared by using
|
|
\DescRef{scrlayer-scrpage.cmd.chead} and
|
|
\DescRef{scrlayer-scrpage.cmd.cfoot} with empty arguments. Alternatively
|
|
you could use
|
|
\DescRef{scrlayer-scrpage-experts.cmd.clearpairofpagestyles}
|
|
\IndexCmd{clearpairofpagestyles} \emph{before}
|
|
\DescRef{scrlayer-scrpage.cmd.ihead}. You will find this command
|
|
described in \autoref{sec:scrlayer-scrpage-experts.pagestyle.pairs}.
|
|
\end{Example}
|
|
|
|
Please note\textnote{Attention!} that the empty optional argument of
|
|
\DescRef{scrlayer-scrpage.cmd.cfoot} in the example above is not the same
|
|
as omitting the optional argument. You should try it yourself and have a
|
|
look at the difference in the footer of the first page.%
|
|
\fi
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{% Umbruchvarianten
|
|
Advanced users can find more mark-setting commands%
|
|
}{%
|
|
If the options for the marks described above are not sufficient,
|
|
additional commands for advanced users are documented%
|
|
} %
|
|
starting on \IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\DescPageRef{scrlayer-scrpage-experts.cmd.righttopmark}}{%
|
|
\DescPageRef{\ThisCommonLabelBase.cmd.righttopmark}}.%
|
|
\iffalse% Umbruchkorrektur
|
|
\ For example, there you can find
|
|
\DescRef{scrlayer-scrpage-experts.cmd.leftfirstmark} and
|
|
\DescRef{scrlayer-scrpage-experts.cmd.rightbotmark}, which are quite useful
|
|
for documents like lexicons.%
|
|
\fi%
|
|
\EndIndexGroup
|
|
|
|
|
|
\begin{Declaration}
|
|
\Macro{partmarkformat}%
|
|
\Macro{chaptermarkformat}%
|
|
\Macro{sectionmarkformat}%
|
|
\Macro{subsectionmarkformat}%
|
|
\Macro{subsubsectionmarkformat}%
|
|
\Macro{paragraphmarkformat}%
|
|
\Macro{subparagraphmarkformat}
|
|
\end{Declaration}
|
|
\KOMAScript{} classes and the \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
} package typically use these commands internally to format the section
|
|
numbers. They also support the \DescRef{maincls.cmd.autodot} mechanism of
|
|
the \KOMAScript{} classes. If desired, these commands can be redefined to
|
|
achieve a different formatting of section numbers.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
|
|
\ See the example in \autoref{sec:scrlayer-scrpage.pagestyle.content},
|
|
\PageRefxmpl{scrlayer-scrpage.cmd.sectionmarkformat} for more
|
|
information.%
|
|
\csname iffalse\endcsname%
|
|
}%
|
|
\begin{Example}
|
|
\phantomsection\xmpllabel{cmd.sectionmarkformat}%
|
|
\iftrue
|
|
For example, if you want to have running heads without a section
|
|
number, this is how you do it:
|
|
\else
|
|
Suppose you want section headings without the section number to appear
|
|
in the running head. This can be accomplished easily with the
|
|
following:
|
|
\fi
|
|
\begin{lstcode}
|
|
\renewcommand*{\sectionmarkformat}{}
|
|
\end{lstcode}
|
|
\end{Example}
|
|
\ExampleEndFix
|
|
\fi%
|
|
\EndIndexGroup
|
|
|
|
|
|
\begin{Declaration}
|
|
\Macro{partmark}\Parameter{Text}%
|
|
\Macro{chaptermark}\Parameter{Text}%
|
|
\Macro{sectionmark}\Parameter{Text}%
|
|
\Macro{subsectionmark}\Parameter{Text}%
|
|
\Macro{subsubsectionmark}\Parameter{Text}%
|
|
\Macro{paragraphmark}\Parameter{Text}%
|
|
\Macro{subparagraphmark}\Parameter{Text}
|
|
\end{Declaration}
|
|
Most classes use these commands internally to set the marks according to the
|
|
sectioning commands. The argument should contain the text without the number
|
|
of the sectioning unit. The number is automatically determined using the
|
|
current section level if you use numbered headings.
|
|
|
|
However\textnote{Attention!}, not all classes use such a command for
|
|
every section level. The standard classes\textnote{\KOMAScript{} vs.
|
|
standard classes}, for example, do not call \Macro{partmark}
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
upon a \Macro{part} command}{%
|
|
, whereas the \KOMAScript{} classes naturally support \Macro{partmark} as
|
|
well}.
|
|
|
|
If you redefine these commands, be sure\textnote{Attention!} to check
|
|
whether the numbers will be output via the
|
|
\DescRef{maincls.counter.secnumdepth} before setting the number even if you
|
|
do not change the \DescRef{maincls.counter.secnumdepth} counter yourself,
|
|
because packages and classes may do so locally and rely on correct handling
|
|
of \DescRef{maincls.counter.secnumdepth}.
|
|
|
|
The \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
} package also redefines these commands whenever you use
|
|
\DescRef{scrlayer.cmd.automark} or \DescRef{scrlayer.cmd.manualmark} or the
|
|
corresponding options, to activate or deactivate the desired running heads.%
|
|
\EndIndexGroup
|
|
|
|
|
|
\begin{Declaration}
|
|
\Macro{markleft}\Parameter{left mark}
|
|
\Macro{markright}\Parameter{right mark}
|
|
\Macro{markboth}\Parameter{left mark}\Parameter{right mark}
|
|
\Macro{markdouble}\Parameter{mark}
|
|
\end{Declaration}
|
|
Regardless of whether you are working with manual or automatic running
|
|
heads, you can always change the contents of the \PName{left mark} or the
|
|
\PName{right mark} using these commands. Note that the left-hand mark
|
|
resulting from \Macro{leftmark}\IndexCmd{leftmark}%
|
|
\important{\Macro{leftmark}} will be the last mark placed on the
|
|
corresponding page, while the right-hand mark resulting from
|
|
\Macro{rightmark}\IndexCmd{rightmark}\important{\Macro{rightmark}} is the
|
|
first mark placed on the corresponding page. For more details, see
|
|
\iffree{}{the additional explanation of
|
|
\DescRef{maincls-experts.cmd.rightmark} in
|
|
\autoref{sec:maincls-experts.addInfos},
|
|
\DescPageRef{maincls-experts.cmd.rightmark} or} to
|
|
\DescRef{scrlayer.cmd.rightfirstmark}\IfThisCommonLabelBase{scrlayer}{}{ in
|
|
\autoref{sec:scrlayer.pagestyle.content}},
|
|
\DescPageRef{scrlayer.cmd.rightfirstmark}.
|
|
|
|
If you are using manual running heads\Index{running head>manual}, the marks
|
|
remain valid until they are explicitly replaced by reusing the corresponding
|
|
commands. However, if you are using automatic running heads, the marks can
|
|
become invalid with the next section heading, depending on the automatic
|
|
configuration.
|
|
|
|
You can also use these commands in conjunction with the starred versions of
|
|
the sectioning commands.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iftrue}{%
|
|
\ You can find detailed examples illustrating usage of \Macro{markboth}
|
|
with the \IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}{%
|
|
\Package{scrlayer}%
|
|
}-derived package \IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\Package{scrlayer-scrpage}%
|
|
}{%
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
} in
|
|
\autoref{sec:scrlayer-scrpage.pagestyle.content},
|
|
\PageRefxmpl{scrlayer-scrpage.cmd.markboth}.%
|
|
\csname iffalse\endcsname%
|
|
}%
|
|
\begin{Example}
|
|
\phantomsection\xmpllabel{cmd.markboth}%
|
|
Suppose you write a preface of several pages placed just before the
|
|
table of contents but not appearing in it. However, since you use
|
|
dividing lines in your header, you want a running head for this preface:
|
|
\begin{lstcode}
|
|
\documentclass[headsepline]{book}
|
|
\usepackage{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\usepackage{blindtext}
|
|
\begin{document}
|
|
\chapter*{Preface}
|
|
\markboth{Preface}{Preface}
|
|
\blindtext[20]
|
|
\tableofcontents
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
At first glance, this seems to produce the desired result. Taking a
|
|
second look, however, you can see that the running title
|
|
``\texttt{Preface}'' does not appear in upper-case letters, unlike the
|
|
other running heads. But that's easy to change:
|
|
\begin{lstcode}
|
|
\documentclass[headsepline]{book}
|
|
\usepackage{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\usepackage{blindtext}
|
|
\begin{document}
|
|
\chapter*{Preface}
|
|
\markboth{\MakeMarkcase{Preface}}{\MakeMarkcase{Preface}}
|
|
\blindtext[20]
|
|
\tableofcontents
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
Using command \DescRef{\LabelBase.cmd.MakeMarkcase} results in getting
|
|
the same letter case as for automatic running heads.
|
|
|
|
Now, let's move the \DescRef{maincls.cmd.tableofcontents} in front
|
|
of the preface and remove the \Macro{markboth} command. You'll
|
|
discover that the preface now has the running head
|
|
``\texttt{CONTENTS}''. This is due to a quirk of
|
|
\DescRef{maincls.cmd.chapter*} (see also \autoref{sec:maincls.structure}
|
|
on \DescPageRef{maincls.cmd.chapter*}). If you do not want a running
|
|
head here, you can easily accomplish this by passing two empty arguments
|
|
to \Macro{markboth}:
|
|
\begin{lstcode}
|
|
\documentclass[headsepline]{book}
|
|
\usepackage{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\usepackage{blindtext}
|
|
\begin{document}
|
|
\tableofcontents
|
|
\chapter*{Preface}
|
|
\markboth{}{}
|
|
\blindtext[20]
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
\end{Example}
|
|
\fi%
|
|
% TODO: Fix new translation
|
|
The\ChangedAt{v3.28}{\Package{scrlayer}} command
|
|
\Macro{markdouble}\important{\Macro{markdouble}} does change the left mark
|
|
and the right mark to the same contents. So
|
|
\Macro{markdouble}\Parameter{mark} is a shorter form of
|
|
\Macro{markboth}\Parameter{mark}\Parameter{mark} with two identical
|
|
arguments.%
|
|
% :ODOT
|
|
\EndIndexGroup
|
|
\fi
|
|
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname}
|
|
\begin{Declaration}
|
|
\Macro{GenericMarkFormat}\Parameter{name of the section level}
|
|
\end{Declaration}
|
|
By default, this command is used to format all section numbers in running
|
|
heads below the subsection level, and for classes without
|
|
\DescRef{maincls.cmd.chapter}, also for the section and subsection levels,
|
|
unless the respective mark commands for those levels are defined before
|
|
loading \Package{scrlayer}. The command causes the package to use
|
|
\Macro{@seccntmarkformat}\IndexCmd{@seccntmarkformat}%
|
|
\important{\Macro{@seccntmarkformat}} if this internal command is defined,
|
|
as it is in the \KOMAScript{} classes. Otherwise \Macro{@seccntformat}%
|
|
\IndexCmd{@seccntformat}\important{\Macro{@seccntformat}} will be used,
|
|
which is provided by the \LaTeX{} kernel. The mandatory argument of the
|
|
command contains the name of a sectioning command, such as \PValue{chapter}
|
|
or \PValue{section} \emph{without} the backslash prefix.
|
|
|
|
By redefining this command, you can change the default number format for all
|
|
sectioning commands that use it. Classes can also change the default
|
|
formatting also by defining this command.%
|
|
\IfThisCommonLabelBase{scrlayer-scrpage-experts}{\iftrue}{%
|
|
\par %
|
|
A detailed example illustrating the interplay of the
|
|
\Macro{GenericMarkFormat} command with the
|
|
\DescPageRef{\ThisCommonLabelBase.cmd.chaptermark} command and
|
|
\DescRef{\ThisCommonLabelBase.cmd.sectionmarkformat} or
|
|
\DescRef{\ThisCommonLabelBase.cmd.subsectionmarkformat} when using
|
|
the \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}-derived package \IfThisCommonLabelBase{scrlayer-scrpage}{%
|
|
\Package{scrlayer-scrpage}%
|
|
}{%
|
|
\hyperref[cha:scrlayer-scrpage]{\Package{scrlayer-scrpage}}%
|
|
} is shown in \autoref{sec:scrlayer-scrpage-experts.pagestyle.content},
|
|
\PageRefxmpl{scrlayer-scrpage-experts.cmd.GenericMarkFormat}.%
|
|
\csname iffalse\endcsname}%
|
|
\begin{Example}
|
|
\phantomsection
|
|
\xmpllabel{cmd.GenericMarkFormat}%
|
|
Suppose you want the section numbers of all levels in the running head
|
|
of an article to be printed in white within a black box. Since the
|
|
commands \Macro{sectionmarkformat} and \Macro{subsectionmarkformat} of
|
|
the \Package{scrlayer} package are defined with
|
|
\Macro{GenericMarkFormat} for articles using the standard \LaTeX{}
|
|
\Class{article} class, you need to redefine only this one command:
|
|
\begin{lstcode}
|
|
\documentclass{article}
|
|
\usepackage{blindtext}
|
|
\usepackage[automark]{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\usepackage{xcolor}
|
|
\newcommand*{\numberbox}[1]{%
|
|
\colorbox{black}{\strut~\textcolor{white}{#1}~}}
|
|
\renewcommand*{\GenericMarkFormat}[1]{%
|
|
\protect\numberbox{\csname the#1\endcsname}\enskip}
|
|
\begin{document}
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
The colour has been changed using the
|
|
\Package{xcolor}\IndexPackage{xcolor} package. More details can be found
|
|
in that package's manual (see \cite{package:xcolor}).
|
|
|
|
This example also uses an invisible strut. Any detailed \LaTeX{}
|
|
introduction should explain the related command \Macro{strut}.
|
|
|
|
A helper macro, \Macro{numberbox}, has been defined to format the number
|
|
within a box. This command is prefixed in the redefinition of
|
|
\Macro{GenericMarkFormat} by \Macro{protect} in order to protect it from
|
|
expansion. This is necessary because otherwise the upper-case letter
|
|
conversion of \Macro{MakeUppercase} for the running head, would result
|
|
in using the colours ``\texttt{BLACK}'' and ``\texttt{WHITE}'' instead
|
|
of ``\texttt{black}'' and ``\texttt{white}'', and those colours are
|
|
undefined. Alternatively, you could define \Macro{numberbox} using
|
|
\Macro{DeclareRobustCommand*} instead of \Macro{newcommand*} and omit
|
|
\Macro{protect} (see \cite{latex:clsguide}).
|
|
|
|
If you wanted to achieve the same effect with a \KOMAScript{} class or
|
|
with the standard \LaTeX{} classes \Class{book} or \Class{report}, you
|
|
would also have to redefine, respectively,
|
|
\DescRef{scrlayer.cmd.sectionmarkformat}\IndexCmd{sectionmarkformat}%
|
|
\important{\DescRef{scrlayer.cmd.sectionmarkformat}} and
|
|
\DescRef{scrlayer.cmd.subsectionmarkformat}%
|
|
\IndexCmd{subsectionmarkformat}%
|
|
\important{\DescRef{scrlayer.cmd.subsectionmarkformat}}, or
|
|
\DescRef{scrlayer.cmd.chaptermarkformat}%
|
|
\IndexCmd{chaptermarkformat}%
|
|
\important{\DescRef{scrlayer.cmd.chaptermarkformat}} and
|
|
\DescRef{scrlayer.cmd.sectionmarkformat}%
|
|
\IndexCmd{sectionmarkformat}%
|
|
\important{\DescRef{scrlayer.cmd.sectionmarkformat}}, because
|
|
these are not by default defined using \Macro{GenericMarkFormat}:
|
|
\begin{lstcode}
|
|
\documentclass[headheight=19.6pt]{scrbook}
|
|
\usepackage{blindtext}
|
|
\usepackage[automark]{scrlayer-scrpage}
|
|
\pagestyle{scrheadings}
|
|
\usepackage{xcolor}
|
|
\newcommand*{\numberbox}[1]{%
|
|
\colorbox{black}{\strut~\textcolor{white}{#1}~}}
|
|
\renewcommand*{\GenericMarkFormat}[1]{%
|
|
\protect\numberbox{\csname the#1\endcsname}\enskip}
|
|
\renewcommand*{\chaptermarkformat}{\GenericMarkFormat{chapter}}
|
|
\renewcommand*{\sectionmarkformat}{\GenericMarkFormat{section}}
|
|
\begin{document}
|
|
\blinddocument
|
|
\end{document}
|
|
\end{lstcode}
|
|
% TODO: New translation
|
|
Here, option \DescRef{typearea.option.headheight} is used to eliminate
|
|
the warning, that also has been reported in the previous example.%
|
|
% :ODOT
|
|
\end{Example}
|
|
\fi%
|
|
\EndIndexGroup
|
|
\fi
|
|
|
|
|
|
\IfThisCommonLabelBase{scrlayer-scrpage}{\iffalse}{\csname iftrue\endcsname}
|
|
\begin{Declaration}
|
|
\Macro{@mkleft}\Parameter{left mark}%
|
|
\Macro{@mkright}\Parameter{right mark}%
|
|
\Macro{@mkdouble}\Parameter{mark}%
|
|
\Macro{@mkboth}\Parameter{left mark}\Parameter{right mark}
|
|
\end{Declaration}
|
|
Within classes and packages, you may only want to use running heads if
|
|
automatic running heads are active (see the
|
|
\DescRef{scrlayer.option.automark} option and the
|
|
\DescRef{scrlayer.cmd.automark} command on
|
|
\DescPageRef{scrlayer-scrpage.cmd.automark}). In the standard \LaTeX{}
|
|
classes, this only works with \Macro{@mkboth}. This command corresponds to
|
|
either \Macro{@gobbletwo}, which simply consumes both mandatory arguments,
|
|
or \DescRef{scrlayer.cmd.markboth}, which sets both the \PValue{left mark}
|
|
and the \PValue{right mark}. Packages like \Package{babel} also change
|
|
\Macro{\@mkboth}, e.\,g., to enable language switching in the running head.
|
|
|
|
However, if you want to change only the \PName{left mark} or the
|
|
\PName{right mark} without changing the other one, there is no corresponding
|
|
command. The \IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
} package itself needs such commands to implement automatic running heads.
|
|
So if \Macro{@mkleft}, for setting the left mark only, or \Macro{@mkright},
|
|
for setting the right mark only, or \Macro{@mkdouble}, for setting both
|
|
marks with the same content, is undefined when loading
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
\Package{scrlayer}%
|
|
}{%
|
|
\hyperref[cha:scrlayer]{\Package{scrlayer}}%
|
|
}, this package will define them. This definition uses the state of
|
|
\Macro{@mkboth} as an indication of whether to use automatic running heads.
|
|
The commands will set the marks only in the case of automatic running heads.
|
|
|
|
Class and package authors can also fall back on these commands as appropriate
|
|
if they want to set the left or right the marks only if automatic running
|
|
heads are activated.%
|
|
\EndIndexGroup%
|
|
\fi%
|
|
|
|
\IfThisCommonLabelBase{scrlayer}{%
|
|
\par
|
|
For more information about manipulating the contents of page styles, see
|
|
also \autoref{sec:scrlayer-scrpage.pagestyle.content} starting at
|
|
\autopageref{sec:scrlayer-scrpage.pagestyle.content}.%
|
|
}{}%
|
|
\EndIndexGroup
|
|
|
|
%%% Local Variables:
|
|
%%% mode: latex
|
|
%%% mode: flyspell
|
|
%%% ispell-local-dictionary: "en_GB"
|
|
%%% TeX-master: "../guide.tex"
|
|
%%% TeX-PDF-mode: t
|
|
%%% End:
|
|
|
|
% LocalWords: scrlayer
|
|
|