下列的如何定义一个宏来向尚未打印的表中添加一行?,我想出了一个宏(\AddToTable
),它“构建”一个表,即将其参数附加为表的最后一行。
问题是,即使我不调用任何 \AddToTable
命令(以便表格应该是空的),我仍然得到两个垂直分隔符。
我该如何避免这种情况?
以下是我的示例:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{tabu}
\usepackage{fancyhdr}
\let\TableBody\relax
\newcommand{\foottable}{%
\begin{tabu} {|l|l|} \TableBody \end{tabu}}
\newcommand{\AddToTable}[1]{%
\gappto\TableBody{#1}%
}
\begin{document}
Test Test Test Test Test\\
\AddToTable{1 & a\\}
\AddToTable{2 & b\\}
\AddToTable{\multicolumn{2}{l}{Text}} % test
\foottable
\end{document}
笔记:
:)
自从第一次发布以来,这个问题已经被大量编辑,所以如果你想理解下面的评论(或者你只是好奇),请查看编辑历史。
答案1
后续内容:表格始终至少有一个单元格。您只需在代码中添加一个测试即可:
\newcommand{\foottable}{%
\ifx\TableBody\relax\else
\begin{tabular} {|l|l|} \TableBody \end{tabular}
\fi
}