有没有办法提取当前月份的前 3 个字母法语但没有重音字符且首字母大写 - 例如Fev
(Février
英文二月) - 且有 2 个例外:Juillet = Jul
并且Juin = Jun
(对于这两个例外,缩写中的第三个字母实际上对应于月份的第四个字母)?
因此,对于全部12个月,我希望获得以下结果:Jan
,,,,,,,,,,,,。Fev
Mar
Avr
Mai
Jun
Jul
Aou
Sep
Oct
Nov
Dec
\currentMonthAbbreviated
如果有类似命令的东西直接输出当前月份对应的缩写就好了。
有没有办法用datetime2
包裹或者其他东西来做到这一点?
答案1
该datetime2
包提供了\DTMfrenchshortMonthname
,但将其定义为
\newcommand*{\DTMfrenchMonthname}[1]{%
\ifcase#1
\or
Janvier%
\or
F\protect\'evrier%
\or
Mars%
\or
Avril%
\or
Mai%
\or
Juin%
\or
Juillet%
\or
Ao\protect\^ut%
\or
Septembre%
\or
Octobre%
\or
Novembre%
\or
D\protect\'ecembre%
\fi
}
你要做的是按照你的意愿重新定义它:
\renewcommand*{\DTMfrenchshortMonthname}[1]{%
\ifcase#1\or
Jan\or Fev\or Mar\or Avr\or Mai\or Jun\or
Jul\or Aou\or Sep\or Oct\or Nov\or Dec\fi
}
另一方面,这可以完全独立于datetime2
。您可以定义自己的命令
\ExplSyntaxOn
\NewExpandableDocumentCommand{\shortfrenchmonth}{m}
{
\int_case:nnF { #1 }
{
{1}{Jan}{2}{Fev}{3}{Mar}{4}{Avr}{5}{Mai}{6}{Jun}
{7}{Jul}{8}{Aou}{9}{Sep}{10}{Oct}{11}{Nov}{12}{Dec}
}
{BAD MONTH NUMBER}
}
\ExplSyntaxOff
完整示例:
\documentclass{article}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\shortfrenchmonth}{m}
{
\int_case:nnF { #1 }
{
{1}{Jan}{2}{Fev}{3}{Mar}{4}{Avr}{5}{Mai}{6}{Jun}
{7}{Jul}{8}{Aou}{9}{Sep}{10}{Oct}{11}{Nov}{12}{Dec}
}
{BAD MONTH NUMBER}
}
\ExplSyntaxOff
\begin{document}
\shortfrenchmonth{\month}
\shortfrenchmonth{7}
\end{document}
答案2
暴力破解:
\documentclass{article}
\newcommand{\frabbmonth}{\ifcase\month What?\or
Jan\or Fev\or Mar\or Avr\or Mai\or Jun\or Jul\or
Aou\or Sep\or Oct\or Nov\or Dec\else What?\fi}
\begin{document}
\frabbmonth
\end{document}
解释:\month
包含当前月份数,范围为 1...12。因此,将为\ifcase
现有月份选择正确的缩写,如果数字超出范围,则给出“什么?”。