我正在研究字体和符号的工作原理,但不明白引用的代码如何给我附加的输出。
记录如下:感谢这个社区的友善之人,我已经有了数学中西里尔字母的合理解决方案,包括mathspec
和unicode-math
包。我想让它们更加通用。
为什么不backtick + Cyrillic glyph
工作?
为什么我使用的字体中的一些符号(实际上是字体中存在的字符),类似于标准 TeX 字形long integral sign parts
并被其取代?plusminus
我正在使用 XeTeX 3.141592653-2.6-0.999994(Slackware 上的 TeX Live 2022)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathspec}
\setmainfont{Liberation Serif}
\SetMathAlphabet{\mathrm}{normal}{TU}{\familydefault}{m}{n}
\SetMathAlphabet{\mathit}{normal}{TU}{\familydefault}{m}{it}
\SetMathAlphabet{\mathbf}{normal}{TU}{\familydefault}{b}{n}
% looking at mathspec sources
\DeclareSymbolFont{Cyrillic:m:n}{TU}{\familydefault}{m}{n}
\DeclareMathSymbol{А}{\mathalpha}{Cyrillic:m:n}{`А}
\DeclareMathSymbol{а}{\mathalpha}{Cyrillic:m:n}{`а}
\DeclareMathSymbol{Я}{\mathalpha}{Cyrillic:m:n}{`Я}
\DeclareMathSymbol{я}{\mathalpha}{Cyrillic:m:n}{`я}
\setmathsfont(Digits,Latin,Greek){Liberation Serif}
\setmainfont{Liberation Serif}
\begin{document}
% text mode, to see proper outlines
А ~ Б ~ С ~ Д ~ 123 ~ ± ~ µ ~ υ ~ ζ ~ ∫ 1/x
% this is in \mathnormal
$ А_а ~ АаЯя $ ~~~<--- should be \it{ А\textsubscript{а} АаЯя}
% this is in \mathalpha's
$\mathrm{Б_б \zeta} ~ \mathit{C_с \zeta} ~ \mathbf{Д_д \zeta} ~ 123 ~ \pm ~ \mu ~ \upsilon ~ \zeta ~ 1.2 , 2.3 \int 1/x $
\end{document}
答案1
该命令\DeclareMathSymbol
未超出插槽 255。您需要\Umathcode
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathspec}
\setmainfont{Liberation Serif}
\DeclareMathAlphabet{\mathrm}{TU}{\familydefault}{m}{n}
\DeclareMathAlphabet{\mathit}{TU}{\familydefault}{m}{it}
\DeclareMathAlphabet{\mathbf}{TU}{\familydefault}{b}{n}
% looking at mathspec sources
\DeclareSymbolFont{Cyrillic}{TU}{\familydefault}{m}{it}
\Umathcode`А="0 \symCyrillic `А
\Umathcode`а="0 \symCyrillic `а
\Umathcode`Я="0 \symCyrillic `Я
\Umathcode`я="0 \symCyrillic `я
\setmathsfont(Digits,Latin,Greek){Liberation Serif}
\begin{document}
% text mode, to see proper outlines
А ~ Б ~ С ~ Д ~ 123 ~ ± ~ µ ~ υ ~ ζ ~ ∫ 1/x
% this is in \mathnormal
$ А_а АаЯя $ ~~~<--- should be \textit{А\textsubscript{а}АаЯя}
% this is in \mathalpha's
$\mathrm{Б_б \zeta} ~ \mathit{C_с \zeta} ~ \mathbf{Д_д \zeta} ~
123 ~ \pm ~ \mu ~ \upsilon ~ \zeta ~ 1.2 , 2.3 \int 1/x $
\end{document}
另外:您似乎认为这\it
是一个带参数的命令。但事实并非如此,因为它是一个声明,所以{\it ...}
语法应该是正确的,但事实是\it
(以及其他两个字母的字体更改命令)已被弃用近 30 年了。