Paket [Datum/Uhrzeit] funktioniert nicht mit

Paket [Datum/Uhrzeit] funktioniert nicht mit

Nachfolgend finden Sie eine SSCCE:

\documentclass{report}

\usepackage{datetime}
%\usepackage{titling} %if this line is uncommented compilation fails

\begin{document}
\newdate{date2}{08}{02}{2015}
\date{\displaydate{date2}}
foo
\end{document}

... der obige Code wird kompiliert, aber wenn die aufrufende Zeile im titlingPaket nicht kommentiert ist, schlägt die Kompilierung mit folgendem Fehler fehl:

pdflatex esa-sre-gedais-sdp.tex
This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
entering extended mode
(./esa-sre-gedais-sdp.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
(/usr/share/texmf-texlive/tex/latex/datetime/datetime.sty
(/usr/share/texmf-texlive/tex/latex/fmtcount/fmtcount.sty
(/usr/share/texmf-texlive/tex/latex/base/ifthen.sty)
(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty)
(/usr/share/texmf-texlive/tex/latex/fmtcount/fc-english.def)
(/usr/share/texmf-texlive/tex/latex/fmtcount/fc-USenglish.def)
No configuration file fmtcount.cfg found.
)) (/usr/share/texmf-texlive/tex/latex/titling/titling.sty)
(./esa-sre-gedais-sdp.aux))
! Incomplete \iffalse; all text was ignored after line 8.
<inserted text> 
                \fi 
<*> esa-sre-gedais-sdp.tex

? X
No pages of output.
Transcript written on esa-sre-gedais-sdp.log.
make: *** [all] Error 1

Antwort1

Ich habe keine Ahnung, was die Pakete machen, aber wenn Sie Zweifel haben, fügen Sie hinzu \protect. Dies läuft ohne Fehler:

\documentclass{report}

\usepackage{datetime}
\usepackage{titling} %if this line is uncommented compilation fails

\begin{document}
\newdate{date2}{08}{02}{2015}
\date{\protect\displaydate{date2}}
foo
\end{document}

Antwort2

Das datetimePaket hat eine eigenartige Auswahl, welche Befehle robust sein sollen und welche nicht. Beispielsweise deklariert es \longdateund \shortdateähnliche Befehle als robust (was sie wahrscheinlich nicht sein sollten), aber es tut nicht dasselbe mit \displaydatedem, was wahrscheinlich in beweglichen Argumenten verwendet wird.

Also das PaketsollenTun

\DeclareRobustCommand*{\displaydate}[1]{%
\@ifundefined{date@#1@y}{%
\PackageError{datetime}{Date `#1' not defined}{}}{%
\formatdate{\csname date@#1@d\endcsname}{%
\csname date@#1@m\endcsname}{%
\csname date@#1@y\endcsname}}}

weil dieser Befehl verwendet \formatdate, der Zuweisungen durchführt und bei (Neu-)Definition nicht als robust deklariert ist ( \PackageErrorist auch ein Übeltäter). Leider verwendet das Paket \newcommandstattdessen.

Sie können das Problem folgendermaßen beheben etoolbox:

\documentclass{report}

\usepackage{etoolbox}
\usepackage{datetime}
\usepackage{titling} %if this line is uncommented compilation fails

\robustify{\displaydate} % make \displaydate robust

\begin{document}
\newdate{date2}{08}{02}{2015}

\title{Title}
\author{Author}
\date{\displaydate{date2}}

\maketitle

foo

\end{document}

und melden Sie dies dem Paketautor.

Bildbeschreibung hier eingeben

verwandte Informationen