编辑:有没有办法在不使用 flalign 环境的情况下完成下面的操作?正如我在问题中提到的,我知道使用 flalign 环境可以实现我所要求的功能。但是,此环境无法包装在新环境中,因此解决方案无法自动化。有人知道其他解决方法吗?
我的问题很简单。我正在尝试创建一个方程式环境,该环境将使用自定义文本和方程式编号标记方程式。文本应左对齐,方程式编号应右对齐。它应该如下所示。
(customTxt) 1 + 1 = 2 (1)
自定义文本由一个复杂的命令生成,该命令使用计数器进行一些算术运算。方程编号与往常一样只是 \theequation。
我当然可以使用例如 flalign 来实现这一点:
\begin{flalign}
\mycommand && 1 + 1 = 2 &&
\end{flalign}
但是,我似乎无法将其包装到新环境中。这似乎是关于 align cf 的一个已知问题这个问题或者这个问题。我正在处理一份很长的文档,每个方程式都需要像这样标记。我真的很想有某种自定义方程式环境来为我设置这个:
\begin{myEqn}{\mycommand}
1 + 1 = 2
\end{myEqn}
有人能提供建议吗?编辑如何定义快捷方式或命令来简洁地执行此操作?每次我使用此命令时,部分
\mycommand && ... &&
总是相同的。有没有办法自动完成这个?问题是,在提到的问题中给出的解决方案将不是在 \newenvironment 命令中工作。
答案1
实际上,可以将其包装flalign
到不同的环境中。下面我使用以下方法捕获环境的内容:environ
并以两种不同的方式像宏一样处理它:
\documentclass{article}
\usepackage{amsmath,environ}
\NewEnviron{myEqnA}[1]{%
\begin{flalign}
#1 && \BODY &&
\end{flalign}
}
\newcommand{\mycommand}{%
\text{mycom}% ...or a complicated macro
}
\NewEnviron{myEqnB}[1]{%
\begin{equation}
\makebox[0pt]{$\displaystyle \BODY$}% Set equation
\makebox[0pt][r]{\makebox[.5\linewidth][l]{#1}}% Set custom text (argument)
\end{equation}
}
\begin{document}
\begin{myEqnA}{\mycommand}
1 + 1 = 2
\end{myEqnA}
\begin{myEqnB}{\mycommand}
1 + 1 = 2
\end{myEqnB}
\end{document}
水平对齐的差异源于方程设置方式的差异。在 中myEqnB
,方程和自定义文本(参数)都设置在零宽度框中(以便于对齐)。