我需要一个命令,将参数 #1 包装在\left\langle
-中\right\rangle
,并将 #2 作为结束的下标,就像我的 MWE 中的\rangle
命令一样。\simple
然而,对于较大的角度,角度和下标之间的水平间距会变得太大。
我在命令中第一次尝试\better
使用固定负间距,但这只对一种特定的垂直尺寸有所改进。我需要的是一个根据 #1 的垂直尺寸选择适当偏移量的变体。
梅威瑟:
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\newcommand{\simple}[2]{\left\langle#1\right\rangle_{#2}}
\newcommand{\better}[2]{\left\langle#1\right\rangle_{\hspace*{-0.8ex}#2}}
\begin{document}
simple:
$\displaystyle \simple{\frac{a}{b}}{x}$
desired:
$\displaystyle \better{\frac{a}{b}}{x}$
however:
$\displaystyle \better{a}{x}$
$\displaystyle \better{\frac{\frac{a}{b}}{b}}{x}$
\end{document}
答案1
不要随意添加\left
和\right
。
这是我的建议:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,mathtools}
\DeclarePairedDelimiter{\anglebrackets}{\langle}{\rangle}
\NewDocumentCommand{\better}{some{_^}}{%
\IfBooleanTF{#1}{% *
\anglebrackets*{#3}%
\IfValueT{#4}{_{\!#4}}% subscript
\IfValueT{#5}{^{\!#5}}% superscript
}{%
\IfNoValueTF{#2}{%
\anglebrackets{#3}%
\IfValueT{#4}{_{#4}}% subscript
\IfValueT{#5}{^{#5}}% superscript
}{%
\anglebrackets[#2]{#3}%
\IfValueT{#4}{_{\!#4}}% subscript
\IfValueT{#5}{^{\!#5}}% superscript
}%
}%
}
\begin{document}
\begin{gather}
\better{a+b} \\
\better{a+b}_{x} \\
\better[\Big]{a+b}_{x} \\
\better*{\frac{a}{b}}_{x}
\end{gather}
\end{document}
如果有下标,则进行轻微的推移。上标也一样。
答案2
这是一个使用 的解决方案\DeclarePairedDelimiterXPP
,这是由数学工具包,以创建更好的宏版本\better
[双关语]。您可以调用\better
照原样,并带有明确的尺寸指令,例如,\better[\big]
或,\better*
以便让 LaTeX 自动计算尖括号分隔符的尺寸。如果尖括号分隔符非常大,下标术语可能需要额外的对齐微调。
\documentclass[border=1pt]{standalone}
\usepackage{mathtools} % for '\DeclarePairedDelimiterXPP' macro
\DeclarePairedDelimiterXPP{\better}[2]%
{}{\langle}{\rangle}{_{\!#2}}{#1}
\begin{document}
$\displaystyle
\better{a}{x} \quad
\better[\Big]{\frac{a}{b}}{x} \quad
\better*{\frac{a}{b}}{x} \quad
\better*{\frac{\frac{a}{b}}{b}}{\!x}$
\end{document}