使用 mathspec 时,当您将数学字体更改为 OpenType 字体时,公式中的间距会变得不合适:它与文本模式间距相同。例如,在公式中$e^j$
,大多数情况下,“j”会与“e”相冲突。因此,使用 mathspec 时,您必须键入$e^{"j}$
空格来分隔“j”。这在 mathspec 文档中称为“字形边界”问题。真正糟糕的是,它破坏了与 LaTeX 的兼容性。
有没有什么方法可以既有正确的间距又与 LaTeX 兼容?
以下是发生两次冲突的示例:
\documentclass{article}
\usepackage{mathspec}
\setmathsfont(Latin,Digits){Times New Roman}
\begin{document}
$e^j + |f|$ should be written $e^{"j} + |"f|$.
$\"abcdefghijklmnopqrstuvw"$
$abcdefghijklmnopqrstuvw$ : the spacing is too thin, suitable for text, not for math.
\end{document}
答案1
Lierre:感谢您发布完整的 MWE。好消息:我可以重现您的问题。更好的消息:至少在我的系统上,当我省略“(Latin,Digits)”选项时,这些问题会完全消失。顺便问一下,您为什么要指定这些选项?
附录,2011 年 9 月 18/20 日:我刚刚发现了 XITS 数学(和文本)字体的最新版本;请参阅XITS 网站五份.otf
文件。XITS Math
字母有更好的侧边距,即更大的侧边距。如果XITS
和XITS Math
足以满足您的需求,我认为您会非常满意。新的 MWE 看起来就像
% !TeX program = xelatex
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
\begin{document}
\noindent
$e^j + |f|$ \\
$abcdefghijklmnopqrstuvwxyz$ XITS-Math math italics\\
\textit{abcdefghijklmnopqrstuvwxyz} XITS text italics\\
\setmainfont{Times New Roman}
\textit{abcdefghijklmnopqrstuvwxyz} TNR text italics
\end{document}
我想第一行的右侧边距f
还可以再宽裕一些,但比起你最初发布的带有 TNR 的示例来说,这是一个巨大的进步!
将 XITS Math 字体的斜体字母与 Times New Roman 的(文本)斜体字母进行比较,新数学字体的主要新特征似乎是:
- 形状各异的
v
和w
- 字母的“泪珠”末端更大
f
,r
- 该字母
z
有一个基本的“花饰”(但它远不如 Computer Modern 或 MathtimePro 中的斜体 z 的花饰那么明显(后者带有选项zswash
集) - 大多数字母都更紧凑一些,垂直笔画也更粗一些
第二份附录,2017 年 5 月 27 日:最近,STIX 字体项目发布了 Stix Fonts 2.0 版。STIX Two Text 和 STIX Two Math 字体可从以下网址免费获取https://sourceforge.net/projects/stixfonts/。STIX Two Math(和 Text)字体相对于 XITS 和原始 Stix 字体而言,向前迈出了一大步。也就是说,以下屏幕截图中的数学字距相对于 XITS Math 提供的字距有了很大改进(参见上面的屏幕截图)。STIX Two 斜体字形(在文本和数学模式下)也比 Stix、XITS 和 Times New Roman 的倾斜度更小(或:更直立)。
% !TeX program = lualatex
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
\begin{document}
\obeylines % just for this example
$e^j + |f|$
$abcdefghijklmnopqrstuvwxyz$ --- STIX Two Math, math italics
\textit{abcdefghijklmnopqrstuvwxyz} --- STIX Two Text, text italics
\setmainfont{XITS}[Scale=MatchLowercase] % make sure x-heights match
\emph{abcdefghijklmnopqrstuvwxyz} --- XITS Text, text italics
\end{document}
答案2
我曾经遇到过类似的 mathspec/opentype/spacing 问题,并通过采用纯 latex 数学模式间距命令解决了这些问题:
$
\, % a small space
\: % a medium space
\; % a large space
\quad % a really large space
\qquad % a huge space
\! % a negative space (moves things back to the left)
$
"
与 mathspec 相比,它的优势\"..."
有两个方面:您可以在任何地方使用这些命令(而不是只能在单个字符前面),并且它们与 LaTeX 和 XeTeX 兼容。
我不确定这是否正是您所需要的,但它解决了我的(类似)问题。