MTPro2 中自动选择可伸缩花括号和直括号

MTPro2 中自动选择可伸缩花括号和直括号

MTProII 字体提供了两组花括号,直括号和可延伸至 4 英寸高的花括号......这一切都非常棒,只是在使用构造时,{cases}amsmath(自动)有时会选择一种类型,有时会选择另一种类型,混合起来看起来不太好看:

\documentclass{report}

\usepackage{amsmath}
\usepackage{mtpro2}
\begin{document}

\[
\begin{cases}
a_n=2 a_{n-1}+1, \quad \forall\,n\geq 2,\\
a_1=1.\\
\end{cases}
\]

\[
\begin{cases}
a_n=a_{n-1}+a_{n-2},\quad \forall\,n\geq 3,\\
a_1=1,\\
a_2=1,\\
\end{cases}
\]

\end{document}

在此处输入图片描述

这是加载字体的包中的错误还是可以从外部控制的错误?

我一直在看代码,但无法准确找到控制它的地方。

是否可以通过使用fontspec和避免包来以不同的方式处理此问题mtpro2

我知道问题/答案这里,而是处理不同的问题——而并非自动选择cases

答案1

首先是输出(下面的代码):

案例

简短回答

使用补丁mtpro2-patch.tex这是我多年来不断发展的(我的“无耻插件”)。

\documentclass{report}

\usepackage{amsmath}
\usepackage{mtpro2}

\input{mtpro2-patch}% https://github.com/RuixiZhang42/font-pairing-guide/blob/master/mtpro2-patch.tex

\begin{document}
Every \verb|cases| uses curly brace:
\[
\begin{cases}
a_n=2 a_{n-1}+1, \quad \forall\,n\geq 2,\\
a_1=1.\\
\end{cases}
\qquad
\begin{cases}
a_n=a_{n-1}+a_{n-2},\quad \forall\,n\geq 3,\\
a_1=1,\\
a_2=1,\\
\end{cases}
\]

\straightbraces
Now, every \verb|cases| uses straight brace:
\[
\begin{cases}
a_n=2 a_{n-1}+1, \quad \forall\,n\geq 2,\\
a_1=1.\\
\end{cases}
\qquad
\begin{cases}
a_n=a_{n-1}+a_{n-2},\quad \forall\,n\geq 3,\\
a_1=1,\\
a_2=1,\\
\end{cases}
\]

\end{document}

长答案

以下主要提供了一小部分的简要文档mtpro2-patch.tex

\documentclass{report}

\usepackage{amsmath}
\usepackage{mtpro2}

\makeatletter
% First, we need a test to see which braces are in force.
% The mtpro2 package provides 3 sets of braces. We treat
% curly braces as one type, while morphed and straight
% braces as another type.
\expandafter\def\csname mtp2@lcbrace\endcsname
  {\delimiter"4266308 }% define our own left curly brace
\newcommand*\@ifcurlybraces{%
  \expandafter\ifx\csname mtp2@lcbrace\endcsname\lbrace
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
% Next, we redefine the cases environment.
% If curly braces are in force, we use the \LEFTRIGHT construction.
% Otherwise, we use the \left...\right construction.
\newsavebox\mtp@matrix@cases
\renewenvironment{cases}{%
  \matrix@check\cases
  \setbox\mtp@matrix@cases\hbox\bgroup$%
  \let\@ifnextchar\new@ifnextchar
  \def\arraystretch{1.1}% less than 1000/\delimiterfactor, my personal preference
  \array{@{}l@{\quad}l@{}}%
}{%
  \endarray
  \m@th$\egroup
  \@ifcurlybraces{%
    \LEFTRIGHT@\lbrace.{\,\copy\mtp@matrix@cases}%
  }{%
    \left\lbrace\copy\mtp@matrix@cases\right.%
  }%
}
\makeatother

\begin{document}
Every \verb|cases| uses curly brace:
\[
\begin{cases}
a_n=2 a_{n-1}+1, \quad \forall\,n\geq 2,\\
a_1=1.\\
\end{cases}
\qquad
\begin{cases}
a_n=a_{n-1}+a_{n-2},\quad \forall\,n\geq 3,\\
a_1=1,\\
a_2=1,\\
\end{cases}
\]

\straightbraces
Now, every \verb|cases| uses straight brace:
\[
\begin{cases}
a_n=2 a_{n-1}+1, \quad \forall\,n\geq 2,\\
a_1=1.\\
\end{cases}
\qquad
\begin{cases}
a_n=a_{n-1}+a_{n-2},\quad \forall\,n\geq 3,\\
a_1=1,\\
a_2=1,\\
\end{cases}
\]

\end{document}

相关内容