我想写两个新命令\eqend
,\eqcntd
这样当我把命令放在方程式的末尾时,
- 此
\eqend
命令在公式后面添加一个“。”,并强制下一个段落缩进,无论公式后面有多少空行。 - 该
\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}