\PARENS{.....}
如果我使用带有mtpro2
(附件图中的绿色)的命令来获得完美的支撑曲线(圆括号)1(一个)问题:第一个等号的分数的第一行和第二行对齐,并且具有相同的粗细(您可以看到两个红色矩形)。
但是第三个分数(绿色)的线与前面的分数并不完全对齐(实际上两个分数在下面,第三个分数在上面),并且粗线与前面的红色分数不同。要使用命令创建一个具有两个等距括号的正确分数\PARENS{.....}
,使用包mtpro2
,我添加了matrix
命令\phantom{Z}
和\hspace{-.3cm}
(您可以看到绿色)。
是否有不同的想法或解决方案来获得完美对齐的分数,并(...)
使用与使用命令时相同的粗且完美的 PARENS(圆括号)\left(....\right)
?
\documentclass[12pt]{book}
\usepackage{times}
\usepackage[lite]{mtpro2}
\usepackage{classico}
\usepackage{mathtools}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{equation}
\begin{aligned}
\overline F =\frac{d\overline p}{dt}&=\\
&=\frac{m}{\sqrt{1-\dfrac{u^2}{c^2}}}\frac{d\overline u}{dt}+m\overline u\PARENS{\begin{matrix}\phantom{Z}&\\
\dfrac{1}{\sqrt{1-\dfrac{u^2}{c^2}}} \hspace{-.3cm}\end{matrix}}=\\
&=\frac{m}{\sqrt{1-\dfrac{u^2}{c^2}}}\,\overline a +\frac{\overline u}{c^2}\frac{d}{dt}\left(\dfrac{mc^2}{\sqrt{1-\dfrac{u^2}{c^2}}}\right)\\
\end{aligned}
\end{equation}
\end{document}
答案1
厚度看起来不同(可能是由于每个像素在屏幕上的呈现方式不同)。如果你把它们打印出来,应该没问题。
添加了解决方案 2(2019/04/04),应优先于解决方案 1。
解决方案 1:操纵内容的高度或深度
缺点(添加于 2019/04/04):这种方法有几个缺点,例如,
- 内容是明确设置的,但无论如何,
\displaystyle
这是原文所做的。\PARENS
- 内容中的所有空格(数学跳过)都被“冻结”,因此不能参与线的拉伸或收缩。
- 如果您有一个很长的公式,需要在分隔时将其分成两行,那么您必须手动插入适当的分隔符
\vphantom
以保证分隔符的大小相同。(注意:此解决方案仅处理\PARENS
,但可以轻松扩展到\LEFTRIGHT
可能出现所述问题的地方) - 它请求一个新的盒子登记册。
听起来很熟悉?几乎所有这些缺点都与 LaTeX 中“自动调整大小”的使用相同,这就是我提供第二种“手动调整大小”解决方案的原因。
该\PARENS
命令将其内容放在 中\vcenter
,因此它将忽略内容基线和周围基线的定位。我们可以使用一些低级框技巧使内容相对于数学轴对称,以便两个基线相同。新命令称为\symmPARENS
(由于没有更好的名称……请随意将其更改为,例如\myPARENS
)。(请注意,我还将其更改\overline
为\wbar
以获得更好看的重音。顺便说一句, 不应该是 u
速度 v
吗?)
\documentclass[12pt]{book}
\usepackage{mathtools} % Load this early
%\usepackage{times}
\usepackage{newtxtext} % This is better :)
\usepackage[lite]{mtpro2}
% Low-level hacks:
\makeatletter
\newsavebox\mtp@symm@box % The box to be made symmetric
% Command that adjusts the box:
\newcommand*\mtp@adjust@box[1]{%
\dimen@\dp#1%
\advance\dimen@\fontdimen22\textfont\tw@ % \dimen@ is the length from the math axis to the bottom
\dimen@ii\ht#1%
\advance\dimen@ii-\fontdimen22\textfont\tw@ % \dimen@ii is the length from the math axis to the top
\ifdim\dimen@>\dimen@ii % Box too deep
\advance\dimen@\fontdimen22\textfont\tw@
\ht#1\dimen@ % Make box higher
\else % Box too high
\advance\dimen@ii-\fontdimen22\textfont\tw@
\dp#1\dimen@ii % Make box deeper
\fi
}
% User level command:
\newcommand*\symmPARENS[1]{%
\setbox\mtp@symm@box\hbox{$\m@th\displaystyle#1$}% Put content in a box
\mtp@adjust@box\mtp@symm@box % Adjust the content box so baselines align
\PARENS{\copy\mtp@symm@box}% Send the box back to \PARENS
}
\makeatother
\begin{document}
\noindent
With \verb|\PARENS|, not so good:
\begin{equation}
\wbar{F} = \frac{d \wbar{p}}{dt}
= \frac{m}{\sqrt{1-\dfrac{u^2}{c^2}}} \frac{d \wbar{u}}{dt}
+ m \wbar{u} \PARENS{\dfrac{1}{\sqrt{1-\dfrac{u^2}{c^2}}}}
\end{equation}
With \verb|\symmPARENS|, centered, but not aesthetically pleasing:
\begin{equation}
\wbar{F} = \frac{d \wbar{p}}{dt}
= \frac{m}{\sqrt{1-\dfrac{u^2}{c^2}}} \frac{d \wbar{u}}{dt}
+ m \wbar{u} \symmPARENS{\dfrac{1}{\sqrt{1-\dfrac{u^2}{c^2}}}}
\end{equation}
Why not:
\begin{equation}
\wbar{F} = \frac{d \wbar{p}}{dt}
= \gamma m \frac{d \wbar{u}}{dt}
+ \gamma m \wbar{u},
\quad \text{where } \gamma = \dfrac{1}{\sqrt{1-\dfrac{u^2}{c^2}}}
\end{equation}
Please don't abuse \verb|\symmPARENS|:
\begin{equation}
\frac{1}{2} f(\xi) = \frac{1}{2} \symmPARENS{\frac{\displaystyle\int_a^b f(x) \, dx}{b-a}}
\text{ versus }
\frac{1}{2} f(\xi) = \frac{1}{2} \symmPARENS{\frac{1}{b-a} \displaystyle\int_a^b f(x) \, dx}
\end{equation}
\end{document}
不过,说真的,我只会写方程 (3)。
解决方案 2:创建\biggg
-variants 来访问单个分隔符 (2019/04/04)
缺点:无。(开玩笑)这在脚注或标题中效果不佳(谁会在这些地方写大公式?),但 或解决方案 1 都不是。\PARENS
这\LEFTRIGHT
是因为超大符号字体加载在固定大小,因此我们能做的不多。
这个想法基于\def\biggg{\bBigg@{3}}
、\def\Biggg{\bBigg@{3.5}}
等。但我们需要一些能够切换字体的东西。
研究 4 种可扩展字体mtpro2
:mt2exa
、、mt2exe
和mt2exf
,mt2exg
我发现括号、大括号、尖括号和斜线的显示大小如下:
| mt2exa | 1.2em | 1.8em | 2.4em | 3.0em |
| mt2exe | 3.6em | 4.2em | 4.8em | 5.4em | 6.0em | 6.6em | 7.2em (N/A) |
| mt2exf | 7.2em | 8.4em | 9.6em | 10.8em | 12.0em | 13.2em | 14.4em (N/A) |
| mt2exg | 14.4em | 16.8em | 19.2em | 21.6em | 24.0em | 26.4em | 28.8em |
下面的命令\mtp@bBigg@
有 3 个参数:#1
是字体、#2
是相对大小\big@size
、#3
是分隔符。有 2 个详细信息:
- 如果是 、 、 、 、 、 、 、 、 、、中任何一个,那么我们应该使用可能
#3
不同的字体。这可以通过 来实现。(
)
<
\langle
>
\rangle
/
\backslash
\{
\}
\lbrace
\rbrace
\lcbrace
\rcbrace
\specdelim@#3
- 但是,如果使用了
straightbraces
或选项,并且分隔符是、、、morphedbraces
中的任一个,则我们应该切换回并使用直拼合括号。\{
\}
\lbrace
\rbrace
mt2exa
要使用\mtp@bBigg@
,你
\makeatletter
\newcommand*\mtpbiggg{\mtp@bBigg@\MTEXE@{3}}
\newcommand*\mtpBiggg{\mtp@bBigg@\MTEXE@{3.5}}
...
\newcommand*\mtpbigggggg{\mtp@bBigg@\MTEXF@{6}}
\newcommand*\mtpBigggggg{\mtp@bBigg@\MTEXF@{7}}
...
% \MTEXE@ should be followed by 3 , 3.5 , 4 , 4.5 , 5 , 5.5
% \MTEXF@ should be followed by 6 , 7 , 8 , 9 , 10 , 11
% \MTEXG@ should be followed by 12 , 14 , 16 , 18 , 20 , 22 , 24
\makeatother
顺便说一句,或的\big@size
计算都是amsmath
mtpro2
可以说是错误的,所以我也提供了一个修复程序。
平均能量损失
\documentclass[12pt]{book}
\usepackage{mathtools,xcolor,newtxtext}
\usepackage[lite]{mtpro2}
\makeatletter
% Fix \big@size calculation
\addto@hook\every@math@size{%
\global\big@size6\fontdimen6\textfont\thr@@\relax
\global\divide\big@size by5\relax}
% \mtp@bBigg@: #1=font, #2=relative size, #3=delimiter
\newcommand*\mtp@bBigg@[3]{\leavevmode@ifvmode
{\hbox{\specdelim@#3%
\ifspecdelim@ % Switch font only for special delimiters
\textfont\thr@@=#1%
\ifnum
\ifx#3\{ 1\else\ifx#3\} 1\else
\ifx#3\lbrace 1\else\ifx#3\rbrace 1\else 0\fi\fi\fi\fi
=1 % But if the delimiter is any of \{, \}, \lbrace or \rbrace
\def\@tempa{\delimiter"4266308 }% We compare it with curly \lbrace
\ifx\lbrace\@tempa\else
\textfont\thr@@=\MTEXA@ % straight or morphed used, switch back to mt2exa
\fi
\fi
\fi
$\left#3\vcenter to#2\big@size{}\right.\n@space$}}}
% 6 mt2exe sizes:
\newcommand*\mtpbiggg{\mtp@bBigg@\MTEXE@\thr@@}
\newcommand*\mtpBiggg{\mtp@bBigg@\MTEXE@{3.5}}
\newcommand*\mtpbigggg{\mtp@bBigg@\MTEXE@4}
\newcommand*\mtpBigggg{\mtp@bBigg@\MTEXE@{4.5}}
\newcommand*\mtpbiggggg{\mtp@bBigg@\MTEXE@5}
\newcommand*\mtpBiggggg{\mtp@bBigg@\MTEXE@{5.5}}
% 2 mt2exf sizes (you get the idea):
\newcommand*\mtpbigggggg{\mtp@bBigg@\MTEXF@6}
\newcommand*\mtpBigggggg{\mtp@bBigg@\MTEXF@7}
\makeatother
% The corresponding l, m, r version:
\newcommand*\mtpbigggl{\mathopen\mtpbiggg}\newcommand*\mtpbigggm{\mathrel\mtpbiggg}\newcommand*\mtpbigggr{\mathclose\mtpbiggg}
\newcommand*\mtpBigggl{\mathopen\mtpBiggg}\newcommand*\mtpBigggm{\mathrel\mtpBiggg}\newcommand*\mtpBigggr{\mathclose\mtpBiggg}
\newcommand*\mtpbiggggl{\mathopen\mtpbigggg}\newcommand*\mtpbiggggm{\mathrel\mtpbigggg}\newcommand*\mtpbiggggr{\mathclose\mtpbigggg}
\newcommand*\mtpBiggggl{\mathopen\mtpBigggg}\newcommand*\mtpBiggggm{\mathrel\mtpBigggg}\newcommand*\mtpBiggggr{\mathclose\mtpBigggg}
\newcommand*\mtpbigggggl{\mathopen\mtpbiggggg}\newcommand*\mtpbigggggm{\mathrel\mtpbiggggg}\newcommand*\mtpbigggggr{\mathclose\mtpbiggggg}
\newcommand*\mtpBigggggl{\mathopen\mtpBiggggg}\newcommand*\mtpBigggggm{\mathrel\mtpBiggggg}\newcommand*\mtpBigggggr{\mathclose\mtpBiggggg}
\newcommand*\mtpbiggggggl{\mathopen\mtpbigggggg}\newcommand*\mtpbiggggggm{\mathrel\mtpbigggggg}\newcommand*\mtpbiggggggr{\mathclose\mtpbigggggg}
\newcommand*\mtpBiggggggl{\mathopen\mtpBigggggg}\newcommand*\mtpBiggggggm{\mathrel\mtpBigggggg}\newcommand*\mtpBiggggggr{\mathclose\mtpBigggggg}
% Visual check
\newcommand*\redline[1]{\vcenter{\color{red}\hrule height#1em width0.4pt}}
\newcommand*\test[2]{%
\frac{d \wbar{u}}{dt}%
#1%
\bigl#1\redline{1.2}\Bigl#1\redline{1.8}%
\biggl#1\redline{2.4}\Biggl#1\redline{3.0}%
\mtpbigggl#1\redline{3.6}\mtpBigggl#1\redline{4.2}%
\mtpbiggggl#1\redline{4.8}\mtpBiggggl#1\redline{5.4}%
\mtpbigggggl#1\redline{6.0}\mtpBigggggl#1\redline{6.6}%
\mtpbiggggggl#1\redline{7.2}\mtpBiggggggl#1\redline{8.4}%
\frac{1}{\sqrt{1-\dfrac{u^2}{c^2}}}%
\times
\frac{\displaystyle\int\limits_a^b f(x)\,h(x)\,dx + \sum_{i=1}^n y_i w_i}%
{\int\limits_a^b g(x)\,h(x)\,dx + \sum_{i=1}^n z_i w_i}%
\mtpBiggggggr#2%
}
\begin{document}
\[ \test() \]
% Uncomment to do the following tests:
%\[ \test\vert\Vert \]
%\[ \test\{> \]
%\[ \test/\backslash \]
\end{document}