为什么附加到 \endabstract 的代码仍然缩进?

为什么附加到 \endabstract 的代码仍然缩进?

我正在尝试自动将“关键字”(在序言中定义)附加到abstract。关键字应该不是与 齐平abstract,但与正文/左边距齐平。

我的方法是使用:

\g@addto@macro\endabstract{\par\noindent{KEYWORDS}\par}

但关键词仍然与摘要齐平。奇怪的是,如果我删除\par关键词之后的关键词,对齐是正确的,但我需要在关键词下方留出粘连空间(所以这\\不是一个选项)。

我还使用以下命令覆盖了quotation环境(由使用abstract):

\renewenvironment{quotation}{START}{STOP}

显然 KEYWORDS 位于 STOP 之外,所以我不知道为什么它仍然缩进。

我也尝试过etoolboxxpatch包(见下文)。我认为这与“模式”或组有关,但我不知道太多,我认为\par逃离了本地组和模式,或者其他什么......

无论如何,提前致谢。

平均能量损失

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\g@addto@macro\endabstract{\par\noindent{KEYWORDS}\par}
\makeatother

%\usepackage{etoolbox}
%\AtEndEnvironment{abstract}{\par\noindent{KEYWORDS}\par}

%\usepackage{xpatch}
%\xapptocmd{\endabstract}{\par\noindent{KEYWORDS}\par}{}{}

%\renewenvironment{quotation}{START}{STOP}

\begin{document}
  \begin{abstract}
    \lipsum[1]
  \end{abstract}
  \lipsum[2-3]
\end{document}

结果

MWE 结果

答案1

您可以将其添加到抽象环境组之外

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\g@addto@macro\endabstract{\gdef\tmp{\par\noindent{KEYWORDS}\par}\aftergroup\tmp}
\makeatother

%\usepackage{etoolbox}
%\AtEndEnvironment{abstract}{\par\noindent{KEYWORDS}\par}

%\usepackage{xpatch}
%\xapptocmd{\endabstract}{\par\noindent{KEYWORDS}\par}{}{}

%\renewenvironment{quotation}{START}{STOP}

\begin{document}
  \begin{abstract}
    \lipsum[1]
  \end{abstract}
  \lipsum[2-3]
\end{document}

答案2

随着即将于 10 月发布的 LaTeX 内核的推出,您可以使用“钩子”来实现这一点。(您目前需要运行例如 pdflatex-dev 才能使其工作:它使用内核的预发布版本。)

\documentclass{article}
\usepackage{lipsum}
\AddToHook{env/abstract/after}{KEYWORDS\par}

\begin{document}

\begin{abstract}
    \lipsum[1]
  \end{abstract}
  \lipsum[2-3]
\end{document}

在此处输入图片描述

相关内容