วันที่ไม่มีปี

Sep 20 2020

ฉันต้องการภาษาวันที่ภายในเอกสารที่ควบคุมโดยแพ็คเกจ ดูเหมือนว่าdatetime2จะเป็นแพ็คเกจร่วมสมัยเดียวที่ทำสิ่งนี้ อย่างไรก็ตามในบางครั้งฉันต้องการเพียงแสดงวันและเดือนโดยไม่มีปีเช่น

21th March

เป็นไปได้หรือไม่ ฉันรู้ว่ามีshowdayofmonthแฟล็ก (!) ที่ไม่มีเอกสาร ( รูปแบบเดือน / ปีในลาเท็กซ์ ) ที่ทำแบบนั้นสำหรับวันนั้น แต่ฉันไม่พบสิ่งที่คล้ายกันสำหรับปีนี้

บางทีฉันควรลองแพ็คเกจอื่น อาจจะ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} 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) ถูกพิมพ์เป็นตัวยก เวอร์ชันสากลเพิ่มเติม\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}