重新定义 longtable 以在前后添加内容

重新定义 longtable 以在前后添加内容

我正在使用 Pandoc 将 markdown 生成为 LaTeX,并想为每个 longtable 添加一些样式。我成功地在表格前添加了内容,但未能在表格后添加内容。

\newcommand{\PreTable}{foo}
\newcommand{\PostTable}{bar}

\let\oldlongtable\longtable
\renewcommand{\longtable}[2][]{\PreTable\oldlongtable[#1]{#2}}            % This works
\renewcommand{\longtable}[2][]{\PreTable\oldlongtable[#1]{#2}\PostTable}  % This doesn't - "Misplaced \noalign."

除了 renewcommand 之外,我还尝试了 \def(也可以与 \PreTable 一起使用)、\renewenvironment 和 \LetLtxMacro,但都没有成功。

我所尝试实现的目标有可能实现吗?

答案1

使用最新的 latex,您可以尝试它提供的钩子。有关钩子放置位置的文档可在 lthooks.pdf 中找到

\documentclass{article}


\usepackage{longtable}

\AddToHook{env/longtable/before}{before}
\AddToHook{env/longtable/after}{after}
\AddToHook{env/longtable/begin}{begin longtable}
\AddToHook{env/longtable/end}{end longtable}
\begin{document}


\begin{longtable}{ll}
    Lorem ipsum dolor sit amet & consectetuer adipiscing elit\\
    Ut purus elit, vestibulum ut & placerat ac, adipiscing vitae, felis.\\
\end{longtable}

\end{document}

在此处输入图片描述

相关内容