创建结合方程和分割的新环境

创建结合方程和分割的新环境

我正在尝试定义一个由环境split内部的环境组成的新环境equation。但我遇到了错误。以下是我所做的:

\documentclass[a4paper,12pt]{article}
\usepackage[brazil]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\newenvironment{example}{\begin{equation}\begin{split}}{\end{split}\end{equation}}

\begin{document}
\begin{example}oi\end{example}
\end{document}

我收到的错误信息是:

ERROR: LaTeX Error: \begin{split} on input line 8 ended by \end{example}.

然后我尝试了其他几种情况。如果我删除splits 并定义exampleequation,它运行良好。如果我删除equations 并定义examplesplit,我会收到完全相同的错误消息。

换句话说:只有split涉及到时才会出现此错误。有办法解决此问题吗?

编辑:我这样做的原因是我想要一种方便的方式来创建split-equations。我知道它类似于align。我更喜欢split-equations,因为整行方程式都有一个数字用于引用(它甚至放在中间行)。align但是,会迫使我使用\notag每一行,否则我会为方程式中的每一行得到一个数字(当方程式很长且很多时,这往往会变得混乱)。这不是世界末日,但split-equation组合更快捷、更简单(如果我能设法为其定义一个命令)。

或者说,该multline环境也不合适,因为它不允许您手动对齐每一行(如对齐等号)。相反,它只允许您将所有内容向左或向右推。

EDIT2:我刚刚尝试过这个:

\newenvironment{example}{ \begin{equation}\split}{\endsplit \end{equation}}

并出现此错误

ERROR: LaTeX Error: \begin{equation} on input line 8 ended by \end{example}.

这很奇怪,因为完全删除\split\endsplit不会返回任何错误(所以这不是equation的错)。

答案1

我没有想到这一点,但答案很简单;感谢 Stefan Kottwitz!(感谢 Will Robertson 编写了environ我以前从未听说过的软件包。他应该给出这个答案;有了他的软件包,这个软件包就可以很好地运行。)

\documentclass{article}
\usepackage{amsmath,environ}
\NewEnviron{example}{%
\begin{equation}\begin{split}
  \BODY
\end{split}\end{equation}
}
\begin{document}
\begin{example}
a &= b + c \\
  &= d + e
\end{example}
\end{document}

在上述链接后面的 Stefan 的帖子中可以找到一些解释。

答案2

\begin{split} ... \end{split}当在另一个环境的开始和结束部分调用时不起作用的原因\begin ... \end与“amsmath 包技术说明”(texdoc technote)中给出的原因有关——解析需要与指定的环境完全匹配\begin{...}

从技术说明中的当前文档来看,这并不是很明显,但添加它是个好主意,我会尝试安排这样做。

答案3

split环境必须在数学显示环境中使用。我猜你想做的是创建一个快捷方式,这样你就不必写

\begin{equation}
\begin{split}
...
\end{split}
\end{equation}

每次。

也许 的替代方案splitaligned环境,它还允许您将一系列公式对齐在等号上,并将其放在环境中equation,您还可以获得整个表达式的单个方程编号。幸运的是,它aligned没有解析问题,split并且可以很好地与新的环境定义配合使用。

\usepackage{amsmath}
\newenvironment{equations}{\equation\aligned}{\endaligned\endequation}

\begin{equations}
a &= b + c \\
  &= d + e
\end{equations}

当然,你随时可以通过输入以下命令阅读 amsmath 的文档

texdoc amsldoc

在命令行上寻找灵感并浏览替代方案。

答案4

关于 Juan 的回答:使用equationand声明新环境aligned确实有效,但它引入了一些额外的间距问题。它似乎在等式后面的文本中包含了一个空格(小于缩进)。我将引用相关维基百科页面

创建新环境时,您可能很容易被多余的空格所困扰,这可能会造成致命的后果。例如,当您想要创建一个标题环境时,它会抑制其自身的缩进以及下一段的缩进。\ignorespaces 环境的 begin 块中的命令将使其在执行 begin 块后忽略任何空格。end 块有点棘手,因为在环境结束时会发生特殊处理。使用 LaTeX 将在发生特殊“end”处理后\ignorespacesafterend发出\ignorespaces

在新环境中包含ignorespaces定义似乎表现得很奇怪。处理这个微妙的间距问题似乎太麻烦了,只使用快捷方式。我建议写出完整的

\begin{equation}
  \begin{aligned}
     ...
  \end{aligned}
\end{equation}

使用自动完成功能,例如 TexWorks 或 TeXShop。(\begin{align}\begin{split}在我们没有定义新环境的情况下似乎同样好。)这还有一个额外的好处,就是更容易被其他人阅读(例如,一本期刊)查看你的 LaTeX。

相关内容