新环境中的 longtable 和 filecontents

新环境中的 longtable 和 filecontents

我正在尝试为环境创建一个新环境longtablefilecontents但我陷入困境,不知道如何解决我的问题。

\documentclass[a4paper,parskip]{scrartcl}
\usepackage{polyglossia}

\usepackage{longtable, ltxtable, filecontents, colortbl}

\newenvironment{tbl}{%
\begin{filecontents}{\jobname-ltxtable.tex}%
\begin{longtable}{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}%
\hline\rowcolor[gray]{.8}%
Column 1 & Column 2 & Column 3 & Column 4\\\hline%
\endhead%
}{%
%\caption{#1} %
\end{longtable}%
\end{filecontents}%
\LTXtable{\textwidth}{\jobname-ltxtable.tex}%
}

\begin{document}

\begin{tbl}
1 & 2 & 3 & 4 \\\hline
1 & 2 & 3 & 4 \\\hline
1 & 2 & 3 & 4 \\\hline
\end{tbl}

\end{document}

我发现filecontents在宏中使用会导致问题,但我需要类似filecontents写出长表的东西。该表稍后将由X列组成。我降低了所有复杂性以生成一个最小(非工作)示例。

我希望有人能帮助我。

谢谢+再见!

答案1

您可以使用 environ 包来收集正文,然后将其写入。请注意,正文将写在一行中。

\documentclass[]{article}
\usepackage{polyglossia}

\usepackage{ltxtable,longtable,colortbl,environ,etoolbox}
\newwrite\mytabularwrite
\NewEnviron{tbl}
 {%
  \immediate\openout\mytabularwrite=\jobname-ltxtable.tex
   \immediate\write\mytabularwrite{%
    \unexpanded{%
     \begin{longtable}{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}%
      \hline\rowcolor[gray]{.8}%
      Column 1 & Column 2 & Column 3 & Column 4\\\hline%
      \endhead}%
   }
  \immediate\write\mytabularwrite{\unexpanded\expandafter{\BODY}}%
  \immediate\write\mytabularwrite{\unexpanded{\end{longtable}}}%
  \immediate\closeout\mytabularwrite
 }

\AfterEndEnvironment{tbl}{\LTXtable{\textwidth}{\jobname-ltxtable2.tex}}
\begin{document}

\begin{tbl}
1äöü߀ & \textbf{2} & 3 & 4 \\\hline
1 & 2 & 3 & 4 \\\hline
1 & 2 & 3 & 4 \\\hline
\end{tbl}

\end{document}

在此处输入图片描述

相关内容