如何缩短矩阵中的 \hline

如何缩短矩阵中的 \hline

我使用以下方式表示矩阵中的块\hline

\documentclass{article}
\usepackage{amsmath}
\begin{document}
  \begin{equation*}
    \begin{bmatrix}
      a & b\\
      \hline
      c & d
    \end{bmatrix}
  \end{equation*}
\end{document}
\endinput

示例图片

但是,对于文档生成的正常点大小(11pt),绘制的规则会跨越矩阵边界。(对于海报尺寸,情况并非如此。)

我怎样才能缩短两边的规则以避免发生这种情况,同时仍保留所提供的垂直间距\hline

答案1

环境bmatrix以及其他矩阵相关的环境在内部使用array,但在左分隔符之后和右分隔符之前进行备份。因此,制定的规则\hline提出了您面临的问题。

使用备份而不是用 删除两端的列间距存在技术原因@{}。有两种不同的解决方案;一种是使用booktabs,另一种是为带有规则分隔符的矩阵创建新环境。

我认为第一种方法更优雅。两种方法都要求您以某种方式指定列。

\documentclass{article}
\usepackage{amsmath}

\usepackage{booktabs} % required for the first solution

% this is for the second solution; the argument is the number of columns
\newenvironment{lbmatrix}[1]
  {\left[\array{@{}*{#1}{c}@{}}}
  {\endarray\right]}

\begin{document}
\begin{equation*}
\begin{bmatrix}
  a & b\\
  \cmidrule(lr){1-2}
  c & d
\end{bmatrix}
\end{equation*}
\begin{equation*}
\begin{lbmatrix}{2}
  a & b\\
  \hline
  c & d
\end{lbmatrix}
\end{equation*}
\end{document}

在此处输入图片描述

答案2

尝试切换到array,显然bmatrix环境不适合水平线(从我在其他论坛上看到的情况判断)。

如果您\begin{array}{@{}cc@{}}按照 daleif 的建议在 之间切换\begin{array}{cc},它将改变外观。

矩阵

\documentclass{article}
\usepackage{amsmath}
\begin{document}
    \[ \left[ \begin{array}{@{}cc@{}}
    a & b \\ \hline
    c & d
    \end{array} \right]
    %
    \left[ \begin{array}{cc}
    a & b \\ \hline
    c & d
    \end{array} \right]
    \]
\end{document}

答案3

与。{bNiceTabular}nicematrix

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\newcommand{\ShortHline}{\Hline[tikz={shorten < = 4pt, shorten > = 4pt}]}

$\begin{bNiceMatrix}
a & b \\ 
\ShortHline
c & d
\end{bNiceMatrix}$

\end{document}

上述代码的输出

相关内容