如何讓 LaTeX 忽略支架的高度?

如何讓 LaTeX 忽略支架的高度?

我創造了這個矩陣:

在此輸入影像描述

使用這個 LaTeX 程式碼:

\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\setlength\PreviewBorder{2mm}

\usepackage{amsmath,array}
\renewcommand\arraycolsep{4pt} % default value: 6pt


\begin{document}
\begin{preview}
\begin{equation*}
\left( \,
\begin{array}{r@{}r@{}r r r}  % @{} is used twice to suppress intercolumn whitespace
  \overbrace{
    \boxed{
      \begin{array}{rrr}    % First block (1)
        1 &        &   \\
          & \ddots &   \\
          &        & 1 \\
      \end{array}
    }
  }^{r_+(s)-mal} \\
  & 
  \underbrace{
    \boxed{
      \begin{array}{rrr}    % Second block (-1)
        -1 &        &   \\
           & \ddots &   \\
           &        & -1\\
      \end{array}
    }
  }_{r_{-}(s)-mal} \\
  & & 
  \underbrace{
    \boxed{
      \begin{array}{rrr}    % Third block
        0  &        &  \\
           & \ddots &  \\
           &        & 0\\
      \end{array}
    }
  }_{r_0(s)-mal} \\
\end{array}\,\right)
\end{equation*}
\end{preview}
\end{document}

您可以看到,下括號使第三個區塊看起來比沒有下括號的第二個區塊稍低。但我不希望第三塊顯得更低。

如何讓 LaTeX 忽略第二個下括號的高度?

如果我可以製作對角括號並移除塊,那就更好了。但我想那很複雜。

答案1

TikZ使用對角括號的解:

\documentclass{article}
\usepackage{amsmath,array}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}

\setlength\arraycolsep{4pt} % default value: 6pt

\newcommand\tikzmark[1]{%
  \tikz[overlay,remember picture,baseline] \coordinate [anchor=base] (#1);}

\newcommand\DrawBrace[3]{%
  \draw [decorate,decoration={brace,amplitude=2pt,mirror,raise=2pt}]
    (#1) -- (#2) node [black,midway,sloped,yshift=-10pt] {\footnotesize$#3$};
}

\begin{document}

\begin{equation*}
\left(
\begin{array}{*{9}{c}}
\tikzmark{a}\phantom{-}1 \\
& \ddots & \\
& & \tikzmark{b}\phantom{-}1 \\
& & & \tikzmark{c}-1 \\
& & & & \ddots & \\
& & & & & \tikzmark{d}-1\\
& & & & & & \tikzmark{e}\phantom{-}0 \\
& & & & & & & \ddots & \\
& & & & & & & & \tikzmark{f}\phantom{-}0 \\
\end{array}
\right)
\end{equation*}

\begin{tikzpicture}[remember picture,overlay]
\DrawBrace{a}{b}{r_{+}(s)-mal}
\DrawBrace{c}{d}{r_{-}(s)-mal}
\DrawBrace{e}{f}{r_{0}(s)-mal}
\end{tikzpicture}
\end{document}

在此輸入影像描述

答案2

這並不是一個優雅的解決方案。基本上,所需要做的就是將 產生的附加垂直空間設為\underbrace零。一個簡單的工具是\raisebox第一個和第二個選修的參數允許為結果框給出明確的高度和深度。

兩個併發症:

  1. 數組垂直居中,因此\underbrace構造的高度和深度是模糊的。
  2. 如果其中一條線的深度為零,則在外部陣列中插入一些額外的垂直空間,因此必須再次降低整個盒裝結構。

這導致了這個“解決方案”:

\begin{equation*}
\left( \,
\begin{array}{r@{}r@{}r r r}  % @{} is used twice to suppress intercolumn whitespace
  \overbrace{
    \boxed{
      \begin{array}{rrr}    % First block (1)
        1 &        &   \\
          & \ddots &   \\
          &        & 1 \\
      \end{array}
    }
  }^{r_+(s)-mal} \\
  & 
  \raisebox{-.5\height}[.5\height][.5\height]
  {%
    $\underbrace{
      \raisebox{\depth}
      {%
        $\boxed{
          \begin{array}{rrr}    % Second block (-1)
            -1 &        &   \\
            & \ddots &   \\
            &        & -1\\
          \end{array}
        }$%
      }%
    }_{r_{-}(s)-mal}$%
  }%
  \\
  & & 
  \underbrace{
    \boxed{
      \begin{array}{rrr}    % Third block
        0  &        &  \\
           & \ddots &  \\
           &        & 0\\
      \end{array}
    }
  }_{r_0(s)-mal} \\
\end{array}\,\right)
\end{equation*}

例子

答案3

一定有tikzmark辦法的。但我現在沒有時間。同時,一個醜陋的駭客將是手動縮小空間,\\[length]如下所示

\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\setlength\PreviewBorder{2mm}

\usepackage{amsmath,array}
\renewcommand\arraycolsep{4pt} % default value: 6pt


\begin{document}
\begin{preview}
\begin{equation*}
\left( \,
\begin{array}{r@{}r@{}r r r}  % @{} is used twice to suppress intercolumn whitespace
  \overbrace{
    \boxed{
      \begin{array}{rrr}    % First block (1)
        1 &        &   \\
          & \ddots &   \\
          &        & 1 \\
      \end{array}
    }
  }^{r_+(s)-mal} \\
  &
  \underbrace{
    \boxed{
      \begin{array}{rrr}    % Second block (-1)
        -1 &        &   \\
           & \ddots &   \\
           &        & -1\\
      \end{array}
    }
  }_{r_{-}(s)-mal} \\[-17pt]         %%% <--Here
  & &
  \underbrace{
    \boxed{
      \begin{array}{rrr}    % Third block
        0  &        &  \\
           & \ddots &  \\
           &        & 0\\
      \end{array}
    }
  }_{r_0(s)-mal} \\
\end{array}\,\right)
\end{equation*}
\end{preview}
\end{document}

在此輸入影像描述

不過,不需要花太多時間來估計 的適當值\\[-17pt]

相關內容