LaTeX 无法识别在 \newcommand 中找到的 \end

LaTeX 无法识别在 \newcommand 中找到的 \end

我正在尝试使用 \newcommand 开始和结束表格。我想切换到使用\EndTableSetupFourColumns(因为它可以消除几个警告,并且更容易让其他读者理解),但出于某种原因,LaTeX 似乎无法识别\end{tabu}其中的 found,所以我必须手动插入它,如下所示。

这个问题似乎仅限于 tabu - 当我使用 tabulars 时,我没有遇到这个问题。我查看了 tabu 文档,没有发现任何表明这不起作用的内容。

看着\newcommand 中的 \end{tabu}表明它不起作用,但是,如果没有别的办法,我想解决这个问题以提高代码的可读性。

梅威瑟:

\documentclass{article}

\usepackage[table]{xcolor}
\usepackage{longtable,tabu}

\newcommand{\TableSetupFourColumns}{%
\rowcolors{2}{gray!25}{white}
\begin{tabu} to \textwidth {lccX}
    \rowcolor{gray!50}}

\newcommand{\EndTableSetupFourColumns}{%
\end{tabu}}

\begin{document}

\section{Test 1}
This is text.\par \noindent
\TableSetupFourColumns
    Test            & test  & test  & test\\
\end{tabu}
%\EndTableSetupFourColumns

\end{document}

答案1

tabu需要“看到” \end{tabu};它不能隐藏在宏中。最好定义一个新环境:

\documentclass{article}

\usepackage[table]{xcolor}
\usepackage{longtable,tabu}

\newenvironment{tabu4}
  {\rowcolors{2}{gray!25}{white}
   \begin{tabu} to \textwidth {lccX}
   \rowcolor{gray!50}}
  {\end{tabu}}

\begin{document}

\section{Test 1}
This is text.

\medskip

\noindent
\begin{tabu4}
    Test            & test  & test  & test\\
    Test            & test  & test  & test\\
    Test            & test  & test  & test\\
    Test            & test  & test  & test\\
    Test            & test  & test  & test\\
    Test            & test  & test  & test\\
\end{tabu4}

\end{document}

在此处输入图片描述

相关内容