在 Xelatex 中,我可以使用以下方法更改数学模式下数字的大小:
\setmathsfont(Digits)[Scale=0.9]{Bodoni}
是否有类似的程序可以对主字体的数字执行相同的操作?我尝试了显而易见的行(与上一个类似,但使用setmainfont
),但没有成功。任何帮助都将不胜感激。如果这个问题是在另一个帖子中提出的,我很抱歉。我找不到它。谢谢。
答案1
数学数字位于数学字母数字符号 unicode 块中(因此:unicode-math
包命令和选项以及数千个符号);文本数字与标点符号和字母一起位于基本拉丁 unicode 块中,因此对于所问的问题的回答是“否(还没有)”。
但 ...
... 你可以做:
方法(1)
您可以定义字体,然后手动将其应用于文本数字。
定义\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]
加上用法abc{\fdigits 123}
得出:
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]
\begin{document}
abc123
abc{\fdigits 123}
\end{document}
方法(2)
自动应用缩放字体。
使用 Xe(La)TeX,您可以使用它的interchartoks
功能:
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]
\newfontfamily\fdigitsu{Noto Serif}[Scale=0.9,Colour=red]
\XeTeXinterchartokenstate = 1
\newXeTeXintercharclass \mychardigits
\XeTeXcharclass `\0 \mychardigits
\XeTeXcharclass `\1 \mychardigits
\XeTeXcharclass `\2 \mychardigits
\XeTeXcharclass `\3 \mychardigits
\XeTeXcharclass `\4 \mychardigits
\XeTeXcharclass `\5 \mychardigits
\XeTeXcharclass `\6 \mychardigits
\XeTeXcharclass `\7 \mychardigits
\XeTeXcharclass `\8 \mychardigits
\XeTeXcharclass `\9 \mychardigits
% between " " and "digits":
\XeTeXinterchartoks 4095 \mychardigits = {\bgroup\fdigitsu}
\XeTeXinterchartoks \mychardigits 4095 = {\egroup}
% between <most chars> and "digits":
\XeTeXinterchartoks 0 \mychardigits = {\bgroup\fdigitsu}
\XeTeXinterchartoks \mychardigits 0 = {\egroup}
\begin{document}
abc123abc
abc{\fdigits 123}
xyz 456 xyz
\end{document}
方法(3)- 一点 .sty 编码
在ucharclasses.sty
包中(先复制一份,保存在本地,也许重命名),您可以将 BasicLatin unicode 块拆分为数字、字母、标点符号小块;添加相关的包选项;然后在序言中定义块之间的转换(或块与单词边界之间的转换)。