宽表周围的新环境包装器

宽表周围的新环境包装器

我正在尝试创建一个figs基于widetable, 使用\newenvironment

\documentclass{article}
\usepackage{widetable}

\newenvironment{figs}[1]{\begin{widetable}{\textwidth}{#1}}{\end{widetable}}

\begin{document}
\begin{widetable}{\textwidth}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{widetable}
\begin{figs}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{figs}
\end{document}

我希望\begin{figs}...\end{figs}代码中的这部分扩展到\begin{widetable}...\end{widetable}其正上方的部分。

但是它崩溃了,并出现错误“扫描使用 时文件结束”。如果我从代码中\wt@finishTable删除该部分,那么它就可以完美编译。我在 中犯了一个错误吗?\begin{figs}...\end{figs}\newenvironment

答案1

\documentclass{article}
\usepackage{widetable}
\usepackage{environ}

\NewEnviron{figs}[1]{%
\begin{widetable}{\textwidth}{#1}
  \BODY
\end{widetable}%
}

\begin{document}
\noindent
\begin{widetable}{\textwidth}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{widetable}

\bigskip

\noindent
\begin{figs}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{figs}
\end{document}

在此处输入图片描述

答案2

基本上,您无法根据 来定义环境widetable。这里有一个解决方法,但请记住,如果其中有一个跨越多列,则widetable不能保证它可以正常工作。\multicolumn

\documentclass{article}
\usepackage{widetable}

\makeatletter
\def\figs#1{%
  \def\@tempC{figs}\setlength{\wt@width}{\textwidth}%
  \def\wt@finetabella{\end{figs}}%
  \def\wt@preamble{#1}\wt@getTable}
\let\endfigs\endwidetable
\makeatother

\begin{document}
\noindent
\begin{widetable}{\textwidth}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{widetable}

\bigskip

\noindent
\begin{figs}{|c|c|c|c|}
(a) & (b) & (c) & (d) \\
\end{figs}
\end{document}

在此处输入图片描述

相关内容