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のみ定義することから生じます (クラスのロード時に定義するほとんどのクラスとは異なります)。v1.4 以降では、がチェックされるようになりました(すでに定義されていると想定しません)。以前のバージョンでは、次の方法で一時的に修正できます。\today\todaydatetime2scrlttr2\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}

関連情報