Símbolos personalizáveis ​​de limite e soma

Símbolos personalizáveis ​​de limite e soma

Estou procurando uma maneira de definir umCustomizáveloperador de limite e soma. Atualmente tenho limites fortes/fracos definidos através

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

mas eu gostaria de um pouco mais de liberdade, algo como $\lim[\mu]$renderizar como μ-lim com limites apropriados, e o mesmo para somas ( $\sum[\mu]$renderizar como μ-Σ). Como posso conseguir isso?

Responder1

Aqui está uma possível realização, supondo que você esteja carregando arquivos 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}

insira a descrição da imagem aqui

Escolhi a colocação dos limites de forma que fiquem centrados em toda a expressão no caso do limite, mas sempre apenas sob o símbolo da soma (não importa o que venha antes).

Pessoalmente acho que é mais seguro usarnovonomes de macros. Claro, ninguém impede que você altere o código acima para

\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@
}

Esteja ciente de que pode haver desvantagens.

Responder2

Não quero roubar nada da ótima resposta de campa, mas há espaço para melhorias no código proposto.

Se você deseja uma maneira genérica de prefixar \lime \sumdefinir comandos em termos dos genéricos, uma interface xparseé mais fácil.

Concordo com campa que os limites deveriam ser centrados abaixo de todo o “limite prefixado”, mas apenas no que diz respeito ao grande operador em caso de \sumou similares.

\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}

Eu evitaria redefinir \lime \sum. Para o operador ocasional não predefinido, você pode usar \prelime \preopcom os argumentos adequados. O \preopcomando tem um argumento opcional intermediário que é usado para melhorar o kerning entre o prefixo e o símbolo, que é melhor com \sum, mas não com \bigcup.

insira a descrição da imagem aqui

Responder3

Você também pode usar os comandos existentes e apenas redefini-los para adicionar um argumento opcional que adicione um prefixo.

\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}

Ajustei o espaçamento para algo que achei que ficaria bom aqui, mas pode ser facilmente alterado nas redefinições de \lime \sum.

informação relacionada