暂时改变方程边距

暂时改变方程边距

假设我的文档文本宽度较窄,且有大量空白。如果我有一个特别长的公式,无法放入给定的宽度,那么一般的解决方案是将公式拆分为多行。

但是,如果某个方程式不太适合该方法,是否有一种方便的方法来临时更改给定方程式的边距?我在下面提供了一种临时方法,但它需要手动插入\vspace一个经验得出的量级。似乎应该有更好的方法。它还需要指定加宽的文本宽度,但这是可以的,因为如果该技术必须在文档中多次使用,我更喜欢某种扩展的一致性。

\documentclass{article}
\usepackage[nopar]{lipsum}
\begin{document}
\lipsum[1]
\begin{equation}
y = mx + b
\end{equation}
\lipsum[2]
% HERE IS THE KLUDGE
  \par\vspace{-.5\topskip}\noindent\makebox[\textwidth]{\begin{minipage}{7in}
    \begin{equation}
      E = mc^2 + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + 
      x + x + x + x + x + x + x + x + x 
    \end{equation}
  \end{minipage}}\vspace{\topskip}\par
% END KLUDGE
\lipsum[2]
\begin{equation}
\nu = c / \lambda
\end{equation}
\end{document}

在此处输入图片描述

事后我想到的是,这些\leftskip方法\rightskip似乎并没有改变发生的事情里面该等式。

答案1

我会尽量避免这样做。但是……

\documentclass{article}
\usepackage{amsmath,environ}

\usepackage[nopar]{lipsum}

\makeatletter
\NewEnviron{widerequation}{%
  \begin{equation*}
  \sbox\z@{\let\label\@gobble$\displaystyle\BODY$}
  \makebox[\textwidth]{%
    \begin{minipage}{\dimexpr\wd\z@+3em}
    \vspace{-\baselineskip}
    \begin{equation}
    \BODY
    \end{equation}
    \end{minipage}%
  }
  \end{equation*}
}

\begin{document}
\lipsum[2]
\begin{equation}
y = mx + b
\end{equation}
\lipsum[2]
\begin{widerequation}\label{test}
      E = mc^2 + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + 
      x + x + x + x + x + x + x + x + x 
\end{widerequation}
\lipsum[2]
\begin{equation}
\nu = c / \lambda
\end{equation}
See \eqref{test}
\end{document}

在此处输入图片描述

答案2

看来您也可以使用包adjustwidth中的环境changepage

\newenvironment{widerequation}{%
    \begin{adjustwidth}{-2cm}{-2cm}\begin{equation}}
    {\end{equation}\end{adjustwidth}}

以下是完整的 MWE:

% arara: pdflatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{changepage}
\usepackage[nopar]{lipsum}

\newenvironment{widerequation}{%
    \begin{adjustwidth}{-2cm}{-2cm}\begin{equation}}
    {\end{equation}\end{adjustwidth}}

\begin{document}
\lipsum[2]
\begin{equation}
y = mx + b
\end{equation}
\lipsum[2]
\begin{widerequation}\label{test}
      E = mc^2 + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x + 
      x + x + x + x + x + x + x + x + x 
\end{widerequation}
\lipsum[2]
\begin{equation}
\nu = c / \lambda
\end{equation}
See \eqref{test}
\end{document}

答案3

这是带有软件包的解决方案eqparbox,可以测量带标签的盒子。它需要两次编译:

\documentclass{article}
\usepackage[nopar]{lipsum}
\usepackage{mathtools}
\usepackage{eqparbox}

\begin{document}

\lipsum[1]
\noindent\makebox[\textwidth]{\begin{minipage}{\dimexpr\eqboxwidth{Eq}+1Acm\relax}
  \medskip
  \begin{equation}\eqmakebox[Eq]{\ensuremath{E = mc^2 + x + x + x + x + x + x + x + x + x + x + x + x + x + x + x +
    x + x + x + x + x + x + x + x + x}}
  \end{equation}
  \end{minipage}}\vspace{\belowdisplayskip}
\lipsum[2]
\begin{equation}
  \nu = c / \lambda
\end{equation}

\end{document} 

在此处输入图片描述

相关内容