我想写一个列宽相等的矩阵,并在矩阵上有一条垂直线。通过使用给出的解决方案这里和这里, 我有
\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
笔记:
- 该错误是由于处的
Missing $ inserted
单符号造成的。$
\end{pmatrix}$%
- 您可以
\resizebox{.9\hsize}{!}{%
在方程中使用(参见缩放公式以适合精确的页面宽度)。 - 我曾经
tabularx
定义一种新的 columntypeC
,它允许您使用来设置居中条目的宽度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}