下标为 \rangle,水平间距

下标为 \rangle,水平间距

我需要一个命令,将参数 #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}

MWE 的输出

答案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} 

相关内容