哪些软件包可以让我在数学模式下使用西里尔字符?

哪些软件包可以让我在数学模式下使用西里尔字符?

请注意,我实际上并没有打算写任何东西,例如俄语散文或任何俄语单词。只是,在纸上,我一直习惯用大写罗马字母表示集合,用手写字母表示集合的集合,并在需要时用大写西里尔字母表示集合的集合的集合。是否有一些我可以加载的包,允许我(在 LaTeX 数学模式下)排版西里尔字母,就像我排版希腊字母一样?即 $\Zhe$ 产生大写的 zhe。谢谢!

答案1

如果你只使用几个西里尔字母,并且只使用文本大小,最简单的方法是说

\usepackage[T2A,T1]{fontenc}
\newcommand{\Zhe}{\mbox{\usefont{T2A}{\rmdefault}{m}{n}\CYRZH}}

如果您还需要下标或上标中的它们,可以使用以下\mathchoice方法获取它们:

\usepackage[T2A,T1]{fontenc}
\makeatletter
\def\easycyrsymbol#1{\mathord{\mathchoice
  {\mbox{\fontsize\tf@size\z@\usefont{T2A}{\rmdefault}{m}{n}#1}}
  {\mbox{\fontsize\tf@size\z@\usefont{T2A}{\rmdefault}{m}{n}#1}}
  {\mbox{\fontsize\sf@size\z@\usefont{T2A}{\rmdefault}{m}{n}#1}}
  {\mbox{\fontsize\ssf@size\z@\usefont{T2A}{\rmdefault}{m}{n}#1}}
}}
\makeatother
\newcommand{\Ze}{\easycyrsymbol{\CYRZ}}

这使得 \Ze 有各种尺寸可供选择。

使用的命名很简单:只需在字母的英文音译前面添加\cyr或 即可。例如,小写的“shcha”是,大写的是。这称为字符的 LICR(LaTeX 内部字符表示)。\CYR\cyrshch\CYRSHCH

另一种解决方案,如果你需要整个曲目,又不想浪费太多资源,那么很有用

\usepackage[T2A,T1]{fontenc}
\DeclareSymbolFont{cyrillic}{T2A}{cmr}{m}{n}
\DeclareMathSymbol{\Sha}{\mathalpha}{cyrillic}{216}

因为 Sha 在 T2A 编码中处于该位置;这可以从文件中的定义中推断出来t2aenc.def。通过使用一些魔法,我们可以直接使用字符的 LICR 名称:

\usepackage[T2A,T1]{fontenc}
\DeclareSymbolFont{cyrillic}{T2A}{cmr}{m}{n}
\def\makecyrsymbol#1#2{%
  \begingroup\edef\temp{\endgroup
    \noexpand\DeclareMathSymbol{\noexpand#1}
    {\noexpand\mathalpha}{cyrillic}%
    {\expandafter\expandafter\expandafter
     \calccyr\expandafter\meaning\csname T2A\string#2\endcsname\end}}%
  \temp}
\expandafter\def\expandafter\calccyr\string\char#1\end{#1}

\makecyrsymbol\Zhe\CYRZH

该命令\makecyrsymbol有两个参数:第一个是符号的所需名称,第二个是西里尔字母的内部 LaTeX 名称。通过最后一行,我们将 \Zhe 定义为所有大小的数学命令。

\usepackage[T2A,T1]{fontenc}行对于将文档的主编码重置为 是必需的T1;如果您的语言是英语,因此不需要重音字母,请使用OT1,而不是T1。我已将此行作为四个解决方案的前缀:选择您喜欢的一个。

答案2

可能有更好的方法可以做到这一点,但至少这里有方式。据我所知,所需的字形都在 STIX 字体中,并且unicode 数学包可用于在数学中使用 STIX 字体。问题是的作者unicode-math似乎没有考虑到(轻松)使用任意字形的可能性。经过一番挖掘和实验,得到了以下代码。希望unicode-math(或fontspec)的作者之一能停下来清理一下!

以下是代码(的想法):

\documentclass{standalone}
\usepackage{unicode-math}
\setmathfont{xits-math.otf}

\ExplSyntaxOn
\newcommand{\mathcyrillic}[2]{%
\chardef#1=#2
\um_set_mathcode:nnnn{#1}{\mathalpha}{\um_symfont_tl}{#2}}
\ExplSyntaxOff

\mathcyrillic{\Tse}{"0426}
\mathcyrillic{\Che}{"0427}
\mathcyrillic{\Sha}{"0428}

\begin{document}
\(\Sha \Che \Tse\)
\end{document}

显然,你必须填写字母表中其余的所需字符。你可以在以下网址获取西里尔字母的 Unicode 编号:这个维基百科页面。数字是十六进制的,因此需要在前面加上双引号:"

结果:

数学中的西里尔字母

注意事项:您需要一种带有字形的字体(STIX 非常全面),并且您需要使用 XeLaTeX 或 LuaLaTeX 才能使该unicode-math包正常工作。

相关内容