如何提取法语中当前月份的首三个字母(不带重音字符)?

如何提取法语中当前月份的首三个字母(不带重音字符)?

有没有办法提取当前月份的前 3 个字母法语但没有重音字符且首字母大写 - 例如Fev(Février英文二月) - 且有 2 个例外:Juillet = Jul并且Juin = Jun(对于这两个例外,缩写中的第三个字母实际上对应于月份的第四个字母)?

因此,对于全部12个月,我希望获得以下结果:Jan,,,,,,,,,,,,。FevMarAvrMaiJunJulAouSepOctNovDec

\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现有月份选择正确的缩写,如果数字超出范围,则给出“什么?”。

相关内容