条件付きで \big、\bigg などを \left または \right に再定義する (ローカル)

条件付きで \big、\bigg などを \left または \right に再定義する (ローカル)

組版作業をスピードアップするために、いくつかのコマンドを「ローカル」で再定義する可能性を検討しています。

この特定のケースでは、、などのコマンドを、\bigおよびコマンドに再定義したいと思います。再定義は、next-char (または next-regexp) によって条件付けられる必要があります。\Big\left\right

たとえば、次のような「疑似コード」です。

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

このコマンドで方程式を囲むのが目的です。例:

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

これは LaTeX で作成できますか? もしできるなら、何を探す必要がありますか?

編集。 ウェルマー溶液動作するように見えますが、同じ種類のネストされたペアの場合は失敗します。例:

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

ここに画像の説明を入力してください

注記。

私は自分でゼロから文書を書くわけではありません。物理学のジャーナルに掲載される科学者の論文を準備しています。そのため、提供されたガイドラインに従ってレイアウトの「エラー」を「修正」する必要があります。

答え1

以下では、および の仲間を、および\bigと同様に、ペアの形式で使用していることを前提としています。また、開始区切り文字は に関連付けられ、終了区切り文字は に関連付けられていると想定しています。一致しない反復子は に戻ります。\left\right\left\right<delim>\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}

答え2

問題について

ユーザーはオープニングそして閉鎖数式に区切り文字を含めないでください。また、便利なマクロを再定義するのではなく、必要に応じて別のマクロを使用してください。

次の例では、さまざまな区切り文字 (サイズと形状) を確認できます。また、開始区切り文字と終了区切り文字も確認できます。

演習 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

サンプル コード内の開始区切り文字と終了区切り文字を置き換えるのは簡単です。

重要: \leftまたは\right区切り文字が続く場合、期待どおりの区切り文字が常に生成されるとは限りません (印刷の美観)。

たとえば、同じ数式の2つの書式設定を見ることができます。数式右側には、TeXbook で推奨されている書式に対応していますが、左側の数式は、上記のコード スニペットで対応する修飾子 ( \bigl\biggr...)を\leftまたはに置き換えた後に表示できます。\right

同じ数式の 2 つの書式設定。

さらに、「修飾子」\leftと は\right式の同じ部分に出現する必要があります。

ソリューションについて

区切り文字の前にある各「修飾子」を適切な修飾子に置き換える必要があります。

これらの修飾子は、対応する修飾子に自動的に置き換えられる場合があります。使用されるアルゴリズムはそれほど複雑ではないようです。その実装はおそらくテキストエディタ明らかに (La)TeX ではそうではありません。

関連情報