bigcupのように機能するbigplus演算子を定義するにはどうすればよいですか?



How Can I Define Big Plus Operator That Works Like Bigcup



解決:

大きな演算子はどのように定義されていますか?での私の答えのぼったくり。 2つの完全に別個のマクロが提供されます( fooと barr)、希望するかどうかに応じて displaystyleバージョンを大きくするか、同じサイズのままにします textstyle。

 documentclass {article}  usepackage {amsmath}  DeclareMathOperator * { foo} { scalerel * {+} { sum}}  DeclareMathOperator * { barr} { scalerel * {+} { textstyle  sum}}  usepackage {scalerel}  begin {document}  [ foo_ {i = 3} ^ {6}(f ^ 2(i))]これはインラインです:( foo_ {i = 3} ^ {6} (f ^ 2(i))) [ barr_ {i = 3} ^ {6}(f ^ 2(i))]これはインラインです:( barr_ {i = 3} ^ {6} (f ^ 2(i))) end {document}

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




ビッグプラスと同じサイズを簡単に作ることができます和:

 documentclass {article}  usepackage {amsmath}  usepackage {graphicx}  makeatletter  newcommand { bigplus} {% DOTSB  mathop { mathpalette  [email protected]  Relax}  [email protected]}  newcommand  [電子メールで保護] [2] {% vcenter { hbox {% sbox  [電子メールで保護] {$#1  sum $}% resetbox {!} {0.9  dimexpr  ht  [電子メールで保護] +  dp  [email protected]} { raisebox { depth} {$  [email protected]#1 + $}}%}}% vphantom { sum}%}  makeatother  begin {document}  begin {center} %テストバウンディングボックス setlength { fboxsep} {0pt}  fbox {$  displaystyle  sum $}  fbox {$  displaystyle  bigplus $}  end {center}  [ sum_ {i = 1} ^ m  bigplus_ {j = 1} ^ n  dots  bigplus_ {k = 1} ^ p x_ {ijk} ]  begin {center}%テキストスタイルをテストする$  sum_ {i = 1} ^ m  bigplus_ {j = 1} ^ n  dots  bigplus_ {k = 1} ^ p x_ {ijk} $  end {center}  LARGE%サイズのテスト [ sum_ {i = 1} ^ m  bigplus_ {j = 1} ^ n  dots  bigplus_ {k = 1} ^ p x_ {ijk} ]  begin {center}%テキストスタイルをテストする$  sum_ {i = 1} ^ m  bigplus_ {j = 1} ^ n  dots  bigplus_ {k = 1} ^ p x_ {ijk} $  end {center}  end {document}

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




適切な予備アクションを実行せずに、LaTeX3コードをプリアンブルにコピーすることはできません。 LaTeX2eコードを使用して同じアイデアを実装する方法を以下に示します。このソリューションは、標準もサポートしていますドットと[に関するamsmathの動作番号]sumlimitsオプション:

%TeX.SXの標準ヘッダーの回答: documentclass [a4paper] {article}%混乱を避けるために、%紙のフォーマットを明示的に宣言しましょう。  usepackage [T1] {fontenc}%必ずしも必要ではありませんが、推奨されます。 %標準ヘッダーの終わり。以下は、目前の問題に関係します。  usepackage {amsmath}  makeatletter  newcommand *  @ bigplus [1] { vcenter { hbox {#1 $  [email protected] + $}}}  newcommand *  bigplus {% DOTSB%次の場合はこの行を省略しますamsmathパッケージを使用していません mathop {% mathchoice { @bigplus  huge}%{ @bigplus  LARGE}%{ @bigplus {}}%{ @bigplus  footnotesize}%}% [email保護]%amsmathパッケージを使用していない場合は、この行を省略します}  makeatother  begin {document}インライン:( bigplus_ {i = 3} ^ {6} f ^ 2(i))。表示: [ bigplus_ {i = 3} ^ {6} f ^ 2(i)]ドットを使用した動作: [ bigplus_ {i_ {1} = 0} ^ {n_ {1}}  dots  bigplus_ {i_ {k} = 0} ^ {n_ {k}} f(i_ {1}、 dots、i_ {k})]  end {document}

これは出力です:

コードの出力




添加

@egregが彼のコメントで指摘しているように、上記の回答は、ただし、mathtoolsパッケージは bigtimes-バグがあります。正しい解決策は、mathabxパッケージは、質問に記載されている内容とは異なり、 bigplus大きな演算子。このソリューションは、その目的のために特別に設計されたフォントから描画された文字を使用するため、グラフィック/Graphicxパッケージ;特に、DVI出力でも機能します(これが価値があるため)。

変更が気に入らない場合はmathabxパッケージは一般に数学記号に適用され、いつでも適切なフォントを自分でロードして、関心のあるコマンドのみを定義できます。次の例では、 bigplusだけでなく bigtimes。私にいくつかの発言をさせてください:

  • コードはの機能をサポートしていますパッケージがロードされている場合、ドットと制限に関するamsmathパッケージ。

  • 何に反してmathabxパッケージ自体は、mathxフォントファミリは、今日のディストリビューションにインストールされている小さいフォントサイズを利用できるように定義されています。

後者の工夫により、10ポイント未満のサイズで出力を改善できるため、を使用するソリューションよりも見栄えが良くなります。グラフィックスケーリング。

コードは次のとおりです。

%TeX.SXの標準ヘッダーの回答: documentclass [a4paper] {article}%混乱を避けるために、%紙のフォーマットを明示的に宣言しましょう。  usepackage [T1] {fontenc}%必ずしも必要ではありませんが、推奨されます。 %標準ヘッダーの終わり。以下は、目前の問題に関係します。  usepackage {amsmath}%コメントアウトして変更を確認 DeclareFontFamily {U} {mathx} { hyphenchar  font45}  DeclareFontShape {U} {mathx} {m} {n} {gen * mathx mathx10 mathx12} {}  DeclareFontSubstitution {U} {mathx} {m} {n}  DeclareSymbolFont {mathx} {U} {mathx} {m} {n}  DeclareMathSymbol { bigplus} { mathop} {mathx} {'90}  DeclareMathSymbol { bigtimes} { mathop} {mathx} {'91}  makeatletter  @ifpackageloaded {amsmath} {% @ifundefined {[email protected]} {} { typeout {*** amsmathパッチを protect  bigplus に適用するスペースと protect  bigtimes。 ***}  global  let  [メール保護]  bigplus  gdef  bigplus { DOTSB  [メール保護]  [メール保護]}  global  let  [メール保護]  bigtimes  gdef  bigtimes { DOTSB  [email protected]  [email protected]}}} {}  makeatother  begin {document}インライン:( bigplus_ {i = 3} ^ {6} f ^ 2(i))。表示: [ bigplus_ {i = 3} ^ {6} f ^ 2(i)]ドットのある動作: [ bigplus_ {i_ {1} = 0} ^ {n_ {1}}  dots  bigplus_ {i_ {k} = 0} ^ {n_ {k}} f(i_ {1}、 dots、i_ {k})]インライン:( bigtimes_ {i = 3} ^ {6} f ^ 2(i))。表示: [ bigtimes_ {i = 3} ^ {6} f ^ 2(i)]ドットのある動作: [ bigtimes_ {i_ {1} = 0} ^ {n_ {1}}  dots  bigtimes_ {i_ {k} = 0} ^ {n_ {k}} f(i_ {1}、 dots、i_ {k})]脚注でも機能するようになりました。 footnote {この例が示すように。インライン:( bigplus_ {i = 0} ^ {n} f(i))、( bigtimes_ {i = 0} ^ {n} f(i))。表示: [ bigplus_ {i = 0} ^ {n} f(i) ne  bigtimes_ {i = 0} ^ {n} f(i)]いいですね!}  LARGE  verb |  LARGE |文章。インライン:( bigtimes_ {i = 3} ^ {6} f ^ 2(i))。表示: [ bigtimes_ {i = 3} ^ {6} f ^ 2(i)]ドットを使用した動作: [ bigtimes_ {i_ {1} = 0} ^ {n_ {1}}  dots  bigtimes_ {i_ {k} = 0} ^ {n_ {k}} f(i_ {1}、 dots、i_ {k})]  end {document}

そして、これがそれが生み出す出力です:

2番目のコードサンプルの出力