是否有一个全局宏可用于在整个文档中存在的每个数学上标和下标前自动添加空格。
答案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}
但也许你不想重写整个文档。由于替代子目录^
包将和的原始定义保存_
在\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}
显然,在这种情况下不要使用方形,它们是不完整的。