我正在尝试用捷克语自动生成报告。在英语中,使用此解决方案没有问题线。来自包的\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}