scrlttr2 文档因 datetime2 包而失败

scrlttr2 文档因 datetime2 包而失败

在文档中使用该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}

相关内容