编辑

编辑

如何将命令的范围限制在给定部分内?

我改编了一个在线找到的宏,它读取命令中的参数并列出它们

\newcommand{\printDefn}{}
  \newcommand\defn[2]{\begin{definition}{\textbf{#1} {#2}}\end{definition}
     \g@addto@macro{\printDefn}{\item \textbf{#1} \space : \space #2}
  }

我的目标是按节完成此操作。问题是每次\printDefn调用时它(可以理解)都会打印文档中的所有定义,而不仅仅是新的定义。

有没有办法限制命令的范围,使其仅查看当前部分?或者if ... else我可以使用某种构造来仅在 时打印currrentSection == firstNumbering

编辑

\section{}

\defn{test}{from 1}



\begin{enumerate}
\printDefn
\end{enumerate}

\section{}

\defn{test}{from 2}


\renewcommand{\printDefn}{}

\begin{enumerate}
\printDefn
\end{enumerate}

答案1

您可以将重置列表的代码添加到\section

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{xpatch}

\theoremstyle{definition}
\newtheorem{definition}{Definition}

\xpretocmd{\section}{\global\saveddefinitions{}}{}{}

\newtoks\saveddefinitions

\newcommand\defn[2]{%
  \begin{definition}\textbf{#1} #2\end{definition}%
  \global\saveddefinitions\expandafter{%
    \the\saveddefinitions
    \item \textbf{#1}: #2%
  }%
}
\newcommand{\printDefn}{\begin{enumerate}\the\saveddefinitions\end{enumerate}}

\begin{document}

\section{A}

\defn{test}{from 1}

\printDefn

\section{B}

\defn{test}{from 2}

\printDefn

\end{document}

在此处输入图片描述

相关内容