사용자 정의 가능한 한도 및 합계 기호

사용자 정의 가능한 한도 및 합계 기호

나는 a를 정의하는 방법을 찾고 있습니다.맞춤형한계 및 합계 연산자. 현재 다음을 통해 정의된 강한/약한 제한이 있습니다.

\DeclareMathOperator*{\slim}{\mathfrak{s}-lim}
\DeclareMathOperator*{\wlim}{\mathfrak{w}-lim}
\DeclareMathOperator*{\wslim}{\mathfrak{w*}-lim}

$\lim[\mu]$그러나 나는 적절한 제한을 가진 μ-lim으로 렌더링하고 합계에 대해서도 마찬가지( $\sum[\mu]$μ-Σ로 렌더링) 와 같은 좀 더 자유를 원합니다 . 어떻게 이를 달성할 수 있나요?

답변1

.amsmath

\documentclass{article}

\usepackage{amsmath}

\makeatletter

\newcommand*{\plim}[1][]{%
   \if\relax\detokenize{#1}\relax
      \def\next{\qopname\relax m{lim}}%
   \else
      \def\next{\qopname\newmcodes@ m{#1-lim}}%
   \fi
   \next
}

\newcommand*{\psum}[1][]{%
   \DOTSB
   \if\relax\detokenize{#1}\relax\else
      \operatorname{#1-}\mkern-\thinmuskip
   \fi
   \sum@\slimits@
}

\makeatother


\begin{document}

\begin{gather*}
\plim_{x\to0} \quad \plim[s]_{x\to0} \quad \plim[\mu]_{x\to0} \\[2ex]
\psum_i a_i \quad \psum[\mu]_i a_i
\end{gather*}

\end{document}

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

나는 극한의 경우 전체 표현의 중심에 극한을 배치하는 것을 선택했지만 항상 합계 기호 아래에만 있습니다(앞에 무엇이 나오든 관계없이).

개인적으로 사용하는 것이 더 안전하다고 생각합니다새로운매크로 이름. 물론 위의 코드를 다음과 같이 변경하는 것을 누구도 막지 못합니다.

\renewcommand*{\lim}[1][]{%
   \if\relax\detokenize{#1}\relax
      \def\next{\qopname\relax m{lim}}%
   \else
      \def\next{\qopname\newmcodes@ m{#1-lim}}%
   \fi
   \next
}

\renewcommand*{\sum}[1][]{%
   \DOTSB
   \if\relax\detokenize{#1}\relax\else
      \operatorname{#1-}\mkern-\thinmuskip
   \fi
   \sum@\slimits@
}

단점이 있을 수 있으니 주의하세요.

답변2

Campa의 매우 훌륭한 답변에서 아무것도 훔치지는 않지만 제안된 코드에는 개선의 여지가 있습니다.

일반적인 방법으로 명령의 접두사를 지정 \lim하고 \sum명령을 정의하려면 인터페이스가 xparse더 쉽습니다.

나는 한도가 전체 "접두사 한도" 아래 중앙에 있어야 한다는 Campa의 의견에 동의합니다. 그러나 이는 유사한 경우 또는 대규모 운영자와 관련된 경우에만 적용됩니다 \sum.

\documentclass{article}
\usepackage{amsmath}
%\usepackage{xparse} % not needed with LaTeX 2020-10-01 or later

\NewDocumentCommand{\prelim}{mm}{%
  \operatorname*{#1-{#2}}%
}
\NewDocumentCommand{\preop}{mO{\thinmuskip}m}{%
  \DOTSB\operatorname{#1-}\mspace{-#2}#3%
}

\newcommand{\mulim}{\prelim{\mu}{\lim}}
\newcommand{\xlimsup}{\prelim{x}{\limsup}}

\newcommand{\musum}{\preop{\mu}[6mu]{\sum}}
\newcommand{\mubigcup}{\preop{\mu}{\bigcup}}

\begin{document}

\begin{gather*}
\mulim_{x\to0} f(x) \\
\xlimsup_{x\to\infty} f(x) \\
\musum_{i=1}^{n} a_i \\
\mubigcup_{i\in I}A_i
\end{gather*}

\end{document}

나는 재정의를 \lim피하고 \sum. 가끔 사전 정의되지 않은 연산자의 경우 적절한 인수와 함께 \prelim및를 사용할 수 있습니다. \preop\preop명령에는 접두사와 기호 사이의 커닝을 개선하는 데 사용되는 중간 선택적 인수가 있습니다. 이는 에서는 더 좋지만 \sum에서는 그렇지 않습니다 \bigcup.

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

답변3

기존 명령을 사용할 수도 있고 이를 재정의하여 접두사를 추가하는 선택적 인수를 추가할 수도 있습니다.

\documentclass{article}
\usepackage{amsmath}
\let\oldlim\lim
\let\oldsum\sum
\renewcommand*{\lim}[1][]{%
    \def\temp{#1}%
    \ifx\temp\empty
        \oldlim%
    \else
        #1\text{--}\!\oldlim%
    \fi%
}
\renewcommand*{\sum}[1][]{%
    \def\temp{#1}%
    \ifx\temp\empty
        \oldsum%
    \else
        #1\text{--}\!\!\oldsum%
    \fi%
}
\begin{document}
\(\lim_{x\to 0} f(x)\) 
\(\lim[\mu]_{x\to 0} f(x)\)
\[
\lim_{x\to 0} f(x)
\qquad
\lim[\mu]_{x\to 0} f(x)
\]

\(\sum_{n=0}^\infty f(n)\)
\(\sum[\mu]_{n=0}^\infty f(n)\)
\[
\sum_{n=0}^\infty f(n)
\qquad
\sum[\mu]_{n=0}^\infty f(n)
\]
\end{document}

여기서는 보기 좋다고 생각되는 간격으로 조정했지만 \lim및 의 재정의에서 쉽게 변경할 수 있습니다 \sum.

관련 정보