Espaçamento automático de símbolos

Espaçamento automático de símbolos

Estou curioso para saber como obter automaticamente um pouco de espaçamento em torno dos símbolos escritos juntos.

Suponhamos que temos símbolos Ae Bque representam alguns objetos abstratos. Definimos comandos \Ae \Bisso insere os símbolos.

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

Agora eu gostaria de ter um pouco de espaço entre esses símbolos quando escritos junto com outros símbolos. Infelizmente, com as definições acima, é necessário adicionar estes espaços explicitamente.

Saída desejada

Como posso obter o espaçamento extra automaticamente? É especialmente importante que não seja adicionada apenas uma quantidade estática de espaço, para evitar espaços extras entre sinais de igual e os símbolos, e entre símbolos repetidos.


O MWE que produziu a saída acima:

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

Responder1

Definitivamente não é uma resposta, mas compare os dois resultados a seguir.

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

insira a descrição da imagem aqui insira a descrição da imagem aqui

Repeti três vezes para parecer semelhante. Não creio que nada precise ser ousado para poder transmitir a mensagem. Matrizes de letras maiúsculas, vetores de letras minúsculas. A transposição não é padrão, alguns usam primo para isso, mas t minúsculo sempre parece um primo mal impresso, especialmente quando as matrizes estão em negrito, pois não tem peso suficiente.

Responder2

Caso haja alguém procurando uma solução, compartilharei o que descobri após algumas tentativas e erros.

Nesta resposta, a combinação \mathrm{}\!é usada para adicionar um pouco de espaçamento antes de um diferenciald. Então defini os dois comandos a seguir para adicionar espaço à esquerda e à direita dos símbolos:

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

Então adiciono os espaços manualmente aos meus símbolos:

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

Isso parece produzir o efeito desejado:

Parece funcionar

Responder3

Gosto da maneira do Mathematica de denotar produtos com espaços (horresco referens!). Para fazer isso no TeX, redefini *(veja abaixo) para inserir um espaço fino no modo matemático. Isso não é automático, mas parece funcionar bem com átomos, parênteses e operadores comuns. Se necessário, pode ser facilmente desligado.

Para outros usos *no modo matemático, \astpode ser usado. O comportamento *fora do modo matemático permanece inalterado.

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

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

(Observe que usar \,em vez de *insere um espaço indesejado na última expressão.)

informação relacionada