我有这个:
\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}
编辑:为了实现可重用性,我创建了四个专门的环境alignsameline
、alignsameline*
和。以下是 MWE:eqsameline
eqsameline
\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}