我使用函数限制符号,例如这里,但在切换到带有 unicode-math 的 XeLaTeX 后,我注意到它看起来有点奇怪。这是一个最小的工作示例
\documentclass{minimal}
\usepackage{unicode-math}
\begin{document}
\[
\left. \frac{dy}{dx} \right\vert_{x=5} \quad
\left. y \right\vert_{x=5}
\]
\end{document}
输出如下和unicode数学:
下面是没有unicode数学:
显然,unicode-math 分隔符更短,下标的基线更低。
理想情况下,我希望垂直条的底部延伸到下标的基线,同时保持分隔符相对于其左侧表达式的自动缩放。
我怎样才能实现这个目标?
如果相关:我将使用 texgyrepagella-math 字体。
答案1
如果有人感兴趣的话,这是我自己想出来的办法,结合了这和这回答:
\documentclass{article}
\newcommand{\restr}[2]{%
\mathchoice{%
\restriction{#1}{#2}{\displaystyle}%
}{%
\restriction{#1}{#2}{\textstyle}%
}{%
\restriction{#1}{#2}{\scriptstyle}%
}{%
\restriction{#1}{#2}{\scriptscriptstyle}%
}%
}
\newlength{\totbarheight}
\newlength{\bardepth}
\newcommand{\restriction}[3]{%
\settodepth{\bardepth}{\(#3 #1\)} %
\settoheight{\totbarheight}{\(#3 #1\)}%
\addtolength{\totbarheight}{\bardepth}%
\addtolength{\totbarheight}{1ex}% make it somewhat higher
\addtolength{\bardepth}{0.7ex}% make it extend somewhat further down
{#1 %
\rule[-\bardepth]{0ex}{\totbarheight} %invisible rule to force the next \vrule to be bigger
\mkern 2mu \vrule width 0.14ex \mkern 2.5mu}
{\addtolength{\bardepth}{-0.2ex}%make shorter to lift the baseline of the subscript
\addtolength{\totbarheight}{-0.2ex}
\rule[-\bardepth]{0ex}{\totbarheight}}_{#2}
}
\begin{document}
\(\restr{\frac{dy}{dx}}{x=2} 5\restr{y}{x=a}\)
\[\restr{\frac{dy}{dx}}{x=2} 5\restr{y}{x=a}\]
\end{document}