大家下午好,
我正在尝试排版一个用来表示受控函数积分的符号。这个符号是标准积分符号,上面叠加了字母“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 是极限。
另外,请注意内联数学部分的技巧。
编辑:使用更正的图像和代码更新了答案。