Redefinir condicionalmente \big, \bigg, etc. para \left ou \right (localmente)

Redefinir condicionalmente \big, \bigg, etc. para \left ou \right (localmente)

Para acelerar meu trabalho de composição estou explorando a possibilidade de redefinir alguns comandos "localmente".

Neste caso específico, gostaria de redefinir os comandos \big, \Big, etc. para os comandos \lefte \right. A redefinição deve ser condicionada pelo next-char (ou next-regexp).

Por exemplo, algo como este "pseudocódigo":

\newcommand{\myRedefinedBigs}{%
  COND 1 next char (or next regexp) is (or "(" "[" "\{")
  \renewcommand{\big}{\left}
  \renewcommand{\Big}{\left}
  \renewcommand{\bigg}{\left}
  \renewcommand{\Bigg}{\left}
  COND 2 next char (or next regexp) is (or ")" "]" "\}")
  \renewcommand{\big}{\right}
  \renewcommand{\Big}{\right}
  \renewcommand{\bigg}{\right}
  \renewcommand{\Bigg}{\right}}

A ideia é agrupar uma equação com este comando. Por exemplo:

{\myRedefinedBigs
\begin{equation}
\big(\frac{1}{2}\big)
\end{equation}}\relax

Isso pode ser feito em LaTeX? Se sim, o que preciso procurar?

Editar. Solução Wermerpareceu funcionar, mas falha no caso de pares aninhados do mesmo tipo. Por exemplo:

{\myRedefinedBigs
\begin{equation}
\big(\frac{1}{2}\big(3\)\big)
\end{equation}}\relax

insira a descrição da imagem aqui

Observação.

Eu não escrevo documentos do zero. Preparo os trabalhos dos cientistas para serem publicados em revistas de física. Portanto, tenho que "corrigir" os "erros" de layout de acordo com as orientações fornecidas.

Responder1

A seguir, pressupõe-se que você esteja usando \bige amigos em pares, semelhante a \lefte \right. Além disso, assume que os delimitadores de abertura estão associados \lefte os delimitadores de fechamento estão associados a \right. Quaisquer <delim>iters sem correspondência são revertidos para \big<delim>.

insira a descrição da imagem aqui

\documentclass{article}

\makeatletter
\newcommand{\myRedefinedBigs}{%
  \let\oldbig\big% Copy \big into \oldbig
  \def\big{% Redeine \big
    \@ifnextchar({\biglparen}{% \big is followed by (
    \@ifnextchar){\bigrparen}{% \big is followed by )
    \@ifnextchar[{\biglbracket}{% \big is followed by [
    \@ifnextchar]{\bigrbracket}{% \big is followed by ]
    \@ifnextchar\{{\biglbrace}{% \big is followed by \{
    \@ifnextchar\}{\bigrbrace}{% \big is followed by \}
    \oldbig}}}}}}}% \big is followed by something else, so resort to \oldbig
  \def\biglparen({\left(}% \big( is replaced by \left(
  \def\bigrparen){\right)}% \big) is replaced by \right)
  \def\biglbracket[{\left[}% \big[ is replaced by \left[
  \def\bigrbracket]{\right]}% \big] is replaced by \left]
  \def\biglbrace\{{\left\{}% \big\{ is replaced by \left\{
  \def\bigrbrace\}{\right\}}% \big\} is replaced by \left\}
  \let\Big\big% Handle \Big just like \big
  \let\bigg\big% Handle \bigg just like \big
  \let\Bigg\big% Handle \Bigg just like \big
}
\makeatother

\begin{document}

\[
  \big(\frac{1}{2}\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}\big)
\]}

\[
  \big(\frac{1}{2}^{\Big\{\frac{1}{2}\Big]}\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}^{\Big\{\frac{1}{2}\Big]}\big)
\]}

\[
  \big(\frac{1}{2}\big(3\big)\big)
\]

{\myRedefinedBigs
\[
  \big(\frac{1}{2}\big(3\big)\big)\big|
\]}

\end{document}

Responder2

Sobre o assunto

Um usuário deve usaraberturaefechandodelimitadores em suas fórmulas. Além disso, você não deve redefinir uma macro útil, mas usar outra macro conforme apropriado.

Você pode ver diferentes delimitadores (tamanhos e formas) no exemplo a seguir. Você também pode ver os delimitadores de abertura e fechamento.

Exercício 17.14 (TeXbook)

\pi(n)=\sum_{m=2}^n\left\lfloor\biggl(\sum_{k=1}^{m-1}
  \bigl\lfloor(m/k)\big/\lceil m/k\rceil\bigr\rfloor\biggr)^{-1}
\right\rfloor

É fácil substituir delimitadores de abertura e fechamento no código de exemplo.

Importante: \leftou \rightseguidos de um delimitador nem sempre produzem os delimitadores esperados (estética tipográfica).

Por exemplo, podemos ver duas formatações da mesma fórmula. A fórmulaà direitacorresponde à formatação recomendada no TeXbook enquanto a fórmula à esquerda pode aparecer após a substituição dos modificadores correspondentes ( \bigl, \biggr...) por \leftou \rightno trecho de código acima.

Duas formatações da mesma fórmula.

Além disso, os “modificadores” \lefte \rightdevem aparecer na mesma parte da fórmula.

Sobre a solução

É necessário substituir cada "modificador" que precede um delimitador pelo modificador apropriado.

Esses modificadores podem ser automaticamente substituídos pelos modificadores correspondentes. O algoritmo a ser utilizado não parece muito complicado. A sua implementação provavelmente deverá depender de umaeditor de texto, obviamente não no (La)TeX.

informação relacionada