替换 Arev Sans 中的分隔符以实现正确的缩放

替换 Arev Sans 中的分隔符以实现正确的缩放

[编辑以扩展问题]

我使用 Arev Sans 与 Beamer 进行演示,但数学中的默认括号让我很烦。最小的集合与下一个较大的拉伸集合不太匹配。此外,它们与文本模式中使用的分隔符不匹配。此示例显示了它们有点太重:

\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage{arev}
\begin{document}
\begin{frame}
\begin{itemize}
\item Normal text delimiters vs. math delimiters
\[
\text{(a)} \quad \left( a \right) \qquad
\text{[a]} \quad \left[ a \right] \qquad
\text{\{a\}} \quad \left\{ a \right\}
\]

\item Different sized math delimiters
\[
\left( a \right) \quad \left( a^2 \right) \qquad 
\left[ a \right] \quad \left[ a^2 \right] \qquad
\left\{ a \right\} \quad \left\{ a^2 \right\}
\]
\end{itemize}
\end{frame}
\end{document}

在此处输入图片描述

有没有办法用常规文本中使用的数学分隔符替换最小的数学分隔符集,以便它们更好地匹配较大的数学分隔符集?

答案1

已编辑以避免缩放方法,并坚持纯基于支柱的方法。

如果希望使用该方法的完全自动化版本,以便\fixdelim自动应用于的所有实例\left,这里有一个不涉及缩放的方法,而只涉及在每一个表达式中自动插入一个额外的支撑\left...\right

\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage{arev}
\def\mystrut{\protect\rule{0pt}{\ht\strutbox}}
\def\fixdelim\svleft#1#2\right#3{\svleft#1\mystrut #2\right#3}
\let\svleft\left
\def\left{\fixdelim\svleft}
\begin{document}
\begin{frame}
\[
\left( g \right) \quad \left( g^2 \right) \qquad 
\left( a \right) \quad \left( a^2 \right) \qquad 
\left[ a \right] \quad \left[ a^2 \right] \qquad
\left\{ a \right\} \quad \left\{ a^2 \right\}
\]
\[
\left(\frac{ax+b}{cx+d}\right)_{\left[\frac{x_1}{x_2}\right]}
\]
\end{frame}
\end{document}

在此处输入图片描述


原始方法的变化

该方法采用了缩放程序,而不是单纯的支柱。

需要时,需要在、、或\fixdelim之前手动添加。它在文本和数学模式下有效,但对于较小的数学样式可能会失败。\left([\{

\documentclass{beamer}
\usefonttheme{professionalfonts}
\usepackage{arev,scalerel}
%\def\mystrut{\protect\rule{0pt}{\ht\strutbox}}
\def\mystrut{\protect\rule{0pt}{1.4\LMex}}
\def\fixdelim#1{\ifx\left#1\expandafter\fixdelimA\expandafter#1\else
    \ifmmode
      \ifx(#1\expandafter\fixdelimE\expandafter#1\else
      \ifx[#1\expandafter\fixdelimF\expandafter#1\else
      \ifx\{#1\expandafter\fixdelimG\expandafter#1\fi\fi\fi
    \else
      \ifx(#1\expandafter\fixdelimB\expandafter#1\else
      \ifx[#1\expandafter\fixdelimC\expandafter#1\else
      \ifx\{#1\expandafter\fixdelimD\expandafter#1\fi\fi\fi
    \fi
  \fi}
\def\fixdelimA\left#1#2\right#3{\ThisStyle{\scalebox{1}[.9]{$\SavedStyle%
  \left#1\scalebox{1}[1.111]{$\SavedStyle\mystrut #2$}\right#3$}}}
\def\fixdelimB(#1){$\fixdelimA\left(\right.$#1$\fixdelimA\left.\right)$}
\def\fixdelimC[#1]{$\fixdelimA\left[\right.$#1$\fixdelimA\left.\right]$}
\def\fixdelimD\{#1\}{$\fixdelimA\left\{\right.$#1$\fixdelimA\left.\right\}$}
\def\fixdelimE(#1){\fixdelimA\left(\right.\!#1\!\fixdelimA\left.\right)}
\def\fixdelimF[#1]{\fixdelimA\left[\right.\!#1\!\fixdelimA\left.\right]}
\def\fixdelimG\{#1\}{\fixdelimA\left\{\right.\!#1\!\fixdelimA\left.\right\}}
\begin{document}
\begin{frame}
Text mode: \fixdelim(xyz)
\fixdelim[xyz]
\fixdelim\{xyz\}

Math Mode:
\[
\fixdelim(a)
\fixdelim[a]
\fixdelim\{a\}
\]
\[
\fixdelim\left( a \right) \quad \left( a^2 \right) \qquad 
\fixdelim\left[ a \right] \quad \left[ a^2 \right] \qquad
\fixdelim\left\{ a \right\} \quad \left\{ a^2 \right\}
\]
\[
\scriptscriptstyle\fixdelim(a)
\fixdelim[a]
\fixdelim\{a\}
\]
Doesn't always work in smaller math styles
\[
\scriptscriptstyle
\fixdelim\left( a \right) \quad \fixdelim\left( a^2 \right) \qquad 
\fixdelim\left[ a \right] \quad \fixdelim\left[ a^2 \right] \qquad
\fixdelim\left\{ a \right\} \quad \fixdelim\left\{ a^2 \right\}
\]
\end{frame}
\end{document}

在此处输入图片描述

相关内容