我想在 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
定义这种宏的一个直接方法是
\newcommand{\ang}[1]{\langle #1 \rangle}
如果你需要尖括号的大小随着参数的大小而增长,你可能需要定义\ang
为
\newcommand{\ang}[1]{\mleft\langle #1 \mright\rangle}
其中\mleft
和\mright
是左右包。使用\mleft
and\mright
代替\left
and\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}