自动向环境中的每个段落添加内容

自动向环境中的每个段落添加内容

我想知道是否有可能在给定环境中自动将一些内容添加到任何段落中。

我主要使用 LaTeX 在我工作的学校做填空题。我有一个名为FillInTheBlanks(*) 的环境。它会输出两次页面——一次输出我指定的某些单词,并用\blank{}下划线代替,另一次输出填满答案的页面。

我还发现对段落进行编号很有用,这样可以更轻松地与学生讨论内容(例如“在第 3 段末尾,您会注意到...”)。在我的 Worksheets.sty 文件中,我添加了:

\reversemarginpar
\newcommand\marginlabel[1]{\mbox{}\marginpar
  {\hspace{2em}#1}}

这样我就可以在每个段落的边距中添加一个段落编号。唯一的问题是,使用这个我必须手动\marginlabel{"a number"}在每个段落的开头添加。我希望它能自动完成。如果我制作一个\newcommand环绕每个段落的命令,它可以写入命令,这样就省去了我手动输入段落编号的麻烦,但考虑到每页通常只有六个或更少的段落,它实际上并没有节省多少精力。

有没有什么方法可以让我\marginlabel{}在开始新段落时自动插入命令?

(*) 我知道这个exam班级做了类似的事情,但它没有按照我想要的方式去做,所以我自己做了。

答案1

\everypar可以提供帮助,但要小心:一些 LaTeX 宏会重新定义它。

但是,这是有效的:

\documentclass{article}
\usepackage{lipsum}
\newcounter{par}
\newenvironment{numberedpars}{\setcounter{par}{0}%
  \everypar={\refstepcounter{par}%
    \makebox[0pt]{\makebox[15ex][l]{\arabic{par}}}}}{}
\begin{document}

\begin{numberedpars}
  \lipsum[1-4]
\end{numberedpars}

\end{document}

在此处输入图片描述

由于这使用了\refstepcounter,您可以使用\label\ref机制来引用您的段落。

相关内容