如何创建新的数学运算符?

如何创建新的数学运算符?

我如何才能创建自己的可扩展数学运算符,就像求和符号一样具有限制?具体来说,我想发明一个类似于“[”的“连接”符号。例如,我想把

[ _{i=1}^N

等等,其中下标/上标位于符号的下方和上方,就像在“eqnarray”环境中一样。

我曾尝试使用\newcommand并创建类似于“[”的绘图\begin{picture} \end{picture},但没有成功。

谢谢您的帮助!

答案1

一个简单的解决方案是使用包\DeclareMathOperator*中的命令amsmath。无星号版本将下标和上标限制放在运算符的右侧;星号版本在显示样式中将限制放在运算符的上方和下方。

\DeclareMathOperator*{\concat}{[}将产生以下结果:

在此处输入图片描述

您可以保留原样,但对我来说,显示的版本生成的[符号太小了。使用该scalerel包,您可以将符号的大小设置为与\sum符号相同的大小:

\DeclareMathOperator*{\concat}{\scalerel*{[}{\sum}},结果如下: 在此处输入图片描述

以下是 MWE:

\documentclass{article}

\usepackage{amsmath,scalerel}

%\DeclareMathOperator*{\concat}{[}
\DeclareMathOperator*{\concat}{\scalerel*{[}{\sum}}

\begin{document}

\[
\concat_{n=1}^{\infty} a_n
\]

Inline: $\concat_{n=1}^{\infty} a_n$.

\end{document}

答案2

您可以使用修改后的版本https://tex.stackexchange.com/a/23436/4427(第一个代码集)。

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

\makeatletter
\DeclareRobustCommand\bigop[2][1]{%
  \mathop{\vphantom{\sum}\mathpalette\bigop@{{#2}{#1}}}\slimits@
}
\newcommand{\bigop@}[2]{\bigop@@#1#2}
\newcommand{\bigop@@}[3]{%
  \vcenter{%
    \sbox\z@{$#1\sum$}%
    \hbox{\resizebox{#3\dimexpr\ifx#1\displaystyle.9\fi\dimexpr\ht\z@+\dp\z@}{!}{$\m@th#2$}}%
  }%
}
\makeatother

\newcommand{\bigconcat}{\DOTSB\bigop[0.5]{[\,}}

\begin{document}
\[
\sum_{i=1}^n \bigconcat_{i=1}^n x_i
\qquad
\textstyle
\sum\bigconcat_{i=1}^n x_i
\qquad
\scriptstyle
\sum\bigconcat_{i=1}^n x_i
\qquad
\scriptscriptstyle
\sum\bigconcat_{i=1}^n x_i
\]
\end{document}

由于 TeX 的处理方式,缩放是必要的[

在此处输入图片描述

答案3

我的想法使用\left[\phantom{\sum}\right.技巧:

\def\concat{\mathop{\left[\vphantom{\sum}\right.}}

Test:
$\concat_{n=1}^\infty 
 \displaystyle \concat_{n=1}^\infty
 \scriptstyle \concat_{n=1}^\infty
$

\bye

相关内容