Espaciado automático de símbolos.

Espaciado automático de símbolos.

Tengo curiosidad por saber cómo conseguir automáticamente un poco de espacio entre los símbolos que se escriben juntos.

Supongamos que tenemos símbolos Ay Bque representan algunos objetos abstractos. Definimos comandos \Ay \Bque insertan los símbolos.

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

Ahora me gustaría tener un poco de espacio entre estos símbolos cuando se escriben junto con otros símbolos. Desafortunadamente, con las definiciones anteriores, es necesario agregar estos espacios explícitamente.

Salida deseada

¿Cómo puedo obtener el espacio adicional automáticamente? Es especialmente importante que no se agregue solo una cantidad estática de espacio, para evitar espacios adicionales entre los signos iguales y los símbolos, y entre símbolos repetidos.


El MWE que produjo la producción anterior:

\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}

Respuesta1

Definitivamente no es una respuesta, pero compare los dos resultados siguientes.

\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}

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Lo he repetido tres veces para parecer similar. No creo que sea necesario ser atrevido para poder transmitir el mensaje. Matrices de letras mayúsculas, vectores de letras minúsculas. La transpuesta no es estándar, algunos usan números primos para eso, pero la t minúscula siempre parece un número primo mal impreso, especialmente cuando las matrices están en negrita, ya que no tiene suficiente peso.

Respuesta2

En caso de que haya alguien más buscando una solución, compartiré lo que se me ocurrió después de algunas pruebas y errores.

en esta respuesta, la combinación\mathrm{}\! se usa para agregar un poco de espacio antes de un diferenciald. Entonces definí los siguientes dos comandos para agregar espacio a la izquierda y a la derecha de los símbolos:

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

Luego agrego los espacios manualmente a mis símbolos:

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

Esto parece producir el efecto deseado:

Parece funcionar

Respuesta3

Me gusta la forma en que Mathematica denota productos con espacios (¡horresco referens!). Para hacer esto en TeX, lo he redefinido *(ver más abajo) para que inserte un espacio delgado en modo matemático. Esto no es automático, pero parece funcionar bien con átomos, paréntesis y operadores ordinarios. Si es necesario, se puede apagar fácilmente.

Para otros usos *en modo matemático, \astse puede utilizar en su lugar. El comportamiento *fuera del modo matemático no cambia.

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

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

(Tenga en cuenta que usar \,en lugar de *inserta un espacio no deseado en la última expresión).

información relacionada