Problem mit Markboth

Problem mit Markboth

Ich benutze isodatedas Paket seit

  1. Ein Benutzer sollte das Datum als Titel des Kapitels im Format wie im Beispiel einfügen:31/12/1987
  2. Das Kapitel sollte den Titel haben 31st Dec 1987,

nach einigen Posts hier bin ich zu folgendem Ergebnis gekommen:

\documentclass{book}
\usepackage[orig,british]{isodate}
\usepackage{blindtext}
\makeatletter
\def\short@month@english{\ifcase\month\or
    Jan\or Feb\or Mar\or Apr\or May\or Jun\or
    Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi}
\newcommand{\printshortdate}[1]{{%
  \let\month@english\short@month@english% Update English month lookup (locally)
  \printdate{#1}}}% Call traditional \printdate
\newcommand{\printsupdate}[1]{{
 \let\day@english\supday@english
 \printdate{#1}
}}
\makeatother
\newcommand{\chaplab}[1]{\label{chap:#1}}
\begin{document}
\chapter{\printshortdate{31/12/1987}}
 \blindtext
 \blindtext
 \blindtext
 \blindtext
 \blindtext
 \blindtext
\end{document}

Allerdings stimmt etwas nicht mit \markbothsince, wenn ich \blindtextden Befehl entferne und das Dokument nur eine Seite ist, ist alles in Ordnung, beim Hinzufügen von Text erhalte ich Fehler und der Kapitelname in der Kopfzeile ist ein Durcheinander. Ich hätte gerne genau die Kopfzeile31st Dec 1987

Hinweis hinzugefügt

Ich verwende es, isodateweil ich im selben Dokument dasselbe Datum, aber in einem anderen Format benötige und es als Benutzer nur einmal einfügen möchte.

Antwort1

Ihr Befehl muss robust sein, um zu mobilen Argumenten übergehen zu können.

Der Trick besteht darin, zu ersetzen newcommanddurchDeclareRobustCommand

Hier ist der Code:

\documentclass{book}
\usepackage[orig,british]{isodate}
\usepackage{lipsum}
\makeatletter
\def\short@month@english{\ifcase\month\or
    Jan\or Feb\or Mar\or Apr\or May\or Jun\or
    Jul\or Aug\or Sep\or Oct\or Nov\or Dec\fi}

\DeclareRobustCommand{\printshortdate}[1]{%
  \let\month@english\short@month@english% Update English month lookup (locally)
  \printdate{#1}%
  }% Call traditional \printdate

\makeatother


\begin{document}
\chapter{\printshortdate{31/12/1987}}
 \lipsum[4-12]
\end{document}

Mit Ausgabe (auf Seite 2):

Bildbeschreibung hier eingeben

Bitte beachten Sie, dass ich einige zusätzliche {s (in der newcommandDefinition) gelöscht habe.

Antwort2

Wenn Sie es nur für ein Kapitel benötigen, verwenden Sie

\chapter*{\printshortdate{31/12/1987}}

wenn es nicht im Inhaltsverzeichnis erscheinen soll, oder

\chapter{\protect\printshortdate{31/12/1987}}  

was natürlich die gleiche Lösung ist wie die andere Antwort.

verwandte Informationen