amsmath 与 tgheros 结合使用会破坏 \big 分隔符

amsmath 与 tgheros 结合使用会破坏 \big 分隔符

简短的背景信息:我(很遗憾;-))必须使用 Helvetica 字体,因此我加载了该tgheros包并用 Helvetica 中相应的字形替换了数学符号。对于分隔符,我考虑使用\DeclareMathDelimiterHelvetica 中的“正常”大小版本和 CM 中的较大变体。这个 MWE

\documentclass{article}

\usepackage[scale]{tgheros}
% \usepackage{amsmath}

\DeclareSymbolFont{sfmathup}{OT1}{qhv}{m}{n}
\DeclareMathDelimiter{(}{\mathopen}{sfmathup}{"28}{largesymbols}{"00}

\begin{document}

\setbox0=\hbox{$\{$} \the\wd0: \box0

\setbox0=\hbox{$\bigl\{$} \the\wd0: \box0

\end{document}

产生以下输出:

不含 amsmath

(免责声明:实际上我也在使用无衬线字体largesymbols,但这与这里的问题无关。)但是,如果我取消注释,amsmath我会得到

使用 amsmath

真正让我吃惊的是,重新定义插入语在某种程度上影响了支撑。 我记得缩放分隔符的问题,amsmath但我找不到任何想法。

顺便说一句,只有当tgheros加载该scale选项时才会发生这种情况,但我需要它,因此删除它不是一个选择。

答案1

原因是amsmath使用(来构建一个框,并在其周围使用\left\right并生成\big分隔符。但是,(您设置的字体中的 太小,不足以使\big增大尺寸。

\documentclass{article}

\usepackage[scale]{tgheros}
\usepackage{amsmath}

\DeclareSymbolFont{sfmathup}{OT1}{qhv}{m}{n}
\DeclareMathDelimiter{(}{\mathopen}{sfmathup}{"28}{largesymbols}{"00}

\makeatletter
\renewcommand{\big}{\bBigg@{1.1}} % originally it's 1
\makeatother

\begin{document}

$\{\big\{\Big\{\bigg\{\Bigg\{$

$(\big(\Big(\bigg(\Bigg($

\end{document}

请注意\bigl\bigr\bigm基于\big

在此处输入图片描述

答案2

这有效...您可以粘贴您想要的任何其他数学字体。

在此处输入图片描述

% !TeX program = lualatex
\documentclass{article}

\usepackage{fontspec,unicode-math}
\usepackage[scale]{tgheros}
% \usepackage{amsmath}
\setmathfont[version=termes]{TeX Gyre Termes Math}
\mathversion{termes}


\begin{document}

    \setbox0=\hbox{$\{$} \the\wd0: \box0

    \setbox0=\hbox{$\bigl\{$} \the\wd0: \box0

\end{document}

相关内容