如何在 LuaLaTeX 中使用 unicode-math 的标点符号?

如何在 LuaLaTeX 中使用 unicode-math 的标点符号?

我也在这里发布了这个:http://texwelt.de/wissen/fragen/3000/interpunktion-in-lualatex-mit-unicode-math-von-hauptschriftart问题是我想要从主字体中获取符号\period(也range="002E不起作用),但是当我运行这个时:

%!TEX TS-program = lualatex
\documentclass{standalone}
%
\usepackage[math-style=ISO]{unicode-math}
%
\setmainfont{MinionPro-Regular}
%
\setmathfont{LatinModernMath-Regular}
\setmathfont[range=\period]{MinionPro-Regular}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{MinionPro-Regular}
\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{MinionPro-Bold}
\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{MinionPro-It}
\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{MinionPro-BoldIt}

\begin{document}
    $\bigl(x^2+5\bigr).$
\end{document}

我得到以下结果:

在此处输入图片描述

有什么办法可以解决这个问题吗?谢谢帮助。

我可能认为问题出在\right.- 和- 分隔符上,因为如果使用and而不是and \left.,则不会得到错误的结果。 似乎使它们可见。\left\right\bigl(\bigr)range=\period

有可能修复这个问题吗?

答案1

0.7f 版本尚未解决该问题unicode-math,因此这个答案只是为了尝试了解发生了什么;提出了一个丑陋的解决方法。

这是我在添加到with\showlists的定义时得到的结果\big

\usepackage{etoolbox}
\makeatletter
\patchcmd{\big}{\n@space}{\n@space\showlists}{}{}
\makeatother

$\big($

unicode-math版本 0.7e

\mathinner
.\left"28000
.\mathord
..\vbox(8.5+0.0)x0.0
.\right"42E000
### restricted horizontal mode entered at line 20
spacefactor 1000
### math mode entered at line 20
### math mode entered at line 20
\mathord
### restricted horizontal mode entered at line 18
spacefactor 1000
### vertical mode entered at line 0
### current page:
\write-{}

unicode-math版本 0.7f

### math mode entered at line 20
\mathinner
.\left"28000
.\mathord
..\vbox(8.5+0.0)x0.0
.\right"0
### restricted horizontal mode entered at line 20
spacefactor 1000
### math mode entered at line 20
### math mode entered at line 20
\mathord
### restricted horizontal mode entered at line 18
spacefactor 1000
### vertical mode entered at line 0
### current page:
\write-{}

输出结果来自 XeLaTeX,但 LuaLaTeX 的输出结果类似。我们可以清楚地看到

.\right"42E000

使用 0.7e 版本,在 之后会准确显示一个居中的点\right。使用 0.7f 版本,我们得到

.\right"0

即预期的空分隔符。

这是 OP 示例中的 PDF 输出。

unicode-math使用版本 0.7e(和 TeX Live 2013)的输出

在此处输入图片描述

unicode-math使用版本 0.7f(和 TeX Live 2014)的输出

在此处输入图片描述

魔法在哪里?

在从 0.7e 到 0.7f 的过程中, 的条目\period已从 中删除unicode-math-table.tex,因此range=\period不执行任何操作。如果我们更改range=\periodrange=\mathperiod(新名称),则中心点会重新出现。

解决方法

\documentclass{standalone}
%
\usepackage[math-style=ISO]{unicode-math}
%
\setmainfont{MinionPro-Regular}
%
\setmathfont{LatinModernMath-Regular}
\setmathfont[range=\mathperiod]{MinionPro-Regular}
\setmathfont[range=\mathup/{num,latin,Latin,greek,Greek}]{MinionPro-Regular}
\setmathfont[range=\mathbfup/{num,latin,Latin,greek,Greek}]{MinionPro-Bold}
\setmathfont[range=\mathit/{num,latin,Latin,greek,Greek}]{MinionPro-It}
\setmathfont[range=\mathbfit/{num,latin,Latin,greek,Greek}]{MinionPro-BoldIt}

\Udelcodenum`.=1073741824 % reset the right delcode

\begin{document}
$\bigl(x^2+5\bigr).$
\end{document}

在此处输入图片描述

根据我的 PDF 预览器,最后一个句号在 Minion Pro 中。

答案2

这个问题有些笼统,但指的是句点的具体问题,句点对 TeX 分隔符有特殊含义。(从其他字体中选择其他标点符号也可以,对吧?)我的理解是,它们的 delcode 应该始终为零;unicode-math 有一行代码可以确保这一点,但由于range解释方式存在更广泛的错误,因此它没有运行。

unicode-math 的下一版本将修复此问题。(您可以在 Github 上查看开发版本,但我不能保证它每晚都能正常工作。)抱歉回复得这么慢。

相关内容