標準の統合シンボルとして動作する製品統合シンボルを作成する

標準の統合シンボルとして動作する製品統合シンボルを作成する

コンテクスト積分積分は、通常の積分(リーマン、ルベーグ、デンジョイ、ペロンなど)の連続的な類似物であり、常微分方程式のシステムに対するコーシー問題の解を表現するためのコンパクトな関数的方法を提供するために、1887年にヴィト・ヴォルテラによって導入されました。興味のある読者は、アントニーン・スラヴィークのこの本は、製品統合、その歴史と応用、Matfyzpress 2007年
通常の慣習では(上記の参考文献でもそうですが)、積分は、コードを使用して得られるものと同様の方法で、\Pi標準コマンドによって通常の「大文字の 」として表されます。\prod

\prod_0^t (1+r(s))^{\operatorname{d}s} 

しかしながら、論理的かつ明瞭な観点から見ると、これはやや不十分です。有限または無限の離散項の積に、無限の「無限小」項の積にも同じ記号を使用する必要があるのはなぜですか?
通常の積分の場合、この極限演算によって合計記号から記号が導き出され、一種のスクリプト形式の大文字の「S」になることがわかってい\sumます\int

解決すべき問題\pint私のアイデアは、スクリプト形式の大文字の「P」を出力し、シンボルとまったく同じように動作するコマンドを定義することです\int

  1. \pint標準コマンドであるべきである。
  2. コマンドに続く式は、シンボルの高さに応じてグラフィカルに中央揃えされる必要があります(標準シンボルの場合と同様\int)。
  3. \pint\limitsシンボルの上下に製品統合限界を設定するために使用するコマンドです\pint
  4. スクリプト スタイルの「P」は、 のようなものを使用する\mathscr{P}か、標準シンボルを変更して取得した .svg またはその他のベクター形式の画像を使用することで作成できます\int

求められているグラフィック結果を得ることを目的としたいくつかの実験私は次のようなプリアンブルコード宣言を使用して、このようなものを作成することができました。

\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathrsfs}
\usepackage{stix}
\newcommand{\dm}{\mathrm{d}}

次に、「標準スタイル」を取得するために、\pint次のコマンドを定義しました。

% Definition of Volterra's product integral, standard style.
\DeclareMathOperator{\pint}{{\mathlarger{\mathlarger{\mathlarger{\mathlarger{\mathscr{P}}}}}}}

これを文書の本文で として呼び出すと\pint_{\!\!\!\!\!\!0}^{t}(1+r(s))^{\dm s}、次のグラフィカル出力が生成されます。 ここに画像の説明を入力してください

その後、\int\limitsフレーバーコマンドを取得するために、次のものを定義し

% Definition of Volterra's product integral, \limits style.
\DeclareMathOperator*{\pint}{{\mathlarger{\mathlarger{\mathlarger{\mathlarger{\mathscr{P}}}}}}}

これを文書の本文で として呼び出すと\pint_{\!\!\!\!\!\!0}^{\quad t}(1+r(s))^{\dm s}、次のグラフィカル出力が生成されます。 ここに画像の説明を入力してください

得られたグラフィックの雰囲気は望んでいたものと似ていますが、提示された解決策は上記のポイントの最初のツリーに関してはやや不十分です。

  1. 下付き文字と上付き文字を正しく配置するには、コマンドを呼び出す\pintだけでは不十分です。「素手」で位置を微調整する必要があるためです。
  2. 表現グラフィック的に中央に配置されていないシンボルへの敬意\pint、そして最後に
  3. 動作を実現するには、\pint\limitsコマンドを完全に再定義する必要があります。

答え1

これが私の提案です

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx,mathrsfs}

\makeatletter
\NewDocumentCommand{\pint}{t\limits e{_^}}{%
  \DOTSI\pint@{#1}{#2}{#3}%
}
\NewDocumentCommand{\pint@}{mmm}{%
  \mathop{%
    \IfBooleanTF{#1}{\pint@limits}{\pint@nolimits}{#2}{#3}%
  }%
}

\NewDocumentCommand{\pint@limits}{mm}{%
  \mathpalette\pint@@limits{{#1}{#2}}%
}
\NewDocumentCommand{\pint@@limits}{mm}{%
  \pint@@@limits#1#2%
}
\NewDocumentCommand{\pint@@@limits}{mmm}{%
  \mathop{\vcenter{
    \sbox\z@{\raisebox{\depth}{$\m@th#1\int$}}%
    \hbox{\resizebox{!}{0.95\ht\z@}{$\m@th\mathscr{P}$}\vphantom{\box\z@}}%
  }}\limits\IfValueT{#2}{_{#2}}\IfValueT{#3}{^{\mspace{\if@display18\else9\fi mu}#3}}%
}

\NewDocumentCommand{\pint@nolimits}{mm}{%
  \mathpalette\pint@@nolimits{{#1}{#2}}%
}
\NewDocumentCommand{\pint@@nolimits}{mm}{%
  \pint@@@nolimits#1#2%
}
\NewDocumentCommand{\pint@@@nolimits}{mmm}{%
  \vcenter{
    \sbox\z@{\raisebox{\depth}{$\m@th#1\int$}}%
    \hbox{\resizebox{!}{0.95\ht\z@}{$\m@th\mathscr{P}$}\vphantom{\box\z@}}%
  }\IfValueT{#2}{_{\mspace{-\if@display24\else12\fi mu}#2}}\IfValueT{#3}{^{#3}}%
}

\makeatother

\begin{document}

\[
\pint_a^b \int_a^b \pint\limits_a^b \int\limits_a^b
\]
\begin{center}
$\pint_a^b \int_a^b \pint\limits_a^b \int\limits_a^b$
\end{center}

\end{document} 

ここに画像の説明を入力してください

パッケージについて触れておきたいと思いますprodint。ただし、少しひねりを加えています。

\documentclass{article}
\usepackage{amsmath}
\usepackage{prodint}

\makeatletter
\newcommand\pint{\DOTSI\if@display\PRODI\else\prodi\fi\ilimits@}
\makeatother

\begin{document}

\[
\pint_a^b \int_a^b \pint\limits_a^b \int\limits_a^b
\]
\begin{center}
$\pint_a^b \int_a^b \pint\limits_a^b \int\limits_a^b$
\end{center}

\end{document}

ここに画像の説明を入力してください

答え2

私の回答をそのまま引用すると、ビッグオペレーターはどのように定義されますか?ここで、は と同様に\fooにおいてより大きな記号を与えますが、 は表示数式においても に関連付けられた記号のサイズを保持します。\displaystyle\int\barr\textstyle

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\DeclareMathOperator*{\foo}{\scalerel*{\mathscr{P}}{\sum}}
\DeclareMathOperator*{\barr}{\scalerel*{\mathscr{P}}{\textstyle\sum}}
\usepackage{mathrsfs}
\usepackage{scalerel}

\begin{document}
\[
\foo_{i=3}^{6}(f^2(i))
\]

This is inline: \(\foo_{i=3}^{6}(f^2(i)) \)

\[
\barr_{i=3}^{6}(f^2(i))
\]

This is inline: \(\barr_{i=3}^{6}(f^2(i)) \)
\end{document} 

ここに画像の説明を入力してください

Micoは、\barrどちらのスクリプトスタイルでも使用すべきではないと指摘していますが、これは事実です。その使用法が必要な場合は、代わり\barrに次のように定義できます。

\DeclareMathOperator*{\barr}{\scalerel*{\mathscr{P}}{\mathchoice
  {\textstyle\sum}{\sum}{\sum}{\sum}}}

上記の MWE では、「P」は と同じサイズに拡大縮小されています\sum。 のサイズに拡大縮小したい場合は、各 のを に\int置き換えるだけで、結果は次のようになります。\sum\int\DeclareMathOperator

ここに画像の説明を入力してください

答え3

私の意見では、積分の関数表記(1文字)は積分記号よりもシンプルで経済的です。dx必要に応じて積分変数を明示的に表示でき(使用されない に隠すのではなく)、次元に依存しません。また、表記は授業中に黒板に書き込むときに簡単に使用できる必要があります。したがって、単純なもので\DeclareMathOperator*{\pint}{\mathbf{P}}十分ですが、以下の例では、区別するためにネックが長いフォントが使用されており、手書きでも簡単に再現できます。

\documentclass{article}
\usepackage{amsmath}
\usepackage{scalerel}

% for longer neck letters but don't use them by default
\usepackage[nodefault,typeone]{drm}

% 
\newcommand{\drm}[1]{{\fontfamily{drm}\selectfont #1}}

% Longer neck P
\DeclareMathOperator*{\pint}{\textrm{\drm{P}}}

% Longer neck P large operator
\DeclareMathOperator*{\Pint}{\scalerel*{\textrm{\drm{P}}}{\int}}
\begin{document}

\begin{tabular}{ll}
  $\pint_a^b(1+r(s))$
  & $\displaystyle \pint_a^b(1+r(s))$\\[1cm]
  $\pint_{s \in [a,b]}(1+r(s))$
  & $\displaystyle \pint_{s \in [a,b]}(1+r(s))$\\[1cm]
  $\pint_{(s,t) \in [a,b]\times[c,d]}(1+r(s,t))$
  & $\displaystyle \pint_{(s,t) \in [a,b]\times[c,d]}(1+r(s,t))$\\[1cm]
  $\pint_{s^2+t^2=1}(1+r(s,t))$
  & $\displaystyle \pint_{s^2+t^2=1}(1+r(s,t))$\\[1cm]
  $\Pint_{s^2+t^2=1}(1+r(s,t))$
  & $\displaystyle \Pint_{s^2+t^2=1}(1+r(s,t))$
\end{tabular}

\end{document}

積分記号

関連情報