大运营商如何定义?

大运营商如何定义?

我想创建一个新的“大运算符”,它指的是用于求和的 Σ 字符。

在此处输入图片描述

我知道这个\DeclareMathOperator*命令,它会创建一个运算符,其上标和下标分别写在运算符的正上方和正下方。下面是一个例子。

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\DeclareMathOperator*{\foo}{\maltese}

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

在此处输入图片描述

但是,我想让我的运算符“变大”。我尝试了这个:

\DeclareMathOperator*{\foo}{\text{\Large $\maltese$}}

在此处输入图片描述

但这感觉有点像黑客行为。此外,运算符太高,需要向下移动一点才能与操作数正确对齐。那么,恰当的怎么做呢?例如,\sum操作符是如何定义的?

答案1

scalerel包允许您将一个符号缩放为另一个符号的大小(和垂直定位)​​。因此,在本例中,我定义\foo缩放\maltese为 的大小\sum。因此,它的大小调整依赖于 明确定义的行为\sum

我不清楚提问者是否想让马耳他十字在所有操作中保持相同的大小。但是,如果是这样的话,我可以将\foo运算符重新定义为,\barr以保持其大小等于求和textstyle符号的大小。下面的示例显示了displaystyle 和 inline 中的\foo以及的实例。\barr

编辑:使用scalerel1.5 或更高版本以确保scalerel捕获当前的数学样式。

\documentclass{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\DeclareMathOperator*{\foo}{\scalerel*{\maltese}{\sum}}
\DeclareMathOperator*{\barr}{\scalerel*{\maltese}{\textstyle\sum}}
\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} 

在此处输入图片描述

答案2

\sum未用 定义的运算符\DeclareMathOperator应该(带或不带*)用于“文本”运算符。

的定义\sum

\DeclareMathSymbol{\sum}{\mathop}{largesymbols}{"50}

从内部来看,

\mathchardef\sum="1350

该宏\DeclareMathOperator使用\mathop,它具有一个奇怪的属性:如果它的参数是一个字符,它将被升高或降低,以便它相对于数学轴(分数线的排版位置)居中。

由于没有 的“大版本” \maltese,因此必须借助其他方法来从中构建一个好的符号。事实上,数学字体的属性之一是,一些字符有说明,告诉在哪里可以找到它的“大版本”。

TeX 有一个解决方法,称为\mathchoice;因此你可以使用类似如下的方法:

\documentclass[fleqn]{article}
\usepackage{amssymb}

\newcommand{\bigmaltese}{%
  \mathop{ % we want it to be an operator
    \mathchoice{\dobigmaltese\Large}
               {\dobigmaltese\large}
               {\dobigmaltese\normalsize}
               {\dobigmaltese\small}
    }\displaylimits % not necessary, but added for clarity
}

\newcommand{\dobigmaltese}[1]{%
  \vcenter{#1\kern.2ex\hbox{$\maltese$}\kern.2ex}}

\begin{document}
Here's in text, $\bigmaltese_{i=1}^n x_i$, next in display
\[
\bigmaltese_{i=1}^n x_i
\]
\end{document}

我们为每种样式定义我们想要的样式。该\dobigmaltese命令构建一个以公式轴为中心的框。我在上方和下方添加了一些空间。当整体字体大小发生变化时,这不会改变大小;需要使用略有不同的方法。

在此处输入图片描述

答案3

如果你执行

tftopl cmex10.tfm > cmex10.pl

看看字符八进制 120 (=十六进制 50),你会看到

(CHARACTER O 120
   (CHARWD R 1.055559)
   (CHARDP R 1.000013)
   (NEXTLARGER O 130)
   )

它告诉您(或至少告诉 TeX)在八进制 130 位置处有一个更大版本的字符。

相关内容