您好,我编写了 3 个宏,用于创建我在文章中添加的内容表。\startMyTable
,,它们的名称表明了它们的作用。\inMyTable
\createMyTable
所以当我写下:
Hello
\startMyTable
Hello2
\inMyTable{FIRST}
\inMyTable{SECOND}
Hello3
\createMyTable
Hello4
它创建了类似这样的内容:
Hello
Hello2
Hello3
--------
| FIRST |
--------
| SECOND |
--------
Hello4
有没有办法将表格移动到文章的某个位置(例如文章开头)?我知道这需要对 latex 语法进行预编译,但我不知道如何操作以及要搜索什么。你有什么建议吗?
我发布了建议用于创建如下表的代码:
\newcommand\startMyTable{\def\MyTable{\begin{tabular}{|l|}}}
\newcommand\inMyTable[1]{%
\edef\MyTable{%
\expandafter\unexpanded\expandafter{\MyTable#1\\}}}
\newcommand\createMyTable{\begin{center}\MyTable\end{tabular}\end{center}}
答案1
\documentclass{article}
\makeatletter
\newcommand\startMyTable{%
\immediate\write\@auxout{\unexpanded{%
\gdef\MyTable{}}}}
\newcommand\inMyTable[1]{%
\immediate\write\@auxout{\unexpanded{%
\xdef\MyTable{%
\expandafter\unexpanded\expandafter{\MyTable#1\\}}}}}
\newcommand\createMyTable{%
\begin{center}
\begin{tabular}{|l|}\ifx\MyTable\@undefined \ldots\else\MyTable\fi\end{tabular}
\end{center}}
\makeatother
\begin{document}
\createMyTable
\section{zzz}
Hello
\startMyTable
Hello2
\inMyTable{FIRST}
\inMyTable{SECOND}
Hello3
Hello4
\end{document}
像所有这样的事情一样,需要运行两次(第一次运行会得到...)