.png)
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 \left
e \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
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 \big
e amigos em pares, semelhante a \left
e \right
. Além disso, assume que os delimitadores de abertura estão associados \left
e os delimitadores de fechamento estão associados a \right
. Quaisquer <delim>
iters sem correspondência são revertidos para \big<delim>
.
\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: \left
ou \right
seguidos 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 \left
ou \right
no trecho de código acima.
Além disso, os “modificadores” \left
e \right
devem 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.