我正在尝试创建一个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}