与定理环境在同一行的方程(包括数字)

与定理环境在同一行的方程(包括数字)

我有这个:

\begin{lemma}
 \begin{equation} 
   L_b \circ L_a = L_{L_b(a)} \circ L_b.
 \end{equation}
\end{lemma}

我希望方程与引理在同一行,并带有数字标签。
添加\vspace{-\abovedisplayskip}不起作用。
如何解决?

答案1

您可以手动设置这个非常具体的要求:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,amsthm}
\newtheorem{lemma}{Lemma}
\begin{document}
Some regular text.
\begin{lemma}
This is a lemma.
\end{lemma}
Here is a break of some more text.
\begin{lemma}
\begin{equation}
  L_b \circ L_a = L_{L_b(a)} \circ L_b.
\end{equation}
\end{lemma}
Another break of regular text.

\medskip
\refstepcounter{lemma}%
\noindent\leavevmode\rlap{\textbf{Lemma~\thelemma.}}\hfill%
$L_b \circ L_a = L_{L_b(a)} \circ L_b.$\hfill%
\refstepcounter{equation}%
\llap{(\theequation)}\par%
\medskip

Some final text.
\end{document}

\medskip就间距而言,这似乎足够了。但是,如果需要,可以深入研究代码并找到上方/下方的精确垂直间距,lemma以使其与其余部分相同。

重叠(\rlap\llap)是为了确保使用时方程最终位于中心\hfill

答案2

还可以定义一个centredequ环境,将方程置于当前线剩余的自由部分的中心。它与以下cleveref包一起使用:

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}

\usepackage{amsmath,amsthm}
\newtheorem{lemma}{Lemma}

\usepackage{cleveref} 
\newcounter{centredequ}
\newenvironment{centredequ}{\refstepcounter{equation}\hfill\begin{math}}{\end{math}\hfill$(\theequation)$\par\noindent}
\crefname{centredequ}{eq.}{eqs. }
\Crefname{centredequ}{Eq.}{Eqs. }

\begin{document}

First a displayed equation: 
\begin{equation}\label{disp}
  a = b
\end{equation}
Some regular text with a centred equation: \begin{centredequ}\label{taut}
  a' = b'.
\end{centredequ}
\Cref{taut} is almost the same as \cref{disp}. 

\begin{lemma}
This is a lemma.
\end{lemma}
Here is a break of some more text.

\begin{lemma}\label{lem2}
\begin{centredequ}L_b \circ L_a = L_{L_b(a)} \circ L_b.\label{com}\end{centredequ}%
\end{lemma}
As we can see from \cref{taut} and \cref{lem2}, \cref{com} …

\end{document} 

在此处输入图片描述

答案3

您可以通过添加适当的负空间来删除​​垂直空间。例如,您可以定义:

\def\keeptheoremline{%
 \noindent \vskip-\prevdepth \hrule height0pt
 \vskip-\abovedisplayshortskip \vskip-\baselineskip
}

并使用

\begin{lemma}\keeptheoremline
 \begin{equation} 
   L_b \circ L_a = L_{L_b(a)} \circ L_b.
 \end{equation}
\end{lemma}

答案4

先前的答案centredeq并没有真正将方程式相对于整个文本块居中,而是相对于行上的剩余空间居中。另一个答案解决了这个问题,但本质上重新定义了引理环境。

如果您不想重新定义环境,一种解决方案是将您想要居中的方程式\clap(或\mathclap) 。以下是代码:

\begin{lemma}\stepcounter{equation}%
\hfill$\mathclap{L_b \circ L_a = L_{L_b(a)} \circ L_b.}$%
\hbox{\hspace{0.5\textwidth}\llap{(\theequation)}}
\end{lemma}

结果以及结果解释: 在此处输入图片描述


编辑:为了实现可重用性,我创建了四个专门的环境alignsamelinealignsameline*和。以下是 MWE:eqsamelineeqsameline

\documentclass{article}
\usepackage{amsmath,environ}
\newtheorem{lemma}{Lemma}

\NewEnviron{alignsameline}{%
\stepcounter{equation}%
\hfill\clap{$\begin{aligned}[t]\relax %
\BODY%
\end{aligned}$}\hskip0.5\linewidth\hbox{\llap{\textnormal{(\theequation)}}}\vskip1\belowdisplayskip%
}

\NewEnviron{alignsameline*}{%
\hfill\clap{$\begin{aligned}[t]\relax %
\BODY%
\end{aligned}$}\hskip0.5\linewidth\hbox{}\vskip1\belowdisplayskip%
}

\NewEnviron{eqsameline}{%
\stepcounter{equation}%
\hfill\clap{$\displaystyle %
\BODY%
\relax$}\hskip0.5\linewidth\hbox{\llap{\textnormal{(\theequation)}}}\vskip1\belowdisplayskip%
}

\NewEnviron{eqsameline*}{%
\hfill\clap{$\displaystyle %
\BODY%
\relax$}\hskip0.5\linewidth\hbox{}\vskip1\belowdisplayskip%
}

\begin{document}
\begin{lemma}
    \begin{eqsameline}
        L_b \circ L_a = L_{L_b(a)} \circ L_b.
    \end{eqsameline}
\end{lemma}

\end{document}

相关内容