如何在矩阵中创建垂直和水平虚线?

如何在矩阵中创建垂直和水平虚线?

如同这个问题,我试图输出一个用虚线而不是虚线的类似矩阵。

在此处输入图片描述

  1. 有什么办法可以做到这一点吗?

  2. 我也尝试使用这三个包:

    \usepackage{tabularx}
    \usepackage{longtable}
    \usepackage{arydshln}
    
  3. 我也想学习如何实现这一点\documentclass{revtex4},除了使用\documentclass{文章}据我们所知,据我尝试,arydshln 可能与 revtex4 或 revtex4-1 不兼容。

我遇到了类似这篇文章的问题。我在 ;arydshln后面添加了tabularx,但它无法成功编译,而只输出错误。有人可以提供任何提示或解决方案吗?

答案不必完整。谢谢您的帮助!!!

答案1

由于revtex4似乎与arydshln包不兼容,这里有一个使用 TikZ 的选项:

\documentclass[aps,prl,twocolumn,nofootinbib,superscriptaddress,floatfix]{revtex4}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\[
\Biggl(\mkern-5mu
\begin{tikzpicture}[baseline=-.65ex]
\matrix[
  matrix of math nodes,
  column sep=1ex,
] (m)
{
B & C \\
D & E \\
};
\draw[dotted]
  ([xshift=0.5ex]m-1-1.north east) -- ([xshift=0.5ex]m-2-1.south east);
\draw[dotted]
  (m-1-1.south west) -- (m-1-2.south east);
\node[above,text depth=1pt] at (m-1-1.north) {$\scriptstyle r$};  
\node[above,text depth=1pt] at (m-1-2.north) {$\scriptstyle n-r$};
\node[left,overlay] at ([xshift=-1.2ex]m-1-1.west) {$\scriptstyle r$};
\node[left,overlay] at ([xshift=-1.2ex]m-2-1.west) {$\scriptstyle n-r$};
\end{tikzpicture}\mkern-5mu
\Biggr)
\]

\end{document}

在此处输入图片描述

答案2

\hdashline您可以通过修改长度\dashlinedash和来调整破折号和间隙\dashlinegap

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}
\usepackage{arydshln,leftidx,mathtools}

\setlength{\dashlinedash}{.4pt}
\setlength{\dashlinegap}{.8pt}

\begin{document}
\[
  \leftidx{_{m-r}^{\phantom{m-r}\llap{$\scriptstyle r$}}}{\left( \begin{array}{c:c}
    \smash{\overset{r}{B}} & \mathclap{\smash{\overset{n-r}{C}}} \\
    \hdashline
    D & E
  \end{array} \right)}{}
\]

\noindent
\begin{tabularx}{\linewidth}{X:X}
  \hdashline
  ABC & DEF \\
  \hdashline
\end{tabularx}
\end{document}

两种长度的默认值均为4pt

答案3

这使用了一种堆叠方法。这个答案帮助我思考如何将虚线/虚线自动化为堆叠的一部分,而在这个 MWE 中,这必须非常手动地完成。

\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\usepackage{graphicx}
\stackMath
% DASHED LINE OF SPECIFIED LENGTH
% From morsburg at http://tex.stackexchange.com/questions/12537/
% how-can-i-make-a-horizontal-dashed-line/12553#12553
\def\dashfill{\cleaders\hbox to .5em{\rule{.4ex}{.4pt}}\hfill}
\newcommand\dashline[1]{\hbox to #1{\dashfill\hfil}}
\newlength\tmplen
\begin{document}
\[
\strutshortanchors{F}\def\stackalignment{r}\setstackgap{S}{5pt}
\stackanchor[15pt]{{}^r}{{}_{m-r}}
\def\stackalignment{c}
\stackon[1pt]{
  \left(\raisebox{2pt}{%
  \savestack{\num}{$~B~\,$}\tmplen=\wd\numcontent\relax%
  \stackunder{\stackon{\dashline{\tmplen}}{\num}}{D\;}%
  \rotatebox{90}{\kern-1.1\baselineskip\dashline{2.5\baselineskip}}%
  \savestack{\num}{$\,~C~$}\tmplen=\wd\numcontent\relax%
  \stackunder{\stackon{\dashline{\tmplen}}{\num}}{\,E}}%
  \right)
}{%
  ~~{}_r~\,~_{n-r}%
}
\]
\end{document}

在此处输入图片描述

答案4

该软件包nicematrix具有直接执行该操作的功能。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\NiceMatrixOptions{code-for-first-row = \scriptstyle,code-for-first-col = \scriptstyle }

$A = \begin{pNiceArray}{c:c}[first-row, first-col, columns-width=auto]
    & r & n-r \\
r   & B & C \\
\hdottedline
m-r & D & E 
\end{pNiceArray}$

\end{document}

上述代码的输出

相关内容