环境中的 ltablex 抛出 \end -error

环境中的 ltablex 抛出 \end -error

我想在环境中使用tabularx(包),但是出现错误(但它仍然可以正常构建)。ltablex

我使用ltablex,因为我想要一个longtable跨越多页且具有以下行为的页面tabularx(通过“X”让一列或多列自动调整大小)。

该示例是一个精简的最小版本,用于显示错误(对于这个简单的例子,我不会费心创建一个新的环境,真实的东西有更多的格式)。

\documentclass[a4paper]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{ltablex} % includes tabularx, but combined with longtables (spanning multiple pages)

\newenvironment{deftable}{
   \tabularx{\textwidth}{ |p{5cm}|X| }
}{
   \endtabularx
}

\begin{document}

\begin{deftable}
  cell & anothercell \\ \hline
  more cells & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren \\
\end{deftable}

\end{document}

我收到的错误是:

! LaTeX Error: \begin{deftable} on input line 13 ended by \end{tabularx}.

我认为tabularx处理器不会消耗\end{tabularx}放入堆栈的内容\endtabularx...但说真的,我知道 LaTeX 还不够好,无法找出解决方案。

答案1

\end{tabularx}如果我将(可能一开始就是错的)替换为 ,则不会出现任何错误\endtabularx\endgroup。 不保证这不会破坏其他任何东西。

\documentclass[a4paper]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{ltablex} % includes tabularx, but combined with longtables (spanning multiple pages)
\usepackage{etoolbox}
\makeatletter
% get rid of \par (there are two empty lines in the definition by ltablex)
\patchcmd{\TX@endtabularx}{\par}{}{}{}
\patchcmd{\TX@endtabularx}{\par}{}{}{}

\patchcmd{\TX@endtabularx}
  {\end{tabularx}}
  {\endtabularx\endgroup}
  {}{}
\makeatother

\newenvironment{deftable}{%
   \tabularx{\textwidth}{ |p{5cm}|X| }%
}{%
   \endtabularx
}

答案2

这是使用包的尝试environ。但我不确定它是否适用于您的复杂情况。值得一试。以下代码有效。

\documentclass[a4paper]{scrartcl}
\usepackage[margin=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{ltablex} % includes tabularx, but combined with longtables (spanning multiple pages)
\usepackage{environ}

\NewEnviron{deftable}{%
   \begin{tabularx}{\textwidth}{ |p{5cm}|X| }%
    \BODY
   \end{tabularx}
}

\begin{document}

\begin{deftable}
  cell & anothercell \\ \hline
  more cells & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren \\
\end{deftable}

\end{document}

在此处输入图片描述

相关内容