与此问题相同:如何获得增长的 \mid 二元关系,除了 luatex。
pdflatex 中该问题的答案是使用\mathrel{}\middle|\mathrel{}
,这会在用 编译时在右侧产生过多空间lualatex
。
梅威瑟:
\documentclass{article}
\begin{document}
Consider the expression: $\left(a\mathrel{}\middle|\mathrel{}b\right)$.
Compile this with `pdflatex` and `lualatex` and compare spacing.
\end{document}
使用 lualatex/pdflatex 编译:
这是一个错误吗?或者我该如何修复它?我正在使用 texlive 2017。
编辑: 我在 LuaTeX 邮件列表上问了这个问题,并得到了一些有趣的回复。特别是:http://tug.org/pipermail/luatex/2017-November/006645.html。在编辑此内容时,egreg
他根据链接的电子邮件更新了他的答案并提供解决方案 ;-)
答案1
如果我编译更简单的
$\left(a\mathrel{}\middle|\mathrel{}b\right)\showlists$\showlists
我在日志文件中看到以下内容
\mathinner
.\leftheight=0.00052 depth=0.00256 class=172 "28300
.\mathord
..\fam1 a
.\mathrel
..{}
.\middleheight=0.00682 depth=0.00638 "26A30C
.\mathrel
..{}
.\mathord
..\fam1 b
.\right"29301
这似乎没问题,但被翻译成盒子和胶水,
\mathon
\hbox(7.5+2.5)x28.46626, direction TLT
.\hbox(7.5+2.5)x3.8889, direction TLT
..\OT1/cmr/m/n/10 (
.\OML/cmm/m/it/10 a
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(0.0+0.0)x0.0, direction TLT
.\hbox(7.5+2.5)x2.77779, direction TLT
..\OMS/cmsy/m/n/10 j
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\hbox(0.0+0.0)x0.0, direction TLT
.\glue(\thickmuskip) 2.77771 plus 2.77771
.\OML/cmm/m/it/10 b
.\hbox(7.5+2.5)x3.8889, direction TLT
..\OT1/cmr/m/n/10 )
\mathoff
有一个神秘的盒子,它会导致二 \thickmuskip
要插入的胶水。
解决方案:
$\left(a\mathrel{}\middle|\mathopen{}\mathrel{}b\right)$
它也适用于pdflatex
。
附录
正如 Hans 在开始于http://tug.org/pipermail/luatex/2017-November/006642.html在 luatex 邮件列表中,有一个更简单的解决方法:
\documentclass{article}
\newcommand{\relmiddle}{\Umiddle class 5 }
\begin{document}
$\left(a \relmiddle| b\right)$
$(a\mid b)$
\end{document}
要使用的类号与旧版 TeX 中的标准数学类不同(LuaTeX 手册中的第 7.1.3.3.1 节):
0 ord
1 op normal
2 op limits
3 op no limits
4 bin
5 rel
6 open
7 close
8 punct
9 inner
10 under
11 over
12 vcenter
我们可以让它与其他引擎一起工作
\documentclass{article}
\ifdefined\Umiddle
\newcommand{\relmiddle}{\Umiddle class 5 }
\else
\newcommand{\relmiddle}[1]{\mathrel{}\middle#1\mathrel{}}
\fi
\begin{document}
$\left(a \relmiddle| b\right)$
$(a\mid b)$
\end{document}