我想定义一个新的方程环境,以内联方式显示方程,但其数字显示在行末(中间没有文本)。
更具体地说,以下代码:
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)\\}