年のない日付

Sep 20 2020

パッケージによって制御されるドキュメント内の日付言語が欲しいのですが。これdatetime2は、このようなことを行う唯一の現代的なパッケージのようです。ただし、年なしで日と月を表示するだけでよい場合もあります。

21th March

それは可能ですか?文書化されていない(!)showdayofmonthフラグ(LaTeXの月/年形式)があることは知っていますが、その年には同様のフラグが見つかりませんでした。

たぶん私は別のパッケージを試す必要がありますか?多分babel?あなたは何を提案しますか?

MWE

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}

\begin{document}

\DTMDisplaydate{0}{2}{10}{-1}

\end{document}

回答

4 Marijn Sep 20 2020 at 20:56

編集:文書化されていないshowyearキーがあります。これは、たとえばを使用して単一の言語に適用することも、を使用し\DTMsetbool{en-GB}{showyear}{false}てすべての言語に適用することもできます\DTMlangsetup{showyear=false}。2番目のバージョンでは、キーが階層内の一部のリージョン(など)に適用できないため、警告が発行されenglish-baseます。この警告は、を使用して抑制することができます\DTMlangsetup*(datetime2 --showyear設定を使用する場合の警告を参照)。

この設定により、\DTMDisplaydateドキュメント全体の動作が変更されますが、使用後にリセットできます。

MWE:

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}

\begin{document}

\DTMlangsetup*{showyear=false}
\DTMDisplaydate{2020}{2}{10}{-1} is the date

\DTMlangsetup*{showyear=true}
\DTMDisplaydate{2020}{2}{10}{-1} is the date

\end{document}

結果:


元の答え:

マニュアルで説明されているように、年なしで新しい日付形式を定義できます(たとえば、96ページ以降)。

新しいフォーマットを使用する場合は、\DTMsetdatestyleに影響するを使用して設定する必要があり\DTMDisplaydateます。単回使用のみに設定することはできないようです。そのため、後でスタイルを以前のスタイルにリセットする必要があります。MWEではこれがen-GB(のためmain=british)です。マクロを使用するには、calcパッケージオプションを追加する必要があることに注意してください。datetime2\DTMmonthname

MWE:

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional,calc]{datetime2}

\begin{document}

\DTMnewdatestyle{noyear}{%
\renewcommand{\DTMdisplaydate}[4]{%
\DTMenglishordinal{##3} \DTMmonthname{##2}}%
}
\DTMsetdatestyle{noyear}
\DTMDisplaydate{2020}{2}{10}{-1}

\DTMsetdatestyle{en-GB}
\DTMDisplaydate{2020}{2}{10}{-1}

\end{document}

結果:

再定義には\DTMenglishordinal、序数(th)が上付き文字として印刷されないようにするために含まれていることに注意してください。Aより多くの国際的なバージョンがある\ordinalnumからfmtcount(ヨーロッパ言語の数をサポートしています)パッケージだけ上付き私の知る限りとして。

2 StevenB.Segletes Sep 20 2020 at 21:25

私は\stripyear助けるために紹介します。

\documentclass{scrbook}
\usepackage[english,main=british]{babel}
\usepackage[useregional]{datetime2}
\newcommand\stripyear[1]{%
  \edef\tmp{#1}\expandafter\stripyearaux\tmp\relax}
\def\stripyearaux#1 #2 #3\relax{#1 #2}
\begin{document}
\stripyear{\DTMDisplaydate{2020}{2}{10}{-1}}.
\end{document}