我正在尝试将抽象环境中的文本存储到文件中 + 同时显示此文本。我尝试了以下操作:
\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
环境,但您可以自由使用不同的格式。