将“命令数组”写入辅助文件

将“命令数组”写入辅助文件

我正在尝试让这个基本功能发挥作用。我有一组命令(我使用 定义的\edef),我主要将其用作计数器。我想以扩展形式将这些命令写入辅助文件。以下是我目前得到的结果:

\documentclass{article}
\usepackage{etoolbox}
\usepackage{forloop}

\AtEndDocument{%
    \newcounter{tempsection}%
    \forloop{tempsection}{1}{\value{tempsection} < 3}{%
        \immediate\write\@mainaux{%
            \string\expandafter\string\edef\string\csname pointcount@\thetempsection\string\endcsname{\csname pointcount@\thetempsection\endcsname}%
        }%
    }%
}%

\begin{document}
\expandafter\edef\csname pointcount@1\endcsname{3}
\expandafter\edef\csname pointcount@2\endcsname{4}
\end{document}

在这个例子中,我希望将这个内容写入辅助文件,以便命令在下次编译文件时可用:

\expandafter\edef\csname pointcount@1\endcsname{3}
\expandafter\edef\csname pointcount@2\endcsname{4}

答案1

你可以做

\documentclass{article}
\usepackage{etoolbox}
\usepackage{forloop}
\makeatletter
\AtEndDocument{%
    \newcounter{tempsection}%
    \forloop{tempsection}{1}{\value{tempsection} < 3}{%
        \immediate\write\@mainaux{%
            \string\expandafter\gdef\noexpand\csname pointcount@\thetempsection\string\endcsname{\csname pointcount@\thetempsection\endcsname}%
        }%
    }%
}%
\makeatother

\begin{document}
\expandafter\edef\csname pointcount@1\endcsname{3}
\expandafter\edef\csname pointcount@2\endcsname{4}
\end{document}

请注意,您需要\gdef使设置脱离读取辅助文件时使用的本地组。

aux文件写为

\relax 
\expandafter\gdef \csname pointcount@1\endcsname{3}
\expandafter\gdef \csname pointcount@2\endcsname{4}

相关内容