Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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)?

share|improve this question
    
Why don't you just use unicode-math, if you already use Xe/LuaLatex? –  Henri Menke May 13 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 May 13 at 20:02

1 Answer 1

up vote 4 down vote accepted

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

share|improve this answer
    
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 May 14 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. –  Henri Menke May 14 at 20:12

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.