使用参数和尖括号定义新函数

使用参数和尖括号定义新函数

我想在 LaTeX 文档中定义一个函数。更准确地说,我想定义一个函数,比如 ,\ang{x}其中x任意输入为 ,输出为\rangle x \langle。有没有办法使用 来实现这一点\newcommand,或者根本就没有办法?

答案1

我通常\DeclarePairedDelimiter使用mathtools类似这样的情况。重点是,使用带星号的版本,分隔符会自动缩放。

您可以使用许多不同的括号,并且可以使宏​​采用多个参数。

\documentclass{article}

\usepackage{mathtools}
\DeclarePairedDelimiter\bra{\langle}{\rvert}
\DeclarePairedDelimiter\ket{\lvert}{\rangle}
\DeclarePairedDelimiterX\braket[2]{\langle}{\rangle}{#1\,\delimsize\vert\,\mathopen{}#2}
\DeclarePairedDelimiterX\inner[2]{\langle}{\rangle}{#1,#2}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}
\DeclarePairedDelimiter\norm{\lVert}{\rVert}
\DeclarePairedDelimiter\set{\lbrace}{\rbrace}

\begin{document}

\begin{align*}
  \bra{a}       &= \bra*{\frac{a}{1}}\\
  \ket{a}       &= \ket*{\frac{a}{1}}\\
  \braket{a}{b} &= \braket*{\frac{a}{1}}{\frac{b}{1}}\\
  \inner{a}{b}  &= \inner*{\frac{a}{1}}{\frac{b}{1}}\\
  \abs{a}       &= \abs*{\frac{a}{1}}\\
  \norm{a}      &= \norm*{\frac{a}{1}}\\
  \set{a,b}     &= \set*{\frac{a}{1},\frac{b}{1}}
\end{align*}

\end{document}

输出2

答案2

定义这种宏的一个直接方法是

\newcommand{\ang}[1]{\langle #1 \rangle}

如果你需要尖括号的大小随着参数的大小而增长,你可能需要定义\ang

\newcommand{\ang}[1]{\mleft\langle #1 \mright\rangle}

其中\mleft\mright左右包。使用\mleftand\mright代替\leftand\right具有某些优势,特别是在 TeX 插入空格填充方面。

无论哪种方式,\ang都采用一个参数,该参数将用左尖括号和右尖括号括起来进行排版。

答案3

你可能想看看bropd包裹。

它具有br{}更高级的命令。它匹配括号的大小并自动使用圆括号、方括号或花括号。

\begin{equation}
    \frac{1}{2}\br{f\cdot\br{x \br{y+z} + \br{\frac{a}{b}+c} }+g}
\end{equation}

在此处输入图片描述

相关内容