
Существует ли глобальный макрос для автоматического добавления пробела перед каждым надстрочным и подстрочным индексом в математике, присутствующей во всем документе?
решение1
Нет. Пространство после контролируется, а пространство перед — нет, оно всегда прикреплено непосредственно к основанию.
решение2
Я являюсь автором пакета.altsubsupкоторый предоставляет альтернативные форматы для нижних и верхних индексов при использовании с квадратными скобками, например _[...]
или ^[...]
.
Вы можете определить свою собственную команду и задать ее с помощью
\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}
Разумеется, в этом случае не следует использовать квадратные формы, они сломаны.