我想创建以下形状的积分unicode-math 包符号列表:
不久前,我创建了自己的包来定义一些符号/快捷方式,我想重新创建这些符号(不是简单地从 unicode-math 导入它们,因为我希望它们与我用于数学的 MinionPro 字体相匹配,并且因为我希望积分是直立的(我在我的包中定义为\rint
)并创建了 MinionPro 中还没有的数学符号,我不想重新做我以前的所有工作)。
有一个问题这里要求类似的东西,但它只是在积分上施加一个符号。换句话说,积分贯穿符号并且重叠。我已经知道如何做到这一点,但正如你所看到的,我想要的积分在这里停止在输入点符号的地方(即它不与中间的任何符号相交)。
MinionPro(具体来说,MnSymbolF1
)已经在显示的最后一个积分中间有了符号,但我也不确定中间两个积分是否使用不同的符号,或者只是以某种方式移动/调整该符号的大小。MnSymbolF1
也有一个符号喜欢第一个积分中使用的那个,但我猜它被移动/翻转了,并且可能以某种方式调整了大小。
因此,我怎样才能创造我自己能做到这些符号以一种与 LuaTeX(或者至少是 XeTeX)兼容的方式吗?
答案1
评论
这是使用 TikZ 的解决方案,但要小心!
- 所有长度均通过手动微调进行调整,如果更改字体,则必须重新调整一切
- 您不能
\int_0^1
在此解决方案中使用正常限制(如),但您可以将限制作为可选参数传递,请参阅 MWE。
执行
\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}