Estou curioso para saber como obter automaticamente um pouco de espaçamento em torno dos símbolos escritos juntos.
Suponhamos que temos símbolos A
e B
que representam alguns objetos abstratos. Definimos comandos \A
e \B
isso 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.
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}
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:
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, \ast
pode 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.)