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}

相關內容