아래 첨자/위 첨자에서 수학 연산자 주위의 간격

아래 첨자/위 첨자에서 수학 연산자 주위의 간격

다음을 고려하세요:

\documentclass{article}

\begin{document}

What I have:
\[x^{1+1}\]

What I would like:
\[x^{1\,+\,1}\]

That is, I will like to have spacing around the operator as in `$1+1$'.\\[\baselineskip]
\textsf{Question:} How do I get the above throughout my document without having to add \verb|\,| on each side of the operator every time?

\end{document}

산출

답변1

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

Luatex에는 각 수학 스타일의 각 클래스 사이에 추가된 공간을 제어하는 ​​기본 요소가 있으므로 스크립트 스타일에서 mathord와 mathbin 사이의 공간을 제어하려면 다음과 같이 하십시오.

\documentclass{article}

\begin{document}
$a+b x^{a+b}$

\Umathordbinspacing\scriptstyle=10mu
\Umathbinordspacing\scriptstyle=10mu

$a+b x^{a+b}$

\end{document}

클래식 TeX 엔진의 경우 다음을 수행할 수 있습니다.

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

\documentclass{article}
\DeclareMathSymbol{\realplus}{\mathbin}{operators}{"2B}
\begin{document}
$a+b x^{a+b} +cx^{+c}$

%\Umathordbinspacing\scriptstyle=10mu
%\Umathbinordspacing\scriptstyle=10mu


\def\z{{\mskip\medmuskip{\realplus}\mskip\medmuskip}}

$a\z b x^{a \z b} \z  cx^{\z c}$

\catcode`\+\active\let+\z
\catcode`\+12
\mathcode`\+="8000

$a+b x^{a+b} +cx^{+c}$

\end{document}

하지만 그다지 좋지는 않습니다. 항상 공간을 추가하므로 +Mathord 원자 사이에 이진 연산자로 사용되는 경우에만 작동합니다. 마지막 항의 마지막 접두사는 +c넓은 공간을 차지하므로 실제로 원하는 것은 아닙니다. 접두사에 액세스하려면 별도의 명령이 필요합니다 +.

댓글을 통해 연결된 답변에서 나는 \nonscript더 복잡해 보이는 구성을 제안했지만 실제로는 동일한 결함이 있다고 생각합니다.

egreg를 사용하여 제안된 버전은 \text올바른 간격을 얻지만 단순히 공백을 추가하는 것보다 더 많은 마크업이 필요합니다(물론 \sp이 구성을 사용하여 위 첨자를 만드는 고유한 변형 명령을 정의할 수도 있음).

답변2

아니, 당신은 그것을 원하지 않습니다. Knuth는 오랜 시간 동안 생산된 수학적 내용을 담은 여러 문서를 검토하여 수학적 공간의 규칙을 연구했습니다.

아마도 일부 국가의 인쇄 전통에서는 위 첨자와 아래 첨자에도 연산 및 관계 기호를 공간화했을 것입니다. 이것이 좋다는 뜻은 아닙니다. 간격이 좁습니다.~이다좋아요, 일반적으로요. 가끔 발생하는 사고는 손으로 해결할 수 있습니다. 아름다운 문서를 원한다면 작업을 해야 합니다. 미켈란젤로가 자신의 명성을 얻기 위해 망치와 끌만 사용한 것은 아닙니다.피에타.

이것은 Karl Weierstraß의 책 "Theorie der Abel'schen Functionen: Erstes Heft", 1856년에 나온 이미지입니다(Google 도서에서 참조)

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

위 첨자의 합계는 일반 유형의 합계에는 해당되지 않는 촘촘하게 설정되어 있음을 알 수 있습니다.


Barbara Beeton이 사용한 것으로 기억되는 트릭은 다음과 같습니다.

\documentclass{article}
\usepackage{amsmath}

\catcode`^=12
\catcode`_=12

\begingroup\lccode`~=`^\lowercase{\endgroup\def~}{\SPACED\sp}
\begingroup\lccode`~=`_\lowercase{\endgroup\def~}{\SPACED\sb}
\AtBeginDocument{\mathcode`^="8000 \mathcode`_="8000 }

\makeatletter
\def\SPACED#1#2{#1{\text{$\m@th#2$}}}
\makeatother

\begin{document}
$\displaystyle x^{1+1}+\sum_{1\le k\le n}k^2$

The original: {\catcode`^=7 \catcode`_=8
  $\displaystyle x^{1+1}+\sum_{1\le k\le n}k^2$}
\end{document}

이는 \displaystyle단지 예시일 뿐입니다.

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

어떤 버전을 선택할지 의심의 여지가 없습니다.

관련 정보