上标位置与侧边栏一致

上标位置与侧边栏一致

考虑以下 MWE,它使用\sidesetAMS 数学来排版具有上限的素数总和:

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\[
 \sideset{}{'}\sum_{i=0}^m x = \sum_{i=-1}^{m} x
\]
\end{document}

显然,m对于带撇号和不带撇号的和,和的上限的垂直位置是不同的。在上限不影响由 sideset 引入的限制的情况下,是否有一种简单的方法可以使这两种排版一致?

答案1

不漂亮:

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\[
 \mathop{\smash{\sideset{}{'}\sum}\vphantom{\sum}}\limits_{i=0}^m x = \sum_{i=-1}^{m} x
\]
\end{document}

在此处输入图片描述

相同的想法,但更好地整合了amsmath

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\psum}{%
  \DOTSB\mathop{%
    \smash{\sideset{}{'}\sum}%
    \vphantom{\sum}%
  }\slimits@
}
\makeatother

\begin{document}
\[
\psum_{i=0}^m x = \sum_{i=-1}^{m} x
\]
\end{document}

一个更复杂的解决方案,让 TeX 相信求和符号具有正确的宽度。

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

\makeatletter
\newcommand{\psum}{\DOTSB\psum@}
\NewDocumentCommand{\psum@}{e{_^}}{%
  \sbox\z@{$\m@th\displaystyle'$}\kern-\wd\z@\!%
  \mathop{%
    \kern\wd\z@
    \smash{\sideset{}{'}\sum}%
    \vphantom{\sum}%
  }\psum@scripts#1%
}
\NewDocumentCommand{\psum@scripts}{mm}{%
  \slimits@\IfValueT{#1}{_{#1}}\IfValueT{#2}{^{#2}}%
}
\makeatother

\begin{document}

\begin{gather*}
\psum_{i=0}^m x = \sum_{i=-1}^{m} x
\\
\sum_{i=-1}^{m} x = \psum^m_{i=0} x
\end{gather*}

\end{document}

在示例中,您可以看到可以按任意顺序输入下标和上标。

更新

随着 的版本更新xparse,上述代码应该改变。

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

\makeatletter
\newcommand{\psum}{\DOTSB\psum@}
\NewDocumentCommand{\psum@}{e{_^}}{%
  \sbox\z@{$\m@th\displaystyle'$}\kern-\wd\z@\!%
  \mathop{%
    \kern\wd\z@
    \smash{\sideset{}{'}\sum}%
    \vphantom{\sum}%
  }\slimits@\IfValueT{#1}{_{#1}}\IfValueT{#2}{^{#2}}%
}
\makeatother

\begin{document}

\begin{gather*}
\psum_{i=0}^m x = \sum_{i=-1}^{m} x
\\
\sum_{i=-1}^{m} x = \psum^m_{i=0} x
\end{gather*}

\end{document}

在此处输入图片描述

相关内容