我想创建一个新的“大运算符”,它指的是用于求和的 Σ 字符。
我知道这个\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
编辑:使用scalerel
1.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 位置处有一个更大版本的字符。