如何创建新的表环境

如何创建新的表环境

我正在写一本书,里面有很多这样的表格。有没有办法为下面显示的代码创建快捷方式。我想将表格标题设为变量,因为在下面显示的 MWE 中,除了\caption单元格数据之外,其他一切都是常量。

我想要实现的是 - 我应该能够说\starttable.....\endtable 复制这么多代码会给我我想要的结果,但它会让它不那么像 LaTeX

\begin{document}

\begin{table}[!htbp]
\begin{minipage}[b]{0.5\linewidth}%\centering
{\caption{Table name - 1}
\renewcommand{\arraystretch}{1.1}
\begin{tabular}{|c|c|c|c|}

\hline
Text-1  & Text-2 & Text-3 & Text-4 \\
 \hline
   &  &  &  \\
  &   &   &   \\
&   &   &   \\
\hline
\end{tabular}}

\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.5\linewidth}
\centering
{\caption{Table Name - 2}
\renewcommand{\arraystretch}{1.1}
\begin{tabular}{|c|c|c|c|}
\hline
Text-1  & Text-2 & Text-3 & Text-4 \\
 \hline
   &  &  &  \\
  &   &   &   \\
&   &   &   \\
\hline
\end{tabular}}

\end{minipage}
\end{table}

答案1

我可以理解您希望简化表格材料的捕获并保持标记清晰。

通常,对于复杂的表格,我首先会简化条目。对于您的情况,我们将按如下方式标记表格数据:

\starttable
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable

我发现使用“|”比使用“&”更容易看,标记的文本看起来更整洁。和\starttable只是\stoptable两个宏,用于保存头部和末端材料。

\documentclass{article}
\begin{document}
\def\starttable{%
  \begin{table}[!htbp]
  \renewcommand{\arraystretch}{1.1}
  \begin{tabular}{|c|c|c|c|}
  \hline
  Text-1  & Text-2 & Text-3 & Text-4 \\
 \hline}
\def\stoptable{\hline\end{tabular}\end{table}}
\def\R #1|#2|#3|#4{ #1&#2&#3&#4}

 \starttable
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable
\starttable %badly marked up table rather use the "|"
   &  &  &  \\
  &   &   &   \\
&   &   &   \\
\stoptable
\end{document}

可以通过修改参数\startmacro来添加标题和其他样式信息。

\def\starttable#1{%
\begin{table}[!htbp]
\caption{#1}
...

我不确定您是否总是有“双表”。在这种情况下,我将在不同的宏集(例如\starttwotables和 )中重写上述内容。请注意,除非是环境,否则\endtwotablesLaTeX 不允许您定义以 开头的宏。\end

编辑多表

您可以使用与上述相同的语法添加一个或多个表格。\begin{table}...如果您需要它们浮动,请用 括起来,或者将其保留以立即放置。

在此处输入图片描述

\documentclass{article}
\makeatletter
\usepackage[figurename=Figure.,
                  justification=RaggedRight, 
                  labelfont={bf, footnotesize}, 
                  textfont={footnotesize},position=top]{caption}
\begin{document}
\listoftables
\def\starttable#1{%
  \renewcommand{\arraystretch}{1.1}%
  \minipage{0.45\textwidth}
      \captionof{table}{#1}
      \tabular{|c|c|c|c|}
      \hline
      Text-1  & Text-2 & Text-3 & Text-4 \\
      \hline
}
\def\stoptable{%
   \hline\endtabular
   \endminipage\hspace{10pt}}
\def\R #1|#2|#3|#4{ #1&#2&#3&#4}

\newpage
\begin{table}[h]
\centering
\starttable{First table caption}
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable
%
\starttable{This is the second caption}
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable
\bigskip

\starttable{This is the caption}
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable
%
\starttable{This is the caption}
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable

\starttable{This is the caption}
 \R test|test|test|test\\
 \R test|test|test|test\\
 \R test|test|test|test\\
\stoptable
\end{table}
\end{document}

其他方法也是可行的。

答案2

您可以定义自定义环境。前两个表来自您的 MWE,第三个表是以下结果:

\begin{MyTabular}{Table Name - 3}
\end{MyTabular}

考虑到环境的工作方式,上述内容也可以写成如下形式,这更接近您的期望:

\MyTabular{Table Name - 3}
\endMyTabular

在此处输入图片描述

\documentclass{article}

\newenvironment{MyTabular}[1]{% #1 = caption
    \begin{table}[!htbp]
    \centering
    \caption{#1}
    \renewcommand{\arraystretch}{1.1}
    \begin{tabular}{|c|c|c|c|}
        \hline
        Text-1  & Text-2 & Text-3 & Text-4 \\
        \hline
        &   &   &  \\
        &   &   &   \\
        &   &   &   \\
        \hline
}{%
    \end{tabular}
    \end{table}
}

\begin{document}

\begin{table}[!htbp]
\begin{minipage}[b]{0.5\linewidth}%\centering
{\caption{Table name - 1}
\renewcommand{\arraystretch}{1.1}
\begin{tabular}{|c|c|c|c|}

\hline
Text-1  & Text-2 & Text-3 & Text-4 \\
 \hline
   &   &   &  \\
   &   &   &  \\
   &   &   &  \\
\hline
\end{tabular}}

\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.5\linewidth}
\centering
{\caption{Table Name - 2}
\renewcommand{\arraystretch}{1.1}
\begin{tabular}{|c|c|c|c|}
\hline
Text-1  & Text-2 & Text-3 & Text-4 \\
 \hline
   &   &   &  \\
   &   &   &  \\
   &   &   &  \\
\hline
\end{tabular}}

\end{minipage}
\end{table}

\begin{MyTabular}{Table Name - 3}
\end{MyTabular}
\end{document}

相关内容