基於spreadtab的新環境

基於spreadtab的新環境

我有一個spreadtab相當複雜的頁首和頁腳,在我的文件中的多個地方使用。實際內容僅由幾行簡單的內容組成。我想定義一個新的環境(或巨集),這樣我就不必為每個表重複頁首和頁尾。

我發現的唯一工作方法如下,基於https://tex.stackexchange.com/a/312860/102921https://tex.stackexchange.com/a/207313/102921

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[main=english]{babel}

\usepackage{array, environ, spreadtab, xpatch}

\makeatletter
\def\spreadtab@ii{\IfSubStr\ST@tab{\noexpand\input}{\expandafter\spreadtab@iii\ST@tab\@nil}\relax}
\def\spreadtab@iii#1\input#2#3\@nil{%
    \long\def\spreadtab@iv##1\spreadtab@iv{\endgroup\def\ST@tab{#1##1#3}\spreadtab@ii}%
    \begingroup
    \everyeof{\spreadtab@iv\noexpand}%
    \expandafter\spreadtab@iv\@@input#2
}
\xpretocmd\spreadtab@i\spreadtab@ii{}{}
\makeatother

\newwrite\mytabularwrite

\NewEnviron{mytable}{%
    \immediate\openout\mytabularwrite=mytabularfile.tex%
    \immediate\write\mytabularwrite{\unexpanded\expandafter{\BODY}}%
    \immediate\closeout\mytabularwrite
    \begin{spreadtab}{{tabular}{|l|ccc|}}
        \hline
        & @Heading 1 & @Heading 1 & @Heading 1 \\\hline % here is a complex header
        \input{mytabularfile}
        @ Total & \STcopy{>}{sum(b2:[0,-1])} &  & \\\hline % end a complex footer
    \end{spreadtab}
}

\begin{document}
    \begin{mytable}
        @ Label 1 & 1000 & 500 & 800 \\\hline 
        @ Label 2 & 2000 & 1500 & 1800 \\\hline
        % At most 10 of such lines per table
    \end{mytable}
\end{document}

有沒有辦法不使用臨時檔案?因為最終的文檔將有大約 100 個這樣的表,所以我有點擔心速度。

相關內容