符号和 Stix Two 字体\big\lVert
一样大\Big\lVert
。这是字体本身的缺陷吗?有合适的解决方法吗?
MWE(在 lualatex 中运行):
\documentclass{minimal}
\usepackage{fontspec,unicode-math,color}
\setmathfont{STIX2Math.otf}
\begin{document}
\[
\Bigg\Vert\;\bigg\Vert\;\Big\Vert\;\textcolor{red}{\big\Vert}\;\|
\]
\end{document}
这里有一个可能相关的问题。不幸的是,我对查看 OTF 字体文件内部了解不够,无法检查原因是否相似。但同样的解决方法似乎不适用于此。我是否包含并不重要amsmath
(我通常会包含)。
答案1
使用 lualatex,我认为您可以像这样修补字体。使用此补丁,\Vert 的行为类似于 |。请注意,这涉及很多猜测,而且我不知道内部结构有多稳定。
\documentclass{article}
\usepackage{amsmath}
\usepackage{luacode}
\begin{luacode}
local patch_stixmath = function (fontdata)
if fontdata.psname == "STIXTwoMath"
then
fontdata.characters[8214]["vert_variants"][2]["end"]=
fontdata.characters[8214]["vert_variants"][1]["end"]
fontdata.characters[8214]["vert_variants"][2]["start"]=
fontdata.characters[8214]["vert_variants"][1]["start"]
end
end
luatexbase.add_to_callback
(
"luaotfload.patch_font",
patch_stixmath,
"change_stixmath"
)
\end{luacode}
\usepackage{fontspec,unicode-math,color}
\setmathfont{STIX2Math.otf}
%\setmathfont{latinmodern-math.otf}
\usepackage{xfp,pgffor}
\begin{document}
\[
\Bigg\Vert\;\bigg\Vert\;\Big\Vert\;\textcolor{red}{\big\Vert}\;\|
\]
\foreach\x in {1,2,...,300}
{$\left|\rule{0pt}{\fpeval{5+\x*0.1}pt}\fpeval{5+\x*0.1} \right\Vert $ }
\end{document}