方程式后的段落缩进命令

方程式后的段落缩进命令

我想写两个新命令\eqend\eqcntd这样当我把命令放在方程式的末尾时,

  1. \eqend命令在公式后面添加一个“。”,并强制下一个段落缩进,无论公式后面有多少空行。
  2. \eqcntd命令在公式后面添加一个“,”并强制下一个段落不缩进,无论公式后面有多少空行。

这是一个示例用法,

\begin{equation}
f(x) = x^2 + 1 \eqend
\end{equation}
Some text here, but it's gonna get indented.

另一个

\begin{equation}
f(x) = x^2 + 1 \eqcntd
\end{equation}


Some text here, but it's not gonna get indented.

这是我的无效解决方案,

\newcommand{\eqend}{\,. \mbox{\par}}
\newcommand{\eqcntd}{, \mbox{\noindent}}

答案1

这不是您的问题的答案,但也许会有所帮助。

我会重新定义方程环境本身。例如,使用纯 TeX,你可以定义类似的东西(虽然没有测试)

\def\eqindent#1{$$#1\,.$$\indent\ignorespaces}

像这样使用它:

\eqindent{f(x) = x^2 + 1}
Some text here, but it's gonna get indented.

对于这种\noindent情况也是类似的。而且应该有类似的方法可以用 LaTeX 来实现。

答案2

正如 Barbara Beeton 所评论的那样,强制环境后的第一个段落equation缩进可以通过以下方式实现\aftergroup——使用此命令添加\par 环境建立的组。

强制在环境之后显示第一个段落不是缩进并不是那么简单。我想出了以下方法:

  • 我定义了一个新的宏\@doendeq,它将重新定义\everypar以便它 a) 从其后的第一个段落中删除缩进 b) 恢复到其原始(空)定义。(\@doendeq是 LaTeX 的简化版本\@doendpe,在段落制作环境后使用。)

  • 要更改equation环境的每个实例以删除其后的缩进,只需添加\aftergroup\@doendeq到 的定义即可\endequation。由于您正在寻找仅修改 某些实例的命令equation,因此我使用了\csappto,因此电子工具箱包裹到本地添加\aftergroup\@doendeq\end<\@currenvir>\@currenvir当前环境的名称)。

我认为有更优雅的方法来做到这一点。

\documentclass{article}

\usepackage{etoolbox}

\makeatletter
\newcommand*{\@doendeq}{%
  \everypar{{\setbox\z@\lastbox}\everypar{}}%
}
\newcommand*{\eqend}{\,.\aftergroup\par}
\newcommand*{\eqcntd}{%
  \,,%
  \csappto{end\@currenvir}{%
    \aftergroup\@doendeq
  }%
}
\makeatother

\begin{document}

\begin{equation}
f(x) = x^2 + 1 \eqend
\end{equation}
Some text here, but it's gonna get indented.

\begin{equation}
f(x) = x^2 + 1 \eqcntd
\end{equation}

Some text here, but it's not gonna get indented.

\end{document}

相关内容