更改 datetime2 月份返回的大小写

更改 datetime2 月份返回的大小写

我正在尝试用捷克语自动生成报告。在英语中,使用此解决方案没有问题线。来自包的\monthname命令也有同样的行为。datetime

问题是,在捷克语中\DTMmonthname月份名称属格这通常不同于主格案件。

软件包是否datetime2能够返回不同的案例(捷克语中有 7 种不同的案例,德语中有 4 种案例)或每个月只保留一种案例?或者只有一种方法:\foo[<case>]{<month#>}自己进行硬编码?

答案1

我不认识任何捷克人,所以这纯粹只是猜测。

datetime2-serbian模块提供拉丁字母月份名称和西里尔字母月份名称,并可在两者之间切换。datetime2-usorbian模块提供了新式月份名称和旧式月份名称,并提供了在它们之间切换的选项。听起来您正在寻找类似的功能,因此我将在这里使用与这些语言模块所采用的方法类似的方法。如果这不正确,请在您的问题中添加一些使用示例。

在 中datetime2-czech-utf8.ldf,替换

\newcommand*{\DTMczechmonthname}[1]{%
  \ifcase#1
  \or
  ledna%
  \or
  února%
  \or
  března%
  \or
  dubna%
  \or
  května%
  \or
  června%
  \or
  července%
  \or
  srpna%
  \or
  září%
  \or
  října%
  \or
  listopadu%
  \or
  prosince%
  \fi
}

\newcommand*{\DTMczechgenitivemonthname}[1]{%
  \ifcase#1
  \or
  ledna%
  \or
  února%
  \or
  března%
  \or
  dubna%
  \or
  května%
  \or
  června%
  \or
  července%
  \or
  srpna%
  \or
  září%
  \or
  října%
  \or
  listopadu%
  \or
  prosince%
  \fi
}
\newcommand*{\DTMczechmonthname}{\DTMczechgenitivemonthname}% default

\newcommand*{\DTMczechnominativemonthname}[1]{%
  \ifcase#1
  \or
  nominative version of ledna%
  \or
  nominative version of února%
  \or
  nominative version of března%
  \or
  nominative version of dubna%
  \or
  nominative version of května%
  \or
  nominative version of června%
  \or
  nominative version of července%
  \or
  nominative version of srpna%
  \or
  nominative version of září%
  \or
  nominative version of října%
  \or
  nominative version of listopadu%
  \or
  nominative version of prosince%
  \fi
}

对其他需要的情况添加类似的代码。对于首字母大写的情况也类似\DTMczechMonthname

执行相同的操作datetime2-czech-ascii.ldf,但将 UTF-8 字符替换为 LaTeX 命令。(该-utf8.ldf文件由 XeLaTeX 和 LuaLaTeX 使用。该-ascii.ldf文件由 LaTeX 使用。)

然后在datetime2-czech.ldf定义模块选项的块中(诸如\DTMdefbool和 之类的命令\DTMdefkey)添加以下内容:

\DTMdefchoicekey{czech}{month}[\val\nr]{genitive,nominative}{%
 \ifcase\nr\relax
  \renewcommand*\DTMczechmonthname{\DTMczechgenitivemonthname}%
  \renewcommand*\DTMczechMonthname{\DTMczechgenitiveMonthname}%
 \or
  \renewcommand*\DTMczechmonthname{\DTMczechnominativemonthname}%
  \renewcommand*\DTMczechMonthname{\DTMczechnominativeMonthname}%
 \fi
}

类似地添加您需要的额外案例。

完成这些更改后,在文档中,您应该能够使用 在不同大小写之间切换\DTMlangsetup。例如:

\DTMlangsetup[czech]{month=genitive}

相关内容