Настраиваемые символы лимита и суммы

Настраиваемые символы лимита и суммы

Я ищу способ определитьнастраиваемыйОператор предела и суммы. В настоящее время у меня есть сильные/слабые пределы, определенные через

\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

Не хочу ничего красть из прекрасного ответа Кампы, но в предлагаемом коде есть возможности для улучшения.

Если вам нужен универсальный способ добавления префиксов \limи \sumи определения команд в терминах универсальных, то интерфейс с ним xparseбудет проще.

Я согласен с кампой, что лимиты должны быть центрированы ниже всего «префиксированного лимита», но только в отношении крупного оператора в случае \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.

Связанный контент