기호의 자동 간격

기호의 자동 간격

함께 쓰여진 기호 주위에 약간의 간격을 자동으로 가져오는 방법이 궁금합니다.

일부 추상 객체를 나타내는 기호 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}

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

비슷하게 보이려고 세 번 반복했어요. 메시지를 전달하기 위해 어떤 것이든 대담할 필요는 없다고 생각합니다. 대문자 행렬, 소문자 벡터. 전치(transpose)는 표준이 아니며 일부는 소수를 사용하지만 소문자 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는 참조합니다!). TeX에서 이 작업을 수행하기 *위해 수학 모드에서 얇은 공백을 삽입하도록 재정의했습니다 (아래 참조). 이것은 자동은 아니지만 일반 원자, 괄호 및 연산자와 잘 작동하는 것 같습니다. 필요한 경우 쉽게 끌 수 있습니다.

*수학 모드에서 다른 용도로 사용하려면 \ast대신 사용할 수 있습니다. *수학 모드 외부 의 동작은 변경되지 않습니다.

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

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

( \,대신 사용하면 *마지막 표현식에 원하지 않는 공백이 삽입됩니다.)

관련 정보