在积分符号上叠加字母

在积分符号上叠加字母

大家下午好,

我正在尝试排版一个用来表示受控函数积分的符号。这个符号是标准积分符号,上面叠加了字母“R”。

我曾尝试使用\mathllap,\mathclap\mathrlap(按照建议这里),但这些方法都没有达到预期的效果。当我尝试在不使用积分极限的情况下进行操作时,它几乎可以正常工作,但是我无法将极限设置在符号的右侧:

\mathop{\mathrlap{\int}R}_a^b f

如能得到任何帮助我将非常感激,提前谢谢您!

最小示例:

\documentclass{article}

\usepackage{amsmath,mathtools}

\begin{document}

Take the regulated function $f$, we want to compare the Riemann integral, $\int_a^b f$
to the regulated integral $\mathop{\mathrlap{\int}R}_a^b f$ by taking sequences of step
functions.

We will prove that
$$
\mathop{\mathrlap{\int}R}_a^b f = \int_a^b f
$$

\end{document}

答案1

以下示例定义了在积分符号上\Rint叠加一个R。如果在中使用积分\displaystyle,则积分大小通常很大,\textstyle用于R。否则,如果的总高度超过积分总高度的 40%,\scriptscriptstyle则使用或缩小。R

评论:

  • 放置R在积分符号的字形框的中间,水平和垂直居中。

  • \Rint支持\dots\amsmath。如果后面跟着积分,点会自动放置在数学轴上。

  • 的最后一个命令\Rint\int,因此下标和上标的行为与往常一样。

  • 如果积分符号比字母窄,可能R会稍微向左突出。但通常中间有足够的空间,甚至如果积分没有使用下标/上标,TeX 也会在数学运算符 ( \mathop) 之间留出一个狭窄的空间。

\documentclass[a5paper]{article}

\usepackage{graphicx}
\usepackage{etoolbox}

% Packages for testing
\usepackage{amsmath}
%\usepackage{MnSymbol}
%\usepackage{mathabx}
%\usepackage{txfonts}


\makeatletter
\let\DOTSI\relax % amsmath support for \dots
\newcommand*{\Rint}{%
  \DOTSI
  \mathop{%
    \mathpalette\@LetterOnInt{R}%
  }%
  \mkern-\thinmuskip % thin space is inserted between two \mathop
  \int
}
\newcommand*{\@LetterOnInt}[2]{%
  \sbox0{$#1\int\m@th$}%
  \sbox2{$%
    \ifx#1\displaystyle
      \textstyle
    \else
      \scriptscriptstyle
    \fi
    #2%
  \m@th$}%
  \dimen@=.4\dimexpr\ht0+\dp0\relax
  \ifdim\dimexpr\ht2+\dp2\relax>\dimen@
    \sbox2{\resizebox*{!}{\dimen@}{\unhcopy2}}%
  \fi
  \dimen@=\wd0 %
  \ifdim\wd2>\dimen@
    \dimen@=\wd2 %
  \fi
  \rlap{\hbox to \dimen@{\hfil
    $#1\vcenter{\copy2}\m@th$%
  \hfil}}%
  \ifdim\dimen@>\wd0 %
    \kern.5\dimexpr\dimen@-\wd0\relax
  \fi
}
\makeatother

\begin{document}

Take the regulated function $f$, we want to compare the Riemann integral,
$\int_a^b f$
to the regulated integral $\Rint_a^b f$ by taking
sequences of step
functions.

We will prove that
\[
  \Rint_a^b f = \int_a^b f
\]

\[
  \displaystyle      \int_a^b f \dots \Rint_a^b f \qquad
  \textstyle         \int_a^b f \dots \Rint_a^b f \qquad
  \scriptstyle       \int_a^b f \dots \Rint_a^b f \qquad
  \scriptscriptstyle \int_a^b f \dots \Rint_a^b f
\]

\end{document}

结果

答案2

使用该stackengine软件包,您可以得到一个不完美的解决方案,因为它需要手动更正下限。我定义一个 \Rint 数学运算符如下:

\documentclass[ a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage[]{stackengine}
\DeclareMathOperator{\Rint}{\ensurestackMath{\stackinset{c}{0pt}{c}{0pt}{\mathrm R}{\displaystyle\int}}}
\newlength\correct
\settowidth{\correct}{\ensuremath{\displaystyle\int}}

\begin{document}

 \begin{align*}
    & \Rint  f(x) \,\mathrm d x  \\
    &  \Rint_{\hspace*{-0.5\correct}a}^b  f(x) \,\mathrm d x \\
     & \int_a^b  f(x) \,\mathrm d x
 \end{align*}

\end{document}

在此处输入图片描述

使用\mathchoice,可以为 textstyle、scriptstyle 和 scriptscriptstyle 定义 \Rint。如果您对 R 的位置不太满意,可以将 0pt 和 0pt(水平和垂直偏移)的值更改为其他值。

添加:Steven B. Segletes 建议不要手动调整积分的下限,以及使用 \mathchoice:

\documentclass[ a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage[]{stackengine}

\newlength\tmplength
 \def\showmybox{\tmplength=\wd0\relax\box0\kern-\tmplength}
 \def\mybox#1{\setbox0=\hbox{\ensurestackMath{#1}}}
 \def\SIn#1#2{\stackinset{c}{#1}{c}{#2}}
  \def\Rint{\mathchoice%
  {\mybox{\SIn{0.7pt}{0pt}{\mathrm R}{\displaystyle\phantom{int}}}\showmybox}% 0pt
  {\mybox{\SIn{-1.2pt}{0pt}{\scriptstyle\mathrm R}{\textstyle\phantom{int}}}\showmybox}% -1.5pt
  {\mybox{\SIn{-1.1pt}{0pt}{\scriptscriptstyle\mathrm R}{\scriptstyle\phantom{int}}}\showmybox}%
  {\mybox{\SIn{-1.65pt}{0pt}{\scalebox{0.7}{$\scriptscriptstyle\mathrm R$}}{%
     \scriptscriptstyle\phantom{int}}}\showmybox}%
   \int}

\begin{document}

 \begin{align*}
    & \Rint  f(x) \,\mathrm d x  \\
    &  \Rint_{a}^b  f(x) \,\mathrm d x \\%
     & \textstyle \Rint_a^b  f(x) \,\mathrm d x  \\
     & \scriptstyle \Rint_a^b  f(x) \,\mathrm d x  \\
     & \scriptscriptstyle \Rint_a^b  f(x) \,\mathrm d x  \\
 \end{align*}

\end{document} 

在此处输入图片描述

当然,就术语而言,hoffset 所选择的值stackengine取决于所使用的字体。

答案3

尝试以下示例:

\documentclass{article}

\usepackage{amsmath,mathtools}

\begin{document}

Take the regulated function $f$, we want to compare the Riemann integral, $\int_a^b f$
to the regulated integral $\mathop{\mathrlap{\scriptsize\, R}\int_a^b} f$ by taking sequences of step
functions.

We will prove that
$$
\mathop{\mathrlap{\: R}\int_a^b} f = \int_a^b f
$$

\end{document}

我得到了以下输出:

更新图像以裁剪侧面

请注意,重叠对象的顺序是相反的,并且您必须将限制设置为\int_a^b,否则amsmath包不知道 a 和 b 是极限。

另外,请注意内联数学部分的技巧。


编辑:使用更正的图像和代码更新了答案。

相关内容