我正在尝试ltablex
使用以下基于的代码来工作这个答案:
\documentclass{article}
\usepackage{ltablex}
\usepackage{blindtext}
\keepXColumns
\newenvironment{test}
{%
\tabularx{\textwidth}{lX}
}
{%
\endtabularx
}
\begin{document}
\begin{test}
row 1 & \blindtext[2] \\
row 2 & \blindtext \\
row 3 & \blindtext[2] \\
\end{test}
\end{document}
不幸的是,抛出了以下错误:
!LaTeX 错误:\begin{test} 在输入第 16 行以 \end{tabularx} 结束。
请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。...
l.20 \end{测试}
我该如何修复这个问题才能获得跨越多页的表格和X
列类型?
答案1
不知道为什么测试不起作用(可能需要@DavidCarlisle 来解释)。这是一个可行的替代方案,使用environ
\documentclass{article}
\usepackage{ltablex}
\usepackage{blindtext,environ}
\keepXColumns
% \newenvironment{test}
% {%
% \begin{tabularx}{\textwidth}{lX}
% }
% {%
% \end{tabularx}
% }
\NewEnviron{test}{
\begin{tabularx}{\textwidth}{lX}
\BODY
\end{tabularx}
}
\begin{document}
\begin{test}
row 1 & \blindtext[2] \\
row 2 & \blindtext \\
row 3 & \blindtext[2] \\
\end{test}
\end{document}
答案2
您可以尝试重新插入 tabularx 用于测试此类内部的代码\endtabularx
。它适用于您的示例,但我没有尝试真正理解代码,因此不知道两个补丁是否都是必要的(它也仅适用于第二个补丁)以及它是否会破坏其他内容。
\documentclass{article}
\usepackage{ltablex}
\usepackage{blindtext}
\keepXColumns
\usepackage{etoolbox}
\makeatletter
\pretocmd\TX@endtabularx{%
\expandafter\expandafter\expandafter
\TX@find@endtabularxa\csname end\TX@\endcsname
\endtabularx\TX@\endtabularx\TX@find@endtabularxa
}{}{\fail}
\patchcmd\TX@endtabularx{\end{tabularx}}{%
\expandafter\expandafter\expandafter
\TX@find@endtabularxbb
\expandafter\end\expandafter{\TX@}%
\endtabularx\TX@\endtabularx\TX@find@endtabularxb
}{}{\fail}
\makeatother
\newenvironment{test}
{%
\tabularx{\textwidth}{lX}
}
{%
\endtabularx
}
\begin{document}
\begin{test}
row 1 & \blindtext[2] \\
row 2 & \blindtext \\
row 3 & \blindtext[2] \\
\end{test}
\end{document}