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
\today
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}