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