vNiceArray 中的水平线太宽

vNiceArray 中的水平线太宽

我正在使用 vNiceArray 来排版块行列式。

当您使用 nicematrix 包创建 vNiceArray 时,水平线太长,以至于超出了垂直线,这看起来不太好(它还使生成的行列式看起来更像表格而不是行列式,这可能会造成混淆)。我不确定哪种解决方案更好,但我认为水平线不应接触侧面的垂直线。

这个问题能轻松解决吗?或者有更好的方法来实现这个结果?

梅威瑟:

\documentclass{article}
\usepackage{nicematrix}
\begin{document}
  \[
    \begin{vNiceArray}{c|c}
            0&0\\
            \hline
            0&0
        \end{vNiceArray}
  \]
\end{document}

答案1

您可以使用键在两侧添加空间margin

\documentclass{article}
\usepackage{nicematrix}
\begin{document}
  \[
    \begin{vNiceArray}{c|c}[margin]
            0&0\\
            \hline
            0&0
    \end{vNiceArray}
  \]
\end{document}

第一个代码的输出

如果你想要\hline更短的,你可以在 中使用 Tikz 来绘制它\CodeAfter

\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
  \[
    \begin{vNiceArray}{c|c}
            0&0\\
            0&0
    \CodeAfter
      \tikz \draw [shorten > = 0.5em, shorten < = 0.5em](2-|1) -- (2-|last) ;
    \end{vNiceArray}
  \]
\end{document}

输出第二个代码

您还可以创建自己的命令\MyHline

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

\ExplSyntaxOn
\NewExpandableDocumentCommand \MyHline { }
  { 
    \noalign 
      { 
        \skip_vertical:N \arrayrulewidth 
        \tl_gset:Nx \g_nicematrix_code_after_tl 
          { \__tomasz_MyHline:n { \int_eval:n { \int_use:c { c@iRow } + 1 } } } 
      }
  }
\cs_new_protected:Nn \__tomasz_MyHline:n
  { \tikz \draw [shorten~> = 0.5em, shorten~< = 0.5em](#1-|1) -- (#1-|last) ; }
\ExplSyntaxOff
  
\begin{document}
  \[
    \begin{vNiceArray}{c|c}
            0&0\\ \MyHline 
            0&0
    \end{vNiceArray}
  \]
\end{document}

第三个代码的输出

相关内容