如何在align环境下调整\sum后的空格?

如何在align环境下调整\sum后的空格?

我想让公式 (1) 更紧凑,公式 id 在同一行。目前,它看起来像这样。

在此处输入图片描述

\documentclass[10pt, oneside, twocolumn, notitlepage]{book}
\usepackage{amsthm,latexsym,amssymb,amsmath, amsfonts}
\usepackage{graphicx}
\usepackage{lipsum}

\newtheorem{thm}{Theorem}[section]


\newtheorem{rem}[thm]{Remark}

\begin{document}
\lipsum[1]
%\resizebox{.9\linewidth}{!}{
\begin{align} 
\label{eq:LS1}
    \mathbf{u}_{e}^{b} = \tanh\Big(\sum_{(r,e') \in \mathcal{N}_{\operatorname{in}}(e)} \mathbf{W}_{\operatorname{in}}\mathbf{z}_{r} +\sum_{(r, e') \in \mathcal{N}_{\operatorname{out}}(e)} \mathbf{W}_{\operatorname{out}} \mathbf{z}_r\Big),
\end{align}%}Z
\lipsum
\end{document}

我尝试用\mathclap它删除 \sum 周围的空格,但是它看起来有点丑(太紧)。

在此处输入图片描述

有没有办法可以稍微减少 \sum 周围的空间,但不全部删除?

答案1

以下示例将定义\makemathbox[<width>]{<math>}为与 的数学等价物\makebox[<width>]{<stuff>}。您可以指定比例\width以将下标设置\sum为其自然宽度的较小部分。

在此处输入图片描述

\documentclass[twocolumn]{book}

\usepackage{amsmath}
\usepackage{lipsum}

\makeatletter
\NewDocumentCommand{\makemathbox}{O{\width} m}{%
  \def\makemathbox@##1##2{\makebox[#1]{$##1##2$}}%
  \mathpalette\makemathbox@{#2}%
}
\makeatother

\begin{document}

\lipsum[1]
\begin{equation} 
  \mathbf{u}_e^b = \tanh\Big(
    \sum_{\makemathbox[.5\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \mathbf{W}_{\mathrm{in}}\mathbf{z}_r + 
      \sum_{\makemathbox[.5\width]{(r, e') \in \mathcal{N}_{\mathrm{out}}(e)}} \mathbf{W}_{\mathrm{out}} \mathbf{z}_r
    \Big),
\end{equation}
\lipsum

\end{document}

使用不同宽度的示例:

在此处输入图片描述

\usepackage{array}
%...
\[
  \begin{array}{ c >{\displaystyle}c }
    \verb|1.0\width| & \left| \sum_{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)} \right| \\
    \verb|0.9\width| & \left| \sum_{\makemathbox[0.9\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.8\width| & \left| \sum_{\makemathbox[0.8\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.7\width| & \left| \sum_{\makemathbox[0.7\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.6\width| & \left| \sum_{\makemathbox[0.6\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.5\width| & \left| \sum_{\makemathbox[0.5\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.4\width| & \left| \sum_{\makemathbox[0.4\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.3\width| & \left| \sum_{\makemathbox[0.3\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.2\width| & \left| \sum_{\makemathbox[0.2\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.1\width| & \left| \sum_{\makemathbox[0.1\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right| \\
    \verb|0.0\width| & \left| \sum_{\makemathbox[0.0\width]{(r,e') \in \mathcal{N}_{\mathrm{in}}(e)}} \right|
  \end{array}
\]

答案2

以双栏格式排版大型公式通常需要做出一些妥协。

我建议在公式之后解释一下这些指标的来源。

\documentclass[10pt, oneside, twocolumn, notitlepage]{book}
\usepackage{amsthm,amssymb,amsmath}

\usepackage{lipsum}

\begin{document}

\lipsum[1][1-3]
\begin{equation}\label{eq:LS1}
  \mathbf{u}_{e}^{b} =
  \tanh\Bigl(
    \sum_{\mathrm{in}} \mathbf{W}_{\mathrm{in}}\mathbf{z}_{r}
    +
    \sum_{\mathrm{out}} \mathbf{W}_{\mathrm{out}} \mathbf{z}_r
  \Bigr),
\end{equation}
where the first summation is taken for
$(r,e') \in \mathcal{N}_{\mathrm{in}}(e)$ and the second for
$(r, e') \in \mathcal{N}_{\mathrm{out}}(e)$.

\lipsum

\end{document}

需要注意的几点:

  1. 不要latexsym一起加载amssymb
  2. amsfonts已经加载amsfonts
  3. 不要用\operatorname它来获取直立字母,除非你真的有一个操作员(这里不是这种情况);
  4. align只有一行时不要使用。

在此处输入图片描述

答案3

在精细排版中,做出权衡几乎是不可避免的。关键是要尽量减少权衡的总“成本”。

由于在一行上排版方程及其相关方程编号非常重要,因此必须在其他地方做出妥协。IMNSHOm,在两个求和表达式上使用\mathclap(或等效地)的任何负面影响在大多数情况下都可以通过分别用和替换和来\smashoperator抵消。\Big(Big)\bigl(\bigr

为了进一步改善公式的外观和底层代码的质量,请考虑(a)加入一些\!(负薄空间)指令以改善字距调整和(b)\operatorname\mathrm指令替换指令。

在此处输入图片描述

\documentclass[oneside, twocolumn]{book}
\usepackage{mathtools,lipsum}

\begin{document}
\hrule % illustrate width of text (column) block
\begin{gather} 
  \mathbf{u}_{e}^{b} = \tanh\Big(
  \sum_{(r,e') \in \mathcal{N}_{\operatorname{in}}(e)}  
  \mathbf{W}_{\operatorname{in}}  \mathbf{z}_{r} 
 +\sum_{(r, e') \in \mathcal{N}_{\operatorname{out}}(e)}
  \mathbf{W}_{\operatorname{out}} \mathbf{z}_{r}
  \Big), 
  \\[1ex]
  \mathbf{u}_{e}^{b} = \tanh\bigl(\,
  \smashoperator{\sum_{(r,e')  \in \mathcal{N}_{\mathrm{in}}\mkern-1.5mu(e)}}   
  \mathbf{W}_{\!\mathrm{in}}  \mathbf{z}_{r} 
 +\smashoperator{\sum_{(r, e') \in \mathcal{N}_{\mathrm{out}}\mkern-1.5mu(e)}} 
  \mathbf{W}_{\!\mathrm{out}} \mathbf{z}_{r}
  \bigr),
\end{gather}
\hrule
\end{document}

答案4

mathtools包(加载amsmath)定义了一个\smashoperator执行该作业的命令。

amsfonts无关:加载时无需加载amssymb:后者会为您完成此操作。

\documentclass[10pt, oneside, twocolumn, notitlepage]{book}
\usepackage{amsthm, amssymb,mathtools}
\usepackage{graphicx}
\usepackage{lipsum}

\begin{document}

\lipsum[1]
\begin{align}
\label{eq:LS1}
    \mathbf{u}_{e}^{b} = \tanh\Bigl(\smashoperator{\sum_{(r,e') \in \mathcal{N}_{\operatorname{in}}(e)}} \mathbf{W}_{\operatorname{in}}\mathbf{z}_{r} +\smashoperator{\sum_{(r, e') \in \mathcal{N}_{\operatorname{out}}(e)}} \mathbf{W}_{\operatorname{out}} \mathbf{z}_r\Bigr),
\end{align}

\lipsum

\end{document} 

在此处输入图片描述

相关内容