Автоматический интервал между символами

Автоматический интервал между символами

Мне интересно, как автоматически добавить небольшой интервал вокруг символов, написанных вместе.

Предположим, у нас есть символы Aи Bкоторые представляют некоторые абстрактные объекты. Мы определяем команды \Aи \Bкоторые вставляют символы.

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

Теперь я хотел бы иметь немного пространства между этими символами, когда они пишутся вместе с другими символами. К сожалению, с приведенными выше определениями необходимо добавлять эти пробелы явно.

Желаемый результат

Как можно автоматически получить дополнительный интервал? Особенно важно, чтобы добавлялось не просто статическое количество пробелов, чтобы не было дополнительных пробелов между знаками равенства и символами, а также между повторяющимися символами.


MWE, выдавший указанный выше результат:

\documentclass[preview,border=10pt,fleqn]{standalone}

\usepackage{amsmath}
\setlength\mathindent{0pt}

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

\begin{document}

Symbols with no spacing \eqref{nospaces},
explicit \texttt{\textbackslash,} spaces \eqref{spaces}.
\begin{align}
\label{nospaces}
y &= \A x &
y &= x' \A x &
\B &= \A \A &
\B &= \A' \A
\\
\label{spaces}
y &= \A \, x &
y &= x' \, \A \, x &
\B &= \A \, \A &
\B &= \A' \, \A
\end{align}

\end{document}

решение1

Определенно это не ответ, но сравните следующие два результата.

\documentclass[preview,border=10pt,fleqn]{standalone}
\usepackage{mathtools}
\begin{document}
\begin{align*}
     y &= Ax &\chi^2 &= x^TAx &C&= AB &D &= A^T B\\
     y &= A\,x &\chi^2 &= x^T \, A \, x &C &= A   \, B &D &= A^T \, B\\
     y &= A   x &\chi^2 &= x^T A x &C &= AB &D &= A^T B
\end{align*}
\end{document}

введите описание изображения здесь введите описание изображения здесь

Я повторил трижды, чтобы выглядело похоже. Я не думаю, что что-то должно быть жирным, чтобы передать сообщение. Заглавные буквы — матрицы, строчные буквы — векторы. Транспонирование нестандартно, некоторые используют для этого штрих, но строчная t всегда выглядит как опечатка, особенно когда матрицы жирные, так как у нее недостаточно веса.

решение2

Если кто-то еще ищет решение, я поделюсь тем, к чему пришел после нескольких проб и ошибок.

В этом ответе, комбинация \mathrm{}\!используется для добавления небольшого интервала перед дифференциальным знакомг. Поэтому я определил следующие две команды для добавления пространства слева и справа от символов:

\newcommand\lxspace{\mathop{}\!}
\newcommand\rxspace{\!\mathop{}\nolimits}

Затем я вручную добавляю пробелы к своим символам:

\newcommand\A{\lxspace\mathrm{A}\rxspace}
\newcommand\B{\lxspace\mathrm{B}\rxspace}

Кажется, это производит желаемый эффект:

Кажется, работает.

решение3

Мне нравится, как Mathematica обозначает продукты пробелами (horresco referens!). Чтобы сделать это в TeX, я переопределил *(см. ниже) так, чтобы он вставлял тонкий пробел в математическом режиме. Это не происходит автоматически, но, похоже, хорошо работает с обычными атомами, скобками и операторами. При необходимости это можно легко отключить.

Для других применений *в математическом режиме \astвместо этого можно использовать . Поведение *вне математического режима остается неизменным.

\mathcode`\*="8000 
{\catcode`\*=\active
\gdef*{\mathclose{}\,\mathopen{}}}

$a*b$
$a b$
$a\,b$
$a*\cos b$
$a \cos b$
$a\,\cos b$

(Обратите внимание, что использование \,вместо *вставляет нежелательный пробел в последнее выражение.)

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