
Es besteht ein bekannter Konflikt zwischen der memoir
Klasse und dem hyperref
Paket. hyperref
Inhaltsverzeichnisüberschriften, die das \MakeTextUppercase
Makro enthalten, können nicht verarbeitet werden.
Im memoir
Handbuch ( texdoc memoir
) steht ein bisschen Code, der das Problem beheben soll, aber ich bekomme ihn nicht zum Laufen.
Verwende ich die Lösung im Handbuch falsch oder ist eine andere Lösung erforderlich?
\documentclass{memoir}
\renewcommand*{\cftpartfont}{\MakeTextUppercase}
% From Memoir manual p. 158
\makeatletter
\settocpreprocessor{part}{%
\let\tempf@rtoc\f@rtoc%
\def\f@rtoc{%
\texorpdfstring{\MakeTextUppercase{\tempf@rtoc}}{\tempf@rtoc}}%
}
\makeatother
\usepackage{hyperref}
\begin{document}
\tableofcontents*
\part{A Whale}
\chapter{A Tale}
\section{A Sail}
\subsection{A Beachball}
\part{A Poodle}
\chapter{A Noodle}
\section{A Doodle}
\end{document}
Beim Kompilieren dieses MWE erhalte ich die folgende Fehlermeldung:
! Argument of \contentsline has an extra }.
<inserted text>
\par
l.2 \contentsline
{chapter}{\chapternumberline {1}A Tale}{5}
Es wurden andere Lösungen vorgeschlagen:
- Setzen Sie cftchapfont als Großbuchstaben
- Fehler beim Versuch, mit \MakeTextUppercase das Inhaltsverzeichnis anzupassen
Im Idealfall wäre aber die Lösung im Kurshandbuch die richtige.
Antwort1
Ich glaube, Sie verstehen memoir
das Handbuch falsch.
Es heißt, dass Sie beim Laden hyperref
keine Großbuchstaben für Teile des Inhaltsverzeichnisses festlegen können mit
\renewcommand*{\cftpartfont}{\MakeTextUppercase}
Dort heißt es, dass Sie stattdessen \settocpreprocessor
Folgendes verwenden können:
\makeatletter
\settocpreprocessor{part}{%
\let\tempf@rtoc\f@rtoc%
\def\f@rtoc{%
\texorpdfstring{\MakeTextUppercase{\tempf@rtoc}}{\tempf@rtoc}}%
}
\makeatother
Das einfache Entfernen der störenden Zeile aus Ihrem MWE führt zum gewünschten Ergebnis
\documentclass{memoir}
%\renewcommand*{\cftpartfont}{\MakeTextUppercase}
% From Memoir manual p. 158
\makeatletter
\settocpreprocessor{part}{%
\let\tempf@rtoc\f@rtoc%
\def\f@rtoc{%
\texorpdfstring{\MakeTextUppercase{\tempf@rtoc}}{\tempf@rtoc}}%
}
\makeatother
\usepackage{hyperref}
\begin{document}
\tableofcontents*
\part{A Whale}
\chapter{A Tale}
\section{A Sail}
\subsection{A Beachball}
\part{A Poodle}
\chapter{A Noodle}
\section{A Doodle}
\end{document}