将编号方程放在行的剩余空间中

将编号方程放在行的剩余空间中

我想定义一个新的方程环境,以内联方式显示方程,但其数字显示在行末(中间没有文本)。

更具体地说,以下代码:

The quick brown fox jumps over the lazy dog. We have
\begin{equation-inline}
 a + b + c = d.
\end{equation-inline}
Therefore, ...

应该输出类似这样的内容:

在此处输入图片描述

动机:我正在编写一份有一些空间限制的文档,通过用上面的内容替换一些显示样式居中的方程式,我可以节省几行。

关于标记内联方程的问题有很多,例如这个或者这个,但我的问题有点不同:我希望方程编号显示在行末,以便于找到它。

预先感谢您的帮助!


更新:

使用以下的定义equation-inline,方程式可以正确显示,但引用它却不起作用:

\documentclass{article}
\usepackage{amsmath}

\newenvironment{equation-inline}{$\stepcounter{equation}}{$\hfill(\theequation)\\}

\begin{document}
    
The quick brown fox jumps over the lazy dog. We have
    \begin{equation-inline}\label{eq:x}
        a + b + c = d.
    \end{equation-inline}
According to~\eqref{eq:x}, we have...

\end{document}

在此处输入图片描述

更新 2:

\stepcounter{equation}将上面的内容替换为\refstepcounter{equation}作品(信用):

\newenvironment{equation-inline}{
    % Put \refstepcounter at the beginning, because
    % package `hyperref' sets the anchor here.
    \refstepcounter{equation}%
    $}{
    $\hfill(\theequation)\\}

答案1

尽管我从风格上不同意,但你可以这样做:

内联方程标签

\documentclass[fleqn]{article}
\usepackage{amsmath}

\newcommand*\inlineTag{%
    \refstepcounter{equation}%
    \hspace*{0em plus 1fill}\makebox{(\theequation)}%
}

\begin{document}
    
    \section{Option 1 (the manual way)}
    The quick brown fox jumps over the lazy dog.
    %
    \begingroup
        \setlength{\mathindent}{0pt}
        \setlength{\abovedisplayskip}{0pt}
        \setlength{\belowdisplayskip}{0pt}
        \begin{equation}\label{option1}
            \text{The quick brown fox jumps over the lazy dog. We have }    a + b + c = d.
        \end{equation}
    \endgroup
    Therefore, ...
    \begin{equation}
        a^2+b^2=c^2
    \end{equation}

    \noindent
    The inline equation is \eqref{option1}.

    \section{Option 2 (the automatic way)}
    
    The quick brown fox jumps over the lazy dog.\\
    The quick brown fox jumps over the lazy dog. We have $a + b + c = d.$ \inlineTag\label{option2}\\
    Therefore, ...

    \begin{equation}
        a^2+b^2=c^2
    \end{equation}

    \noindent
    The inline equation is \eqref{option2}.
    
\end{document}

右对齐代码归功于这个答案

答案2

可以使用linegoal测量一行剩余空间的包(需要两次编译)来完成,并且nccmath

\documentclass{article}
\usepackage{linegoal}
\usepackage{nccmath}
\usepackage{lipsum} 

\newenvironment{inlineequation}{%
\minipage{\linegoal}\useshortskip\fleqn[0.5em]\equation}{\endequation\endfleqn\endminipage\linebreak}

\begin{document}

\noindent The quick brown fox jumps over the lazy dog. We have
\begin{inlineequation}
 a + b + c = d.
\end{inlineequation}
\lipsum[11]

\end{document} 

在此处输入图片描述

答案3

下面的代码完成这个工作:

\newenvironment{equation-inline}{
    % Put \refstepcounter at the beginning, because
    % package `hyperref' sets the anchor here.
    \refstepcounter{equation}%
    $}{
    $\hfill(\theequation)\\}

相关内容