kbordermatrix 和 arydshln 之间的冲突

kbordermatrix 和 arydshln 之间的冲突

当我包括时arydshln,我得到了冲突kbordermatrix(来自这里):

\documentclass{article}
\usepackage{amsmath}
\usepackage{arydshln}
\usepackage{kbordermatrix}

\begin{document}

\begin{align}
\kbordermatrix{ &1 & 2 & 3\\ 
               a&b & c & d}
\end{align}

\end{document}

\adl@@cr ...tempdima \xdef \adl@rowsL {\adl@rowsL 
                                                  (\adl@colsL /\number \adl@...
l.11 \end{align}

我怎样才能使用这两个包而不发生冲突?

答案1

如果您不需要在里面使用虚线kbordermatrix,您可以获得与blockarray环境相同的结果——以一种不太简单的方式(但您可以定义新的命令/环境),并且arydshln 只要您不在块数组内使用,它就兼容。

因此我建议使用此代码作为解决方法:

\documentclass{article}
\usepackage{amsmath}
\usepackage{kbordermatrix}
\usepackage{array, blkarray} %

\usepackage{arydshln}

\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}

\begin{align}
\begin{blockarray}{*{3}{>{\scriptstyle}c}}
 1 & 2 & 3\\
\begin{block}{\Left{$ \scriptstyle a $\enspace }{[\enspace}ccc\Right{. \enspace]}{}}
 b & c & d\\
\end{block}
\end{blockarray}
\end{align}

\begin{align}
\begin{array}{$c*{3}{^c}}
\rowstyle{\scriptstyle} & 1 & 2 & 3\\
 \hdashline
\scriptstyle a & b & c & d 
\end{array}
\end{align}

\end{document} 

在此处输入图片描述

答案2

arydshln如果您需要和的功能kbordermatrix,我建议您使用nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{pNiceArray}{cc:cc}[first-row,first-col,last-row,last-col]
    & C_1 & C_2 & C_3 & C_4 \\
L_1 & 0   & 1   & 2   & 3   & L_1 \\
L_2 & 4   & 5   & 6   & 7   & L_2 \\
\hdottedline 
L_3 & 8   & 9   & 10  & 11  & L_3 \\
L_4 & 12  & 13  & 14  & 15  & L_4 \\
    & C_1 & C_2 & C_3 & C_4 
\end{pNiceArray}$

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

第一个代码的输出

上述代码已创建了虚线规则(带有圆点)。如果您更喜欢虚线规则,则只需加载 TikZ 并使用dashedTikZ 的样式即可。

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

\begin{document}

$\begin{pNiceArray}{cc|[tikz=dashed]cc}[first-row,first-col,last-row,last-col,margin=1pt]
    & C_1 & C_2 & C_3 & C_4 \\
L_1 & 0   & 1   & 2   & 3   & L_1 \\
L_2 & 4   & 5   & 6   & 7   & L_2 \\
\Hline[tikz=dashed]
L_3 & 8   & 9   & 10  & 11  & L_3 \\
L_4 & 12  & 13  & 14  & 15  & L_4 \\
    & C_1 & C_2 & C_3 & C_4 
\end{pNiceArray}$

\end{document}

第二段代码的输出

答案3

arydshln使用和存在问题\kbordermatrix。此外,您需要\kbordermatrix在等式中使用 (根据相关文档来自加州理工学院)。话虽如此,它并不否认这些包之间的冲突。你可以尝试easybmat 包代替芳基化物在某些情况下。

相关内容