我只想写 \Sha 而不破坏一切

我只想写 \Sha 而不破坏一切

我知道以前也有人问过类似的问题,但我对所看到的任何答案都不满意。我想用西里尔字母Ш来表示数学中的特定群。大多数解决方案都涉及使用OT2T2A编码;例如,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

无论使用什么编码,另一种有效的方法是将任意文本命令包装在\textfrom 里面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}

PDFTeX 字体示例

答案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”字符之间的宽度,并且看起来足够接近。只需将其放在那里即可。

相关内容