我没有使用 \centering,但为什么我必须在我的表中使用 \arraybackslash?

我没有使用 \centering,但为什么我必须在我的表中使用 \arraybackslash?

我在下面的表格中没有使用\centering或。\Centering

替代文本

但如果我不插入,我就会收到错误\arraybackslash

问题:

  1. 这是\arraybackslash为了什么?对我来说这似乎太神秘了。
  2. 为什么我必须插入\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

相关内容