Пробел перед надстрочным и подстрочным индексом

Пробел перед надстрочным и подстрочным индексом

Существует ли глобальный макрос для автоматического добавления пробела перед каждым надстрочным и подстрочным индексом в математике, присутствующей во всем документе?

решение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

Но, возможно, вы не хотите переписывать весь документ. Поскольку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}

Разумеется, в этом случае не следует использовать квадратные формы, они сломаны.

Связанный контент