在小矩阵环境中更改列分隔

在小矩阵环境中更改列分隔

如何在 smallmatrix 环境中更改列间空间的宽度?我找不到任何有关 smallmatrix 的详细文档。

数组环境有 setcolsep{..} 命令,但我找不到与 smallmatrix 类似的任何命令。

答案1

列间距是\thickspace;你可以做一个技巧

\newenvironment{xsmallmatrix}[1]
  {\renewcommand\thickspace{\kern#1}\smallmatrix}
  {\endsmallmatrix}

现在您可以自己决定分隔符是什么(默认为 .2777em):

\begin{xsmallmatrix}{.5em}
a & b\\
c & d
\end{smallmatrix}

如果你想要一个固定的不同空间,比如 .5em,定义

\newenvironment{xsmallmatrix}
  {\renewcommand\thickspace{\kern.5em}\smallmatrix}
  {\endsmallmatrix}

请注意,\thickspace在其他地方使用时,它可能发生在矩阵的一个小条目中(虽然可能性不大)。更强大的补丁可能是

\usepackage{etoolbox}
\patchcmd{\smallmatrix}{\thickspace}{\kern.5em}{}{}

从现在开始所有smallmatrix环境都将使用 .5em 作为列间距。

答案2

这是一份小文档,其中展示了 fur 的重新定义smallmatrix,支持分离的可选参数。该定义取自amsmath.sty,只是通过使用此参数而不是 进行了扩展\thickspace

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\renewenvironment{smallmatrix}[1][.2777em]{\null\,\vcenter\bgroup
  \Let@\restore@math@cr\default@tag
  \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip
  \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\kern#1\hfil
  $\m@th\scriptstyle##$\hfil\crcr
}{%
  \crcr\egroup\egroup\,%
}
\makeatother
\begin{document}
\[
  \begin{smallmatrix}
    a & b\\
    c & d
  \end{smallmatrix}
  \quad
  \begin{smallmatrix}[8pt]
    a & b\\
    c & d
  \end{smallmatrix}
\]
\end{document}

它使用内部宏,就像原始定义一样,这可能会改变。虽然 egreg 展示了一种解决方法和补丁,但这应该展示从原始源代码开始的直接重新定义。

相关内容