我的方程式中的 { 的大小

我的方程式中的 { 的大小

方程

我写了一些代码来得到上述等式。但是,我想让第一个“{”与最后一个“}”的大小相同。有人知道怎么做吗?我在下面附上了我的代码

\begin{align}
\mathbf{Q}=\text{diag}&\left\{\text{diag}\left\{\underbrace{\mathbf{m}_1, \ \mathbf{m}_2,\ \ldots, \ \mathbf{m}_K}_{K}\right\}\right., \ \ldots\notag\\
&\quad \left.\underbrace{\ldots, \ \text{diag}\left\{\underbrace{\mathbf{m}_1, \ \mathbf{m}_2,\ \ldots, \ \mathbf{m}_K}_{K}\right\}}_{N_x}\right\}
\label{eq:Q}
\end{align}

答案1

这里,我编辑了第二行的\smash外部,并添加了与内部相同的大小。这样,高度就增加了。\underbrace\vphantom\underbrace\right\}\vphantom

请注意,由于外部\underbrace\smashed,您可能需要\vspace在等式后添加一个小的来弥补外部占用的空间\underbrace,如我的 MWE 所示。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
\mathbf{Q}=\text{diag}&\left\{\text{diag}\left\{\underbrace{\mathbf{m}_1, \ 
\mathbf{m}_2,\ \ldots, \ \mathbf{m}_K}_{K}\right\}\right., \ \ldots\notag\\
&\quad \left.\smash{\underbrace{\ldots, \ \text{diag}
\left\{\underbrace{\mathbf{m}_1, \ \mathbf{m}_2,\ \ldots, \ 
\mathbf{m}_K}_{K}\right\}}_{N_x}}\vphantom{\underbrace{m_1}_{N_x}}\right\}
\label{eq:Q}
\end{align}

\vspace{\baselineskip}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\end{document}

在此处输入图片描述


为了跟进 OP 的评论,如果希望内部诊断参数的括号更小,可以可以使用我在外部对角线上使用的相同技术。但是,在这种情况下,我想我会使用类似的东西\bigg\{ ... \bigg\},我在下面的 MWE 的第一行中显示,或者\big\{ ... \big\},我在第二行中显示。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
\mathbf{Q}=\text{diag}&\left\{\text{diag}\bigg\{\underbrace{\mathbf{m}_1, \ 
\mathbf{m}_2,\ \ldots, \ \mathbf{m}_K}_{K}\bigg\}\right., \ \ldots\notag\\
%
&\quad \left.\smash{\underbrace{\ldots, \ \text{diag}
\big\{\underbrace{\mathbf{m}_1, \ \mathbf{m}_2,\ \ldots, \ 
\mathbf{m}_K}_{K}\big\}}_{N_x}}\vphantom{\underbrace{m_1}_{N_x}}\right\}
\label{eq:Q}
\end{align}

\vspace{\baselineskip}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\end{document}

在此处输入图片描述

答案2

一种经典的 TeX 方法(之所以称之为“经典”,是因为 Knuth 的 TeXbook 明确提到了该方法)是重复第二行的内容,这导致\vphantom第一行宏中的右花括号过大。A \vphantom(“垂直幻影”)是一个不可见的对象,其高度与参数相同。在下面的代码中,我通过定义一个名为的辅助宏\bigblock(抱歉,创意不足)来简化您的设置,该宏使用了两次——第一次是\vphantom在第一行中作为的参数,然后在第二行中作为其自身。此外,我还定义了另一个辅助宏,名为,\smallblock它是 的重要组成部分(双关语)\bigblock

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\diag}{diag}
%% define to auxiliary macros: \smallblock and \bigblock
\newcommand\smallblock{\diag\left\{\underbrace{\mathbf{m}_1, \
     \mathbf{m}_2,\ \ldots, \ \mathbf{m}_K}_{K}\right\}}
\newcommand\bigblock{ \underbrace{\ldots, \ \smallblock}_{N_x} }

\begin{document}
\begin{align}
\mathbf{Q}=\diag
&\left\{ \vphantom{\bigblock} \smallblock \right., \ \ldots \notag\\
&\quad \left.\bigblock \right\} \label{eq:Q}
\end{align}
\end{document}

答案3

对于这个公式,您实际上不需要两行,并且该mathtools包允许定义一个\diag包含可变大小括号的命令。然后,您将得到一个在括号两侧\diag*添加隐式对的命令。非星号版本允许将、等作为可选参数,用于微调括号的大小。此外,您还会得到一个简化的代码。\left …\right\big\Big

如果你想将你的等式分成两行,有一个稍微不那么简单的代码,改编自文档中的代码mathtools

\documentclass[11pt,a4paper]{article}
\usepackage{mathtools} %

\usepackage[showframe]{geometry}
%
\DeclarePairedDelimiterXPP{\Diag }[1]{\mathrm{diag}}\{\}{}{#1}

\newcommand\MTkillspecial[1]{% helper macro
\bgroup
\catcode‘\&=9
\let\\\relax%
\scantokens{#1}%
\egroup
}

\DeclareMathOperator\diag{diag}
\DeclarePairedDelimiter\set\{\}
\reDeclarePairedDelimiterInnerWrapper\set{star}{
\mathopen{#1\vphantom{\MTkillspecial{#2}}\kern-\nulldelimiterspace\right.}
#2
\mathclose{\left.\kern-\nulldelimiterspace\vphantom{\MTkillspecial{#2}}#3}}

\begin{document}

\begin{align}
\mathbf{Q}&= \Diag[\bigg]{\Diag{\underbrace{\mathbf{m}_1, \mathbf{m}_2,\ \ldots, \mathbf{m}_K}_{K}}, \ \ldots
\underbrace{\ldots, \ \Diag{\underbrace{\mathbf{m}_1, \mathbf{m}_2,\ \ldots, \mathbf{m}_K}_{K}}}_{N_x}}
\label{eq:Q}
\end{align}

\begin{align}
\mathbf{Q}= \diag&\set[\bigg]{\Diag{\underbrace{\mathbf{m}_1, \mathbf{m}_2,\ \ldots, \mathbf{m}_K}_{K}}, \ \ldots \\[-1ex]
 & \quad\underbrace{\ldots, \ \diag\set{\underbrace{\mathbf{m}_1, \mathbf{m}_2,\ \ldots, \mathbf{m}_K}_{K}}}_{N_x}}
\label{eq:Q}
\end{align}

\end{document} 

在此处输入图片描述

相关内容