更改标题页上的月份语言的条件不起作用。
如何根据选择编写条件来激活俄语或英语日期?
使用 XeLaTeX。
我的代码不起作用。梅威瑟:
\documentclass[10pt, oneside, a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{polyglossia}
\setotherlanguage{russian}
\foreignlanguage{russian}
\usepackage{datetime}
\ifthenelse{\umruslang>0}
{ %rus
\newcommand{\rus}[1]{\foreignlanguage{russian}{#1}}
\newdateformat{docdatef}{\rus{\monthname\ \THEYEAR}}
}
{%eng
\newdateformat{docdatef}{\monthname\ \THEYEAR}
}
答案1
语言定义文件dt-russian.def
(由 提供datetime
)使用\cyrya
月份名称等命令,而 XeLaTeX 并未提供这些命令。不过,datetime
已被替换为datetime2
以及相应的datetime2-russian
模块(需要单独安装)提供 UTF-8 支持。
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{russian}
\setmainfont{Liberation Serif}
\newfontfamily\cyrillicfont{Liberation Serif}
\usepackage[en-GB,russian]{datetime2}
\DTMlangsetup[en-GB,russian]{showdayofmonth=false}
\begin{document}
\today
\selectlanguage{russian}
\today
\end{document}
答案2
我同意这样datetime2
更好,但你也可以用 来做到这一点datetime
,只要你将\cyr?
和的调用翻译\CYR?
成它们的 Unicode 对应部分,这可以借助 来完成t2aenc.dfu
。
\documentclass[10pt, oneside, a4paper]{report}
\usepackage{polyglossia}
\setmainfont{Old Standard} % supports Cyrillic
\setmainlanguage{english}
\setotherlanguage{russian}
\usepackage{datetime}
\usepackage{expl3}
\newcommand{\rus}[1]{\foreignlanguage{russian}{#1}}
\newdateformat{docdatef}{\rus{\monthname\ \THEYEAR}}
%% convert \cyr? and \CYR? to unicode
\ExplSyntaxOn
\prg_generate_conditional_variant:Nnn \str_if_in:nn {xn} { T }
\group_begin:
\cs_set:Npn \DeclareUnicodeCharacter #1 #2
{
\tl_if_single:nT { #2 }
{
\str_if_in:xnT { \str_upper_case:f { \tl_to_str:n { #2 } } } { CYR }
{
\cs_gset:Npn #2 { \symbol{"#1} }
}
}
}
\file_input:n { t2aenc.dfu }
\group_end:
\ExplSyntaxOff
\begin{document}
\today
{\docdatef\today}
\end{document}