在抽象环境中存储+显示文本

在抽象环境中存储+显示文本

我正在尝试将抽象环境中的文本存储到文件中 + 同时显示此文本。我尝试了以下操作:

\documentclass{article}

\makeatletter
\renewenvironment{abstract}{%
  \textbf{\textsf{Abstract.}}%
  \filecontents[nosearch,noheader,overwrite]{\jobname.abstract}%
}%
{%
  \endfilecontents%
  \input{\jobname.abstract}%
}
\makeatother

\begin{document}
\begin{abstract}
This is a test abstract.
\end{abstract}
\end{document}

然而,这导致

! Missing number, treated as zero.
<to be read again> 
                   \protect 

当我注释掉“\input{\jobname.abstract}”时,它会编译。我做错了什么?

答案1

时间问题。使用\AddToHook

\documentclass{article}

\NewCommandCopy{\originalabstract}{\abstract}
\NewCommandCopy{\endoriginalabstract}{\endabstract}

\renewenvironment{abstract}{%
  \filecontents[nosearch,noheader,overwrite]{\jobname.abstract}%
}%
{%
  \endfilecontents
}
\AddToHook{env/abstract/after}{%
  \begin{originalabstract}\input{\jobname.abstract}\end{originalabstract}%
}

\begin{document}

\begin{abstract}
This is a test abstract.
\end{abstract}

\end{document}

我复制了原始abstract环境,但您可以自由使用不同的格式。

相关内容