我使用以下方式表示矩阵中的块\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}