![pacote [datetime] não funciona com](https://rvso.com/image/305763/pacote%20%5Bdatetime%5D%20n%C3%A3o%20funciona%20com%20.png)
Abaixo está um 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}
... o código acima compila, mas se a linha que chama no titling
pacote não for comentada, a compilação falhará com:
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
Responder1
Não tenho ideia do que nenhum dos pacotes está fazendo, mas em caso de dúvida, adicione \protect
. Isso é executado sem erros:
\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}
Responder2
O datetime
pacote possui uma escolha peculiar de quais comandos devem ser robustos ou não. Por exemplo, ele declara \longdate
, \shortdate
e comandos semelhantes como robustos (provavelmente não deveriam), mas não faz o mesmo \displaydate
que provavelmente será usado na movimentação de argumentos.
Então o pacotedevefazer
\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}}}
porque este comando usa \formatdate
which executa atribuições e não é declarado como robusto quando (re)definido (também \PackageError
é um culpado). Infelizmente, o pacote usa \newcommand
em vez disso.
Você pode corrigir o problema com 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}
e relate isso ao autor do pacote.