![Paket [Datum/Uhrzeit] funktioniert nicht mit](https://rvso.com/image/305763/Paket%20%5BDatum%2FUhrzeit%5D%20funktioniert%20nicht%20mit%20.png)
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 titling
Paket 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 datetime
Paket hat eine eigenartige Auswahl, welche Befehle robust sein sollen und welche nicht. Beispielsweise deklariert es \longdate
und \shortdate
ähnliche Befehle als robust (was sie wahrscheinlich nicht sein sollten), aber es tut nicht dasselbe mit \displaydate
dem, 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 ( \PackageError
ist auch ein Übeltäter). Leider verwendet das Paket \newcommand
stattdessen.
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.