如何改变矩阵中水平线的垂直位置?

如何改变矩阵中水平线的垂直位置?

我需要调整矩阵内水平线的垂直位置。以下是可用的 MWE 代码:

\documentclass[11pt,letterpaper,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}

\begin{document}

    \begin{equation}
        R = \left[ \begin{array}{ccc|ccc}
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        \hline
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C
    \end{array} \right]\!.
    \end{equation}

\end{document}

预览:

在此处输入图片描述

我不希望这条线在与垂直线相交处产生任何间隙,我需要保持\\[2ex]矩阵中每个元素之间的垂直间距。那么,如何才能在不改变矩阵其余部分的情况下向上移动水平线呢?

答案1

用一个技巧

\documentclass[11p]{book}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}
    \begin{equation}
        R = \left[ \begin{array}{ccc|ccc}
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[.65ex]
        \hline
        \rule[0pt]{2pt}{\heightof{A}+1ex}A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C
    \end{array} \right]
    \end{equation}
\end{document}

替换\rule[0pt]{2pt}{\heightof{A}+1ex}\rule[0pt]{0pt}{\heightof{A}+1ex}。另外,[.65ex]当使用该选项时,通过获取矩阵中的行间值,肯定可以以更好的方式计算\\[0ex]。我不知道这个值。

在此处输入图片描述

为了精确控制,你可以使用

\documentclass[11p]{book}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{mathtools}
\begin{document}
    \begin{equation}%
    \renewcommand{\arraystretch}{0}%
        R = \left[ \begin{array}{ccc|ccc}
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[1ex]
        \hline
        \rule[0pt]{2pt}{\heightof{A}+1ex}%
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C \\[2ex]
        A & B & C & A & B &C
    \end{array} \right]
    \end{equation}

答案2

另一种可能性是cellspace

\documentclass[11pt, letterpaper, twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{amsfonts}
\usepackage{mathtools}

\usepackage[math]{cellspace}
\setlength{\cellspacetoplimit}{1.6ex}
\setlength{\cellspacebottomlimit}{1.6ex}

\begin{document}

\begin{equation}
    R = \left[ \begin{array}{ccc|>{$}Sc<{$}cc}
    \multicolumn{6}{c} {}\\
    \noalign{\vspace{-3.2ex}}
    A & B & C & A & B &C \\
    A & B & C & A & B &C \\
    A & B & C & A & B &C \\
    \hline
    A & B & C & A & B &C \\
    A & B & C & A & B &C \\
    A & B & C & A & B &C \\[-0.6ex]
\end{array} \right]. 
\end{equation}

\end{document} 

在此处输入图片描述

答案3

我认为可以使用nicematrix包快速创建此代码。这里我使用array环境添加了我的简陋版本。

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}

\begin{document}
$\left(\begin{array}{@{}c|c@{}}
  \begin{matrix}
  A & B & C\\
  A & B & C\\
  A & B & C
  \end{matrix}
  & \begin{matrix}
  A & B & C\\
  A & B & C\\
  A & B & C
  \end{matrix} \\
\hline
  \begin{matrix}
  A & B & C\\
  A & B & C\\
  A & B & C
  \end{matrix}&
  \begin{matrix}
  A & B & C\\
  A & B & C\\
  A & B & C
  \end{matrix}
\end{array}\right)$
\end{document}

在此处输入图片描述

或者这个具有矩阵垂直空间的简单解决方案[.3cm]

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}

\begin{document}
$R=\left(\begin{array}{@{}c|c@{}}
  \begin{matrix}
  A & B & C\\[.3cm]
  A & B & C\\[.3cm]
  A & B & C
  \end{matrix}
  & \begin{matrix}
  A & B & C\\[.3cm]
  A & B & C\\[.3cm]
  A & B & C
  \end{matrix}\\[.1cm] \\[-.1cm]
\hline\\
  \begin{matrix}
  A & B & C\\[.3cm]
  A & B & C\\[.3cm]
  A & B & C
  \end{matrix}&
  \begin{matrix}
  A & B & C\\[.3cm]
  A & B & C\\[.3cm]
  A & B & C
  \end{matrix}
\end{array}\right).$
\end{document}

在此处输入图片描述

答案4

{bNiceMatrix}的环境与的nicematrix经典环境类似,但在用户可访问的数组下创建 PGF/Tikz 节点。{bmatrix}amsmath

在这里我使用这些节点和 Tikz 来绘制垂直规则(未断开)和水平规则(带有yshift)。

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

\begin{document}

\begin{equation}
R = \begin{bNiceMatrix}[margin]
A & B & C & A & B &C \\[2ex]
A & B & C & A & B &C \\[2ex]
A & B & C & A & B &C \\[2ex]
A & B & C & A & B &C \\[2ex]
A & B & C & A & B &C \\[2ex]
A & B & C & A & B &C
\CodeAfter
\tikz \draw (1-|4) -- (7-|4) 
            ([yshift=4pt]4-|1) -- ([yshift=4pt]4-|7) ;
\end{bNiceMatrix}
\end{equation}

\end{document}

备注:您需要两次编译。

上述代码的输出

但是,在这种情况下,似乎使用 键cell-space-limitsnicematrix可以完成工作(无需使用 Tikz)。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{equation}
R = \begin{bNiceArray}{ccc|ccc}[margin,cell-space-limits=6pt]
A & B & C & A & B &C \\
A & B & C & A & B &C \\
A & B & C & A & B &C \\
\hline
A & B & C & A & B &C \\
A & B & C & A & B &C \\
A & B & C & A & B &C
\end{bNiceArray}
\end{equation}

\end{document}

第二段代码的结果

相关内容