4

I want to create the following shaped integrals found in the unicode-math package symbols list:

enter image description here

I created my own package a while ago for defining some symbols/shortcuts, and I want to recreate these symbols (not simply import them from unicode-math because I want them to match the MinionPro font that I use for math, and since I want integrals to be upright (which I defined in my package as \rint) and created symbols not already in MinionPro for math I don't want to have to re-do all my previous work).

There is a question here that asks something similar, but it's only for imposing a symbol on an integral. In other words, the integral runs through the symbol and it overlaps. I already know how to do this but as you can see, the integrals I want here stop where the point symbol is entered (i.e. it doesn't intersect with whatever symbol is in the middle).

MinionPro (specifically, MnSymbolF1) already has the symbol in the middle of the last integral shown, but I'm also not sure if the middle two integrals use different symbols or simply shift/resize that symbol somehow. MnSymbolF1 also has a symbol like the one used in the first integral, but I guess shifted/flipped and possibly resized somehow.

Thus, how can I create these symbols by myself, in a way that's compatible with LuaTeX (or at least XeTeX)?

2
  • Why don't you just use unicode-math, if you already use Xe/LuaLatex? Commented May 13, 2014 at 19:43
  • @HenriMenke as I mentioned in the first paragraph, I want the integrals to match the MinionPro font that I use for math.
    – Alborz
    Commented May 13, 2014 at 20:02

1 Answer 1

4

Remarks

Here is a solution with TikZ, but beware!

  • All the lengths are adjusted by manual finetuning, if you change the font, you will have to readjust everything
  • You can't use normal limits (like \int_0^1) with this solution, but you have the possibility to pass the limits as optional arguments, see MWE.

Implementation

\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage[minionint,mathlf]{MinionPro}
\usepackage{tikz}
\tikzset{
  dot/.style = {draw,fill,circle,inner sep=\pgflinewidth}
}
\makeatletter
\newcommand\rppolint[1][]{\mathpalette\@rppolint{#1}}
\newcommand\@rppolint[2]{
  \mathop{
    \tikz[baseline=(int.base),every node/.style={inner sep=0pt,outer sep=0pt}]{
      \node (int) at (0,0) {%
        \setbox0=\hbox{$#1\int$}%
        \hbox to \wd0{$#1\int#2$\hss}
      };
      \fill[white] (-2.5pt+.5\pgflinewidth,-2.5pt+.5\pgflinewidth) rectangle (2.5pt-.5\pgflinewidth,2.5pt-.5\pgflinewidth);
      \draw (0,2.5pt) -| (2.5pt,-2.5pt) -- (-0.8pt,-2.5pt);
      \node[dot] at (0,0) {};
    }
  }\nolimits
}
\newcommand\scpolint[1][]{\mathpalette\@scpolint{#1}}
\newcommand\@scpolint[2]{
  \mathop{
    \tikz[baseline=(int.base),every node/.style={inner sep=0pt,outer sep=0pt}]{
      \node (int) at (0,0) {%
        \setbox0=\hbox{$#1\int$}%
        \hbox to \wd0{$#1\int#2$\hss}
      };
      \fill[white] (0,0) circle (2.5pt-.5\pgflinewidth);
      \draw (85:2.5pt) arc (85:-110:2.5pt);
      \node[dot] at (0,0) {};
    }
  }\nolimits
}
\newcommand\npolint[1][]{\mathpalette\@npolint{#1}}
\newcommand\@npolint[2]{
  \mathop{
    \tikz[baseline=(int.base),every node/.style={inner sep=0pt,outer sep=0pt}]{
      \node (int) at (0,0) {%
        \setbox0=\hbox{$#1\int$}%
        \hbox to \wd0{$#1\int#2$\hss}
      };
      \begin{scope}[shift={(1.1pt,0)}]
        \fill[white] (0,0) circle (2.5pt-.5\pgflinewidth);
        \draw (110:2.5pt) arc (110:-130:2.5pt);
        \node[dot] at (0,0) {};
      \end{scope}
    }
  }\nolimits
}
\newcommand\pointint[1][]{\mathpalette\@pointint{#1}}
\newcommand\@pointint[2]{
  \mathop{
    \tikz[baseline=(int.base),every node/.style={inner sep=0pt,outer sep=0pt}]{
      \node (int) at (0,0) {%
        \setbox0=\hbox{$#1\int$}%
        \hbox to \wd0{$#1\int#2$\hss}
      };
      \filldraw[fill=white] (0,0) circle (2.5pt-.5\pgflinewidth);
      \node[dot] at (0,0) {};
    }
  }\nolimits
}
\begin{document}
$
\displaystyle \rppolint[_0^1]
\textstyle    \rppolint[_0^1]
\displaystyle \scpolint[_0^1]
\textstyle    \scpolint[_0^1]
\displaystyle \npolint[_0^1]
\textstyle    \npolint[_0^1]
\displaystyle \pointint[_0^1]
\textstyle    \pointint[_0^1]
$
\end{document}

enter image description here

2
  • This is a great answer, I just wish the middle part (the circles/squares) would also resize when the integral is in different scales, but I think (hope) I can figure that out on my own? Anyways I really appreciate the effort you put into this, thank you!
    – Alborz
    Commented May 14, 2014 at 16:50
  • @Alborz Use a unit that scales with text or math like ex or em. I'm not sure if mu also scales. Commented May 14, 2014 at 20:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .