在文档中使用该datetime2
包时scrlttr2
,出现错误:
/usr/share/texlive/texmf-dist/tex/latex/datetime2/datetime2.sty:368: LaTeX 错误:\today 未定义。
请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。... l.368 \renewcommand*{\today} {%
重现此情况的代码如下:
\documentclass[british]{scrlttr2}
%\usepackage{polyglossia}
%\setmainlanguage[variant=british]{english}
\usepackage{babel}
\usepackage{datetime2}
\begin{document}
\begin{letter}{test}
\opening{Hello}
\today
\closing{Bye}
\end{letter}
\end{document}
如果您取出datetime2
,文档将正常工作并且\today
被定义。
我发现暂时修复该问题的唯一方法是在\newcommand\today{}
加载前调用datetime2
,但如果知道为什么必须这样做就更好了。
答案1
正如评论中提到的,问题源于scrlttr2
仅\today
在文档开头进行定义(与大多数\today
在类加载时进行定义的类不同)。从 v1.4 开始,datetime2
现在检查scrlttr2
(并且不假设\today
已经定义)。对于早期版本,以下是临时修复:
\documentclass[british]{scrlttr2}
\usepackage{babel}
\def\today{}
\usepackage{datetime2}
\let\orgtoday\today
\begin{document}
\let\today\orgtoday
\begin{letter}{test}
\opening{Hello}
\today
\closing{Bye}
\end{letter}
\end{document}