上标和下标前的空格

上标和下标前的空格

是否有一个全局宏可用于在整个文档中存在的每个数学上标和下标前自动添加空格。

答案1

不可以。可以控制后空间,但不能控制前空间,它始终直接附着在基座上。

答案2

我是该包的作者替代子目录当与方括号一起使用时,它为下标和上标提供了替代格式,如_[...]^[...]

您可以定义自己的命令并将其设置为

\newcommand*{\mysubsupformat}[1]{\,#1}% add a thin space
\SetAltSubSupCommands{\mysubsupformat}

然后,所有用方括号写的下标和上标都将用命令进行格式化\mysubsupformat

完整示例

\documentclass{article}

\usepackage{amsmath}% for align*

\usepackage{altsubsup}
\newcommand*{\mysubsupformat}[1]{\,#1}% add a thin space
\SetAltSubSupCommands{\mysubsupformat}

\begin{document}

\begin{align*}
  x_a &  & x^b &  & x_a^b \\
  x_[a] &  & x^[b] &  & x_[a]^[b]
\end{align*}

\end{document}

使用 altsubsup 替代命令

但也许你不想重写整个文档。由于替代子目录^包将和的原始定义保存_\altsbsp@standardsub和中\altsbsp@standardsup,您可以尝试破解它们(在中,\AtBeginDocument因为它们是在那里创建的,并且使用\maketatletter和来处理宏名中的\makeatother字符):@

\makeatletter
\AtBeginDocument{%
  \let\rampsmart@standardsub\altsbsp@standardsub
  \def\altsbsp@standardsub#1{\rampsmart@standardsub{\,#1}}% add a thin space
  \let\rampsmart@standardsup\altsbsp@standardsup
  \def\altsbsp@standardsup#1{\rampsmart@standardsup{\,#1}}% add a thin space
}
\makeatother

完整示例:

\documentclass{article}

\usepackage{amsmath}% for align*

\usepackage{altsubsup}

\makeatletter
\AtBeginDocument{%
  \let\rampsmart@standardsub\altsbsp@standardsub
  \def\altsbsp@standardsub#1{\rampsmart@standardsub{\,#1}}% add a thin space
  \let\rampsmart@standardsup\altsbsp@standardsup
  \def\altsbsp@standardsup#1{\rampsmart@standardsup{\,#1}}% add a thin space
}
\makeatother


\begin{document}



\begin{align*}
  x_a &  & x^b &  & x_a^b
\end{align*}

\end{document}

显然,在这种情况下不要使用方形,它们是不完整的。

相关内容