Tanggal tanpa tahun

Sep 20 2020

Saya ingin bahasa tanggal dalam dokumen dikontrol oleh paket. Tampaknya itulah datetime2satu-satunya paket kontemporer yang melakukan hal ini. Namun, terkadang saya hanya perlu menampilkan hari dan bulan tanpa tahun, yaitu

21th March

Apakah itu mungkin? Saya tahu bahwa ada showdayofmonthbendera tidak berdokumen (!) ( Format Bulan / Tahun dalam Lateks ) yang melakukan itu untuk hari itu, tetapi saya tidak dapat menemukan yang serupa untuk tahun ini.

Mungkin saya harus mencoba paket lain? Mungkinkah babel? Apa yang kamu sarankan?

MWE

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

\begin{document}

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

\end{document}

Jawaban

4 Marijn Sep 20 2020 at 20:56

Edit: ada showyearkunci tidak berdokumen . Anda dapat menerapkan ini untuk satu bahasa menggunakan misalnya \DTMsetbool{en-GB}{showyear}{false}atau untuk semua bahasa yang menggunakan \DTMlangsetup{showyear=false}. Versi kedua mengeluarkan peringatan karena kuncinya tidak berlaku untuk beberapa wilayah dalam hierarki, seperti english-base. Peringatan ini bisa disembunyikan dengan menggunakan \DTMlangsetup*(lihat datetime2 - Peringatan saat menggunakan setelan showyear ).

Pengaturan ini mengubah perilaku di \DTMDisplaydateseluruh dokumen, tetapi Anda dapat mengatur ulang setelah digunakan.

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}

Hasil:


Jawaban asli:

Anda dapat menentukan format tanggal baru tanpa tahun, seperti yang dijelaskan dalam manual (misalnya, halaman 96 dan selanjutnya).

Saat Anda ingin menggunakan format baru, Anda perlu mengaturnya menggunakan \DTMsetdatestyleyang akan mempengaruhi \DTMDisplaydate. Tampaknya tidak mungkin untuk mengaturnya hanya untuk penggunaan tunggal, jadi setelah itu Anda perlu mengatur ulang gaya ke gaya sebelumnya, di MWE ini en-GB(karena main=british). Perhatikan bahwa Anda perlu menambahkan calcopsi paket untuk datetime2menggunakan \DTMmonthnamemakro.

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}

Hasil:

Perhatikan bahwa definisi ulang mencakup \DTMenglishordinalagar ordinal (th) tidak dicetak sebagai superskrip. Versi yang lebih internasional berasal \ordinalnumdari fmtcountpaket (yang mendukung sejumlah bahasa Eropa) tetapi hanya sebagai superskrip sejauh yang saya tahu.

2 StevenB.Segletes Sep 20 2020 at 21:25

Saya perkenalkan \stripyearuntuk membantu.

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