在文件中使用該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}