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}