如何声明“括号式”数学运算符

如何声明“括号式”数学运算符

这个问题很可能之前就被问过,但我无法以能够产生相关搜索结果的方式清晰地表达这个问题。

如何声明数学运算符来简化诸如 之类的表达式\langle x, y \rangle?我希望能够定义类似的东西\innerproduct{x, y}

答案1

我建议您加载该mathtools包并使用其\DeclarePairedDelimiter宏来定义一个名为的宏,例如\inprod。此方法会自动声明一个名为的配套宏,该宏会自动调整尖括号的大小。也可以通过编写、等\inprod*直接控制“围栏”的大小。\inprod[\big]{...}\inprod[\Big]{...}

在此处输入图片描述

\documentclass{article} 
\usepackage{mathtools}
\DeclarePairedDelimiter\inprod\langle\rangle
\begin{document}

$\inprod{a,b}$ 
$\displaystyle \inprod*{\frac{a}{b},\frac{c}{d}}$

\end{document}

答案2

该解决方案的一个变体,使用和包mathtools来处理空参数。它使用两个参数,用逗号分隔;如果某个参数为空,则用点替换:xparseetoolbox

\documentclass{article}
\usepackage{mathtools, nccmath}
\usepackage{xparse, etoolbox}

\DeclarePairedDelimiterX{\innerp}[1]{\langle}{\rangle}{\innpargs{#1}}
\NewDocumentCommand{\innpargs}{>{\SplitArgument{1}{,}}m}
{\innpargsaux#1}
\NewDocumentCommand{\innpargsaux}{mm}
{\ifblank{#1}%
{\ifblank{#2}{\,\cdot\,{,}\,\cdot\,}{{\,\cdot \,}{,}{\mkern2mu#2}}}%
{{#1\,}{,}\ifblank{#2}{\,\cdot\,}{\mkern2mu#2}}%
}%

%}%
\begin{document}

\[ \innerp{x, y}, \quad \innerp[\big]{\tfrac{1}{2}x, y} \quad \innerp*{\frac{x}{2}, y}\quad\innerp{x , }\quad \innerp{ , y}\quad \innerp{ , }\]

\end{document} 

在此处输入图片描述

答案3

事实上我记得有一次关于这个的对话,但我可能需要一段时间才能找到它。与此同时:

\documentclass{article}
\def\iprelay#1,#2{\langle#1,#2\rangle}
\def\ip#1{\iprelay#1}
\begin{document}
\[
\ip{a,b}
\]
\end{document}

相关内容