我知道以前也有人问过类似的问题,但我对所看到的任何答案都不满意。我想用西里尔字母Ш
来表示数学中的特定群。大多数解决方案都涉及使用OT2
或T2A
编码;例如,http://math.berkeley.edu/~vojta/tex/samp-l/sha.html。然而,这会使文档中的其他文本看起来很糟糕。
例如,使用上面的解决方案,我得到
虽然我希望
第一个似乎阴影很奇怪,而且字符似乎没有正确对齐。
Ш
有谁知道如何在不改变其余文本的默认字体的情况下写出字符(在数学模式下)?
答案1
对于只想在数学中使用一两个西里尔字母的人来说,在现代计算机环境中,旧wncy
字体仍然作为集合的一部分以 1 型格式在 tex live 中分发amsfonts
。(但他们不需要使用该amsfonts
包。)
这是 ams 作者常见问题解答中的建议。
我想使用一些西里尔字母作为数学变量,但 AMSfonts 包中没有对西里尔字母的 LaTeX 支持。我该怎么做?
以下四行将加载直立西里尔字体并定义
\Sh
访问字母“Sha”。\DeclareFontFamily{U}{wncy}{} \DeclareFontShape{U}{wncy}{m}{n}{<->wncyr10}{} \DeclareSymbolFont{mcy}{U}{wncy}{m}{n} \DeclareMathSymbol{\Sh}{\mathord}{mcy}{"58}
wncyr
通过查看 AMSFonts 用户指南中的图表或通过 TeXing 文件创建的字体图表testfont.tex
(包含在每个 TeX 系统中),可以找到字体中西里尔字母的位置。
texdoc amsfonts
可以使用或访问用户指南texdoc amsfndoc
。
答案2
在现代 TeX 安装中,如果你想使用任何其他字体,你要么在 TU/Unicode 中声明你的符号字体(它在插槽中"0448
),要么,如果你使用的是 8 位传统字体,在 T2A 编码中(它在插槽中"F8
)。如果它应该是字母,它应该有字符类 mathalpha,或者mathop
)。如果它应该是一个字母,或者如果它应该像 ln 一样排版,X。
无论使用什么编码,另一种有效的方法是将任意文本命令包装在\text
from 里面amsmath
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{CMU Serif}[Scale = 1.0]
\newcommand\sh[1]{\ensuremath{\mathop{\text{\normalfont ш}}#1}}
\begin{document}
\[ \sh(x), \sh y
\]
\end{document}
在 PDFTeX 中这稍微复杂一些,但仍然可以透明地与任何字体配合使用。例如,\usepackage{type1ec}
使用 CM-Super,或\usepackage{cmlgc}
使用 CM 扩展,或您选择的字体。
\documentclass{article}
\usepackage[T2A, T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018.
\usepackage{amsmath}
\newcommand\sh[1]{\ensuremath{\mathop{\text{\normalfont\fontencoding{T2A}\selectfont ш}}#1}}
\begin{document}
\[ \sh(x), \sh y
\]
\end{document}
答案3
这有效!
%Sha:
\usepackage[OT2,T1]{fontenc}
\DeclareSymbolFont{cyrletters}{OT2}{wncyr}{m}{n}
\DeclareMathSymbol{\Sha}{\mathalpha}{cyrletters}{"58}
%end of Sha
答案4
一个 hack 可以使用:
\newcommand{\Sha}{\textls[0]{III}}
这样可以减少“I”字符之间的宽度,并且看起来足够接近。只需将其放在那里即可。