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

실제로는 우아한 솔루션이 아닙니다. 기본적으로 필요한 것은 에서 생성된 추가 수직 공간을 \underbrace0으로 설정하는 것뿐입니다. 이를 위한 한 가지 쉬운 도구는 \raisebox첫 번째와 두 번째 입니다.선택 과목인수를 사용하면 결과 상자의 높이와 깊이를 명시적으로 지정할 수 있습니다.

두 가지 합병증:

  1. 그만큼안의배열이 수직 중앙에 나타나므로 구성의 높이와 깊이가 \underbrace흐릿합니다.
  2. 선 중 하나의 깊이가 0인 경우 일부 추가 수직 공간이 외부 배열에 삽입되므로 전체 박스 구성을 다시 낮추어야 합니다.

이는 다음과 같은 "해결책"으로 이어집니다.

\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].

관련 정보