# How to create your own integral sign with limits

Following on from this question, I'd like to be able to do this but with an integral sign.

The proposed solution is the following:

\newcommand{\opA}{\mathop{\vphantom{\sum}\mathchoice
{\vcenter{\hbox{\huge A}}}
{\vcenter{\hbox{\Large A}}}{\mathrm{A}}{\mathrm{A}}}\displaylimits}


I tried to modify this for an integral sign:

\newcommand{\integral}[2]{\mathop{\vphantom{\int}\mathchoice
{\huge\int #1 \, d#2}
{\Large\int #1 \, d#2}{\mathrm{A}}{\mathrm{A}}}\displaylimits}


Applying this via \integral{x}{x}_0^1 for instance then gives the following:

However, this centres the limits above and below the integral instead of where you want them at the left.

So my question is: how to align them in the right place? Also, what should I write instead of \mathrm{A} in the other two type modes that are shown above?

Thanks!

• Possibly related: tex.stackexchange.com/questions/39181/big-integral-sign, tex.stackexchange.com/questions/116506/…. See, also, \DeclareMathOperator macro from the amsmath package. May 4, 2017 at 11:01
• Have you tried using makebox or hspace commands? May 4, 2017 at 11:02
• unrelated, but you also might want to put $d$ in a mathrm environment since it's an operator, not a variable May 4, 2017 at 11:05
• @JJM Driessen, no I haven't as I don't know much about it, would using those still allow you to use _0^1 to specify the limits? May 4, 2017 at 11:38

Easy but inflexible answer

\def\integral#1#2_#3^#4{\int_{#3}^{#4}\mathopen{}#1\mathclose{}\mathop{}\!d#4\mathclose{}}


And then you have to always use the command with the limits and in that order. So if you don't want limits you would need \integral{f(x)}{x}_{}^{}.

A better solution would be xparse, but I cannot try if it works correctly right now (if someone checks and it doesn't work I will remove it).

\usepackage{xparse}
\NewDocumentCommand\integral{ m m e{_^} }{\integralaux{#1}{#2}#3}
\NewDocumentCommand\integralaux{mmmm}
{\int\IfValueT{#3}{_{#3}}\IfValueT{#4}{^{#4}}%
\mathopen{}#1\mathclose{}\mathop{}\!d#2\mathclose{}}


With this second version, you can use with flexibility \integral{x}{x}, \integral{x}{x}_{a}, \integral{x}{x}^{a}, \integral{x}{x}_{a}^{b}, \integral{x}{x}^{a}_{b}.

Also, it's possible to do it with \@ifnextchar and classical LaTeX, and has already been done in this site.

You might do something like this, but note the name I gave to the new command.

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

\mathop{
\mathchoice
{\displaystyle\mathlarger{\mathlarger{\int_{\mathsmaller{\mathsmaller{#1}}}^{\mathsmaller{\mathsmaller{#2}}}}}}
{\textstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
{\scriptstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
{\scriptscriptstyle\mathlarger{\int_{\mathsmaller{#1}}^{\mathsmaller{#2}}}}
}
}

\begin{document}
$\badint_0^1 f(x)\,dx \ne \int_0^1 f(x)\,dx \qquad \textstyle \badint_0^1 f(x)\,dx \ne \int_0^1 f(x)\,dx$

\end{document}


I find the output really ugly.