Redefinir condicionalmente \big, \bigg, etc. a \left o \right (localmente)

Redefinir condicionalmente \big, \bigg, etc. a \left o \right (localmente)

Para acelerar mi trabajo de composición tipográfica, estoy explorando la posibilidad de redefinir algunos comandos "localmente".

En este caso particular, me gustaría redefinir los comandos \big, \Bigetc. a los comandos \lefty \right. La redefinición debe estar condicionada por el siguiente carácter (o la siguiente expresión regular).

Por ejemplo, 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}}

La idea es envolver una ecuación con este comando. P.ej:

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

¿Se puede hacer esto en LaTeX? Si es así, ¿qué necesito buscar?

Editar. solución wermerParecía funcionar, pero falla en el caso de un par anidado del mismo tipo. P.ej:

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

ingrese la descripción de la imagen aquí

Nota.

Yo no escribo documentos desde cero. Preparo los trabajos de los científicos para ser publicados en revistas de física. Por lo tanto, tengo que "corregir" los "errores" de diseño de acuerdo con las pautas proporcionadas.

Respuesta1

Lo siguiente supone que estás usando \bigy amigos en forma emparejada, similar a \lefty \right. Además, se supone que los delimitadores de apertura están asociados \lefty los delimitadores de cierre están asociados con \right. Cualquier <delim>iter no coincidente vuelve a \big<delim>.

ingrese la descripción de la imagen aquí

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

Respuesta2

Sobre el tema

Se supone que un usuario debe usaraperturayclausuradelimitadores en sus fórmulas. Además, no debería redefinir una macro útil sino utilizar otra macro según corresponda.

Puede ver diferentes delimitadores (tamaños y formas) en el siguiente ejemplo. También puede ver los delimitadores de apertura y cierre.

Ejercicio 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

Es fácil reemplazar los delimitadores de apertura y cierre en el código de muestra.

Importante: \lefto \rightseguido de un delimitador no siempre produce los delimitadores esperados (estética tipográfica).

Por ejemplo, podemos ver dos formatos de la misma fórmula. La formulaA la derechacorresponde al formato recomendado en TeXbook, mientras que la fórmula de la izquierda podría aparecer después de reemplazar los modificadores correspondientes ( \bigl, \biggr...) por \lefto \righten el fragmento de código anterior.

Dos formatos de la misma fórmula.

Además, los "modificadores" \lefty \rightdeben aparecer en la misma parte de la fórmula.

Sobre la solución

Es necesario reemplazar cada "modificador" que precede a un delimitador con el modificador apropiado.

Estos modificadores pueden ser reemplazados automáticamente por sus modificadores correspondientes. El algoritmo a utilizar no parece muy complicado. Su implementación probablemente deba depender de unaeditor de texto, obviamente no en (La)TeX.

información relacionada