Menu

HowTo_NumbersAtOuterMargin

Wie die Überschriftennummern in den äußeren Rand gesetzt werden können

Nachdem unter »Wie die Überschriftennummern in den linken Rand ausgerückt werden können« bereits gezeigt wurde, wie bei einseitigen Dokumenten die Nummer einfach in den linken Rand gerückt werden kann, lag die Frage nahe, wie man ähnliches bei doppelseitigen Dokumenten erreichen kann. Allerdings soll die Nummer dann nicht mehr grundsätzlich im linken Rand stehen, sondern auf linken Seiten im linken Rand und auf rechten Seiten im rechten Rand – also generell im äußeren Rand. Gleichzeitig soll der Text der Überschrift dann nicht mehr generell linksbündig, sondern auf linken Seiten linksbündig und auf rechten Seiten rechtsbündig gesetzt werden.

Hier genügt es ganz offensichtlich nicht mehr \chapterformat, \sectionformat, \subsectionformat und \subsubsectionformat umzudefinieren. Stattdessen muss die Ausgabe der kompletten Überschrift verändert werden. Dies ist bei KOMA-Script über die Umdefinierung von \chapterlinesformat und \sectionlinesformat möglich:

\documentclass[twoside]{scrreprt}
\usepackage{blindtext}

% Wie die Überschriftennummern in den äußeren Rand gesetzt werden können
% → <https://sourceforge.net/p/koma-script/wiki-de/HowTo_Headings/HowTo_NumbersAtOuterMargin>
% How to print the headings numbers in the outer margin
% → <https://sourceforge.net/p/koma-script/wiki-en/HowTo_Headings/HowTo_NumbersAtLeftMargin>

\renewcommand*{\chapterlinesformat}[3]{%
  \Ifthispageodd{%
    \parbox[t]{\linewidth}{\raggedleft #3}%
    \makebox[0pt][l]{\hspace{\marginparsep}#2}%
  }{%
    \makebox[0pt][r]{#2\hspace{\marginparsep}}%
    \parbox[t]{\linewidth}{\raggedright #3}%
  }%
}
\renewcommand*{\sectionlinesformat}[4]{%
  \Ifthispageodd{%
    \parbox[t]{\linewidth}{\raggedleft #4}%
    \makebox[0pt][l]{\hspace{\marginparsep}#3}%
  }{%
    \makebox[0pt][r]{#3\hspace{\marginparsep}}%
    \parbox[t]{\linewidth}{\raggedright #4}%
  }%
}

\renewcommand*{\chapterformat}{\thechapter\autodot}
\renewcommand*{\sectionformat}{\thesection\autodot}
\renewcommand*{\subsectionformat}{\thesubsection\autodot}
\renewcommand*{\subsubsectionformat}{\thesubsection\autodot}

\setcounter{secnumdepth}{\subsubsectionnumdepth}% For demonstration number down to \subsubsection.

\begin{document}
\tableofcontents

\chapter{Chapter on even Page}
\blindtext
\section{Section on even page}
\blindtext
\subsection{Subsection on even page}
\blindtext
\subsubsection{Subsubsection on even page}
\blindtext
\paragraph{Paragraph on odd page}
\blindtext
\subparagraph{Subparagraph on odd page}
\Blindtext[4]

\chapter{Chapter on odd Page}
\blindtext
\section{Section on odd page}
\blindtext
\subsection{Subsection on odd page}
\blindtext
\subsubsection{Subsubsection on odd page}
\blindtext

\end{document}

Eine Umdefinierung von \chapterformat, \sectionformat, \subsectionformat und \subsubsectionformat war hier dennoch notwendig, um den Abstand nach der Nummer zu entfernen. Der Abstand wird jetzt stattdessen in \chapterlinesformat bzw. \sectionlinesformat gesetzt. Je nachdem, ob es sich um eine rechte oder linke Seite handelt, wird er vor oder nach der Nummer eingefügt.

Insbesondere auf rechten Seiten finde ich das Ergebnis persönlich sehr unbefriedigend. Das liegt allerdings weniger an der Lösung als an den Anforderungen. Mit der zusätzlichen Anforderung, dass die Nummern in Breite der Notizspalte großzügig farblich hinterlegt werden sollen, sieht das schon deutlich besser aus:

\documentclass[twoside]{scrreprt}
\usepackage[svgnames]{xcolor}
\usepackage{blindtext}

% Wie die Überschriftennummern in den äußeren Rand gesetzt werden können
% → <https://sourceforge.net/p/koma-script/wiki-de/HowTo_Headings/HowTo_NumbersAtOuterMargin>
% How to print the headings numbers in the outer margin
% → <https://sourceforge.net/p/koma-script/wiki-en/HowTo_Headings/HowTo_NumbersAtLeftMargin>

\newcommand*{\enlightnumber}[2][l]{%
  {%
    \setlength{\fboxsep}{1ex}%
    \smash{%
      \colorbox{PeachPuff}{%
        \makebox[\dimexpr\marginparwidth-2\fboxrule-2\fboxsep\relax][#1]{#2}%
      }%
    }%
  }%
}

\renewcommand*{\chapterlinesformat}[3]{%
  \Ifthispageodd{%
    \parbox[t]{\linewidth}{\raggedleft #3}%
    \IfArgIsEmpty{#2}{}{%
      \makebox[0pt][l]{\hspace{\marginparsep}%
        \enlightnumber{#2}%
      }%
    }%
  }{%
    \IfArgIsEmpty{#2}{}{%
      \makebox[0pt][r]{%
        \enlightnumber[r]{#2}%
        \hspace{\marginparsep}}%
    }%
    \parbox[t]{\linewidth}{\raggedright #3}%
  }%
}
\renewcommand*{\sectionlinesformat}[4]{%
  \Ifthispageodd{%
    \parbox[t]{\linewidth}{\raggedleft #4}%
    \IfArgIsEmpty{#3}{}{%
      \makebox[0pt][l]{\hspace{\marginparsep}%
        \enlightnumber{#3}%
      }%
    }%
  }{%
    \IfArgIsEmpty{#3}{}{%
      \makebox[0pt][r]{%
        \enlightnumber[r]{#3}%
        \hspace{\marginparsep}}%
      \parbox[t]{\linewidth}{\raggedright #4}%
    }%
  }%
}

\renewcommand*{\chapterformat}{\thechapter\autodot}
\renewcommand*{\sectionformat}{\thesection\autodot}
\renewcommand*{\subsectionformat}{\thesubsection\autodot}
\renewcommand*{\subsubsectionformat}{\thesubsection\autodot}

\setcounter{secnumdepth}{\subsubsectionnumdepth}% For demonstration number down to \subsubsection.

\begin{document}
\tableofcontents

\chapter{Chapter on even Page}
\blindtext
\section{Section on even page}
\blindtext
\subsection{Subsection on even page}
\blindtext
\subsubsection{Subsubsection on even page}
\blindtext
\paragraph{Paragraph on odd page}
\blindtext
\subparagraph{Subparagraph on odd page}
\Blindtext[4]

\chapter{Chapter on odd Page}
\blindtext
\section{Section on odd page}
\blindtext
\subsection{Subsection on odd page}
\blindtext
\subsubsection{Subsubsection on odd page}
\blindtext

\end{document}

Es ist zu beachten, dass durch die gezeigten Umdefinierungen in beiden Beispielen sowohl \raggedchapter und \raggedsection als auch das zweite Argument von \sectionlinesformat, also der indent-Wert von \DeclareSectionCommand, ihre Funktion verloren haben.

Auch bei diesen Beispielen ist zu beachten, dass sie nicht mit den Option chapterprefix oder appendixprefix verwendet werden können. Für diese beiden Einstellungen müsste zusätzlich \chaperlineswithprefixformat umdefiniert werden. Allerdings wären dazu erst einmal die Anforderungen für die Darstellung aufzustellen.

Durch die Verwendung von \Ifthispageodd kann es übrigens vorkommen, dass die Formatierung erst nach zwei LaTeX-Läufen korrekt ist. Näheres dazu ist der Erklärung der Anweisung in der KOMA-Script-Anleitung zu entnehmen.


Related

Issues: #1
Wiki (Deutsch): HowTo_Headings
Wiki (Deutsch): HowTo_Manual
Wiki (Deutsch): HowTo_NumbersAtLeftMargin

MongoDB Logo MongoDB