아래 첨자와 위 첨자를 무시하는 \left 및 \right 버전

아래 첨자와 위 첨자를 무시하는 \left 및 \right 버전

\left기본 요소 및 와 같이 자동 방식으로 작동하지만 또는 \right같은 연산자 아래 또는 위의 공간을 고려하지 않는 매크로(또는 매크로)를 정의하려면 어떻게 해야 합니까 ?\sum\bigcup

이렇게 수정된 왼쪽 및 오른쪽 \mleft/는 입력이 \mright처럼 작동해야 하지만 원본 /는 을 생성합니다 .\[\Bigl(\sum_i^j\Bigr)\]\[\mleft(\sum_i^j\mright)\]\left\right\[\Biggl(\sum_i^j\Biggr)\]

이미 솔루션(sb)이 있지만 여기에는 몇 가지 주의 사항이 있으며 더 나은 접근 방식이 있을 수 있습니다.

답변1

다음 매크로는 \lrm먼저 \vphantom괄호의 실제 내용과 함께 a를 사용하여 올바른 전체 줄 높이를 얻는 방식으로 작동합니다. 그런 다음 다른 를 호출 \left하고 생성 \vphantom하지만 이번에는 catcode를 변경하고 ^and _를 의미하도록 재정의합니다 \relax. 마지막으로 \smash에 대한 호출 직전 에 실제로 내용을 출력합니다 \right. \smash줄 높이가 증가하지 않기 때문입니다 .

\begingroup
\catcode`_=\active
\catcode`^=\active
\gdef\lrm#1#2#3{%
 \vphantom{#2}%
 \left#1%
 \vphantom{
   \begingroup
   \def\sb##1{\relax}%
   \def\sp##1{\relax}%
   \def_##1{\sb{##1}}%
   \def^##1{\sp{##1}}%
   \catcode`_=\active
   \catcode`^=\active
   \scantokens{ #2\endinput}%
   \endgroup
  }
  \smash{#2}
  \right#3%
}

\gdef\mleft#1#2\mright#3{\lrm{#1}{#2}{#3}}
\gdef\mmleft#1#2\mmright#3{\lrm{#1}{#2}{#3}}
\gdef\mmmleft#1#2\mmmright#3{\lrm{#1}{#2}{#3}}
\endgroup

이 솔루션에는 몇 가지 주의 사항이 있습니다.

  • 매크로 내의 아래 첨자와 위 첨자는 감지되지 않습니다( 도움말 \expandonce내에서는 \scantokens대부분의 중첩된 응용 프로그램이 중단됨).
  • \mleft/는 \mright중첩될 수 없지만 중첩은 \lrm가능합니다.
  • \scantokenseTeX가 필요합니다(예: pdftex,luatex,xetex ...).
  • 합이 두 개인 분수를 둘러싼 괄호에 사용하면 결과 괄호가 너무 작아 보일 수 있습니다.

관련 정보