我也在这里发布了这个: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=\period
为range=\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 上查看开发版本,但我不能保证它每晚都能正常工作。)抱歉回复得这么慢。