我在下面的表格中没有使用\centering
或。\Centering
但如果我不插入,我就会收到错误\arraybackslash
。
问题:
- 这是
\arraybackslash
为了什么?对我来说这似乎太神秘了。 - 为什么我必须插入
\arraybackslash
下面代码片段中标记为 (3) 的位置?为什么必须将其放在 (3) 而不是 (1)、(2) 或 (4) 的位置?
\documentclass{minimal}
\usepackage[a4paper,margin=10mm,showframe]{geometry}
\usepackage{lipsum,calc,xcolor}
\usepackage{array,longtable}
\setlength{\tabcolsep}{5mm}
\setlength{\arrayrulewidth}{5mm}
\newcolumntype{A}[1]
{%
>{%
\begin{minipage}{#1\textwidth-1.5\arrayrulewidth-2\tabcolsep}%
\vspace{\tabcolsep}%
}%
c%
<{%
\vspace{\tabcolsep}%
\end{minipage}%
}%
}%
\begin{document}
\color{red}%
\begin{longtable}{%
|%
%>{\arraybackslash}%(1) => Not Needed
A{0.5}%
%<{\arraybackslash}%(2) => Not Needed
|%
>{\arraybackslash}% (3) => Mandatory!
A{0.5}%
%<{\arraybackslash}%(4) => Not Needed
|%
}%
\hline
\lipsum[1] & \lipsum[2]\\\hline
\lipsum[1] & \lipsum[2]\\\hline
\lipsum[1] & \lipsum[2]\\\hline
\end{longtable}
\end{document}
答案1
不要使用 minipage,它会进行大量重新定义。p 列也会这样做:
\documentclass{minimal}
\usepackage[a4paper,margin=10mm,showframe]{geometry}
\usepackage{lipsum,xcolor}
\usepackage{array,longtable}
\setlength\tabcolsep{5mm}
\setlength\arrayrulewidth{5mm}
\newcolumntype{A}[1]{>{\rule{0pt}{4ex}}p{\dimexpr#1\textwidth-1.5\arrayrulewidth-2\tabcolsep}%
<{\vspace{\tabcolsep}}}%
\begin{document}
\color{red}%
\begin{longtable}{|A{0.5}|A{0.5}|}\hline
\lipsum[1] & \lipsum[2]\\\hline
\lipsum[1] & \lipsum[2]\\\hline
\lipsum[1] & \lipsum[2]\\\hline
\end{longtable}
\end{document}
答案2
\arraybackslash
\\
将的定义重置为\tabularnewline
。
\let\\\tabularnewline
环境改变了(大概)minipage
的定义,所以重置了它。\\
\arraybackslash