相等矩阵列宽并绘制垂直线

相等矩阵列宽并绘制垂直线

我想写一个列宽相等的矩阵,并在矩阵上有一条垂直线。通过使用给出的解决方案这里这里, 我有

\documentclass{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{graphicx}

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

\begin{document}

\resizebox{\linewidth}{!}{%
\begin{equation}
\begin{pmatrix}[cc|cc]
 C1 & Column2 & C3 & C4 \\ \hline
 C5 & C6 & C7 & Column8
\end{pmatrix}$%
\end{equation}
}

\end{document}

输出矩阵的列宽不相等,导致出现错误Missing $ inserted。如何解决此问题?

答案1

笔记:

  1. 该错误是由于处的Missing $ inserted单符号造成的。$\end{pmatrix}$%
  2. 您可以\resizebox{.9\hsize}{!}{%在方程中使用(参见缩放公式以适合精确的页面宽度)。
  3. 我曾经tabularx定义一种新的 columntype C,它允许您使用来设置居中条目的宽度C{<width>}

代码:

\documentclass{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{graphicx}

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

\usepackage{tabularx}
\newcolumntype{C}[1]{>{\hspace{0pt}\centering\arraybackslash}p{#1}}

\begin{document}

\begin{equation}
    \resizebox{.9\hsize}{!}{\ensuremath{
        \begin{pmatrix}[*2{C{15mm}}|*2{C{15mm}}]
            C1 & Column2 & C3 & C4 \\ \hline
            C5 & C6 & C7 & Column8
        \end{pmatrix}%
    }}
\end{equation}

\end{document}

结果:

在此处输入图片描述

答案2

  • 在你的姆韦你有多余$pmatrix
  • pmatrix我宁愿使用标准环境而不是 hackedarray环境(参见水平线处的区别)

\documentclass{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{graphicx}

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

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{document}

your solution (corrected and without \verb+\resizebox+):
\begin{equation}
\begin{pmatrix}[cc|cc]
 C1 & Column2 & C3 & C4 \\ \hline
 C5 & C6 & C7 & Column8
\end{pmatrix}%
\end{equation}

with proposed use of \verb+array+:
\begin{equation}\setlength\arraycolsep{1.5pt}
\left(\begin{array}{C{4em}C{4em}|C{4em}C{4em}}
 C1 & Column2 & C3 & C4 \\ \hline
 C5 & C6 & C7 & Column8
\end{array}\right)%
\end{equation}

\end{document}

在此处输入图片描述

答案3

环境{pNiceMatrix}nicematrix一个键columns-width=auto,它指定所有列必须具有相同的宽度。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[\begin{pNiceArray}{cc|cc}[columns-width=auto,margin]
 C1 & Column2 & C3 & C4 \\ \hline
 C5 & C6 & C7 & Column8
\end{pNiceArray}\]

\end{document}

上述代码的输出

相关内容