自定义高度的垂直虚线

自定义高度的垂直虚线

我的矩阵中需要一条垂直虚线,但我当前的解决方案看起来虚线超出了环境范围array(确实如此 - 我在 Photoshop 中检查过了)。我可以手动将其缩短 1 毫米或 0.5 毫米吗?

以下是 MWE:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{arydshln}
\usepackage{mathtools}
\begin{document}

\begin{equation*}
\setlength{\dashlinegap}{2pt}
\left[\begin{array}{cccc:c}
a_{11} & a_{12} & \cdots & a_{1n} & b_1 \\
a_{21} & a_{22} & \cdots & a_{2n} & b_2 \\
\vdots & \vdots & \ddots & \vdots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} & b_n
\end{array}
\right]
\end{equation*}

\end{document}

在此处输入图片描述

答案1

我觉得你在这里排版矩阵。请注意,提供amsmath矩阵环境(matrix、、等……),这样你就不需要在周围输入自己的分隔符。(你会想要。)pmatrixbmatrixarraybmatrix

要获取增广矩阵,请使用问题中的代码: 这个增广矩阵的宏如何工作?


编辑:为了方便起见,包含了代码。

\usepackage{arydshln}
\makeatletter
  \renewcommand*\env@matrix[1][*\c@MaxMatrixCols c]{%
    \hskip -\arraycolsep
    \let\@ifnextchar\new@ifnextchar
  \array{#1}}
\makeatother

将代码放在序言中。


然后,您可以使用与数组相同的语法,但最终会得到以下代码:

\begin{equation*}
\begin{bmatrix}[cccc:c]
a_{11} & a_{12} & \cdots & a_{1n} & b_1 \\
a_{21} & a_{22} & \cdots & a_{2n} & b_2 \\
\vdots & \vdots & \ddots & \vdots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} & b_n
\end{bmatrix}
\end{equation*}

编辑2:另一个有趣的链接: http://texblog.net/latex-archive/maths/amsmath-matrix/

答案2

一种可能性是从另一个角度来解决问题:不要缩短虚线,而是可以扩大分隔符:

\documentclass[a4paper]{article}
\usepackage{arydshln}
\usepackage{mathtools}

\begin{document}

\begin{equation*}
\delimitershortfall=0pt
\setlength{\dashlinegap}{2pt}
\left[\begin{array}{cccc:c}
a_{11} & a_{12} & \cdots & a_{1n} & b_1 \\
a_{21} & a_{22} & \cdots & a_{2n} & b_2 \\
\vdots & \vdots & \ddots & \vdots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn} & b_n
\end{array}
\right]
\end{equation*}

\end{document}

在此处输入图片描述

当然,还有使用(过度?)的解决方案\tikzmark;这能让你更好地控制微调:

\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{mathtools}

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

\begin{document}

\begin{equation*}
\left[\begin{array}{ccccc}
a_{11} & a_{12} & \cdots & a_{1n}\hfill\tikzmark{a} & b_1 \\
a_{21} & a_{22} & \cdots & a_{2n} & b_2 \\
\vdots & \vdots & \ddots & \vdots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}\hfill\tikzmark{b} & b_n
\end{array}
\right]
\end{equation*}

\tikz[remember picture,overlay]
  \draw[dashed,dash pattern={on 4pt off 2pt}] ([xshift=0.5\tabcolsep,yshift=7pt]a.north) -- ([xshift=0.5\tabcolsep,yshift=-2pt]b.south);

\end{document}

在此处输入图片描述

答案3

以下是您可以使用 做的{bNiceMatrix}事情nicematrix

该环境与经典环境类似{bmatrix}amsmath但在单元格、行和列下创建了 PGF/Tikz。

创建矩阵后,可以使用该节点绘制您想要的任何规则。

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

\begin{document}

$\begin{bNiceMatrix}
a_{11}  & a_{12} & \cdots & a_{1n} & b_1 \\
a_{21}  & a_{22} & \cdots & a_{2n} & b_2 \\
\vdots & \vdots & \ddots & \vdots & \vdots \\
a_{n1}  & a_{n2} & \cdots & a_{nn} & b_n
\CodeAfter 
  \tikz \draw [dashed,shorten > = 2pt, shorten < = 2pt] (1-|5) -- (last-|5) ;
\end{bNiceMatrix}$

\end{document}

您需要多次编译(因为nicematrix使用 PGF/tikz 节点)。

上述代码的输出

相关内容