Ich benutze isodate
das Paket seit
- Ein Benutzer sollte das Datum als Titel des Kapitels im Format wie im Beispiel einfügen:
31/12/1987
- 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 \markboth
since, wenn ich \blindtext
den 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, isodate
weil 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 newcommand
durchDeclareRobustCommand
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):
Bitte beachten Sie, dass ich einige zusätzliche {
s (in der newcommand
Definition) 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.