
為了加快我的排版工作,我正在探索「本地」重新定義一些指令的可能性。
在這種特殊情況下,我想將 、 等指令重新定義\big
為\Big
和\left
指令\right
。重新定義必須以 next-char(或 next-regexp)為條件。
例如這樣的「偽代碼」:
\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
以配對形式使用 and Friends,類似於\left
and \right
。此外,它假設開始分隔符號與 關聯\left
,結束分隔符號與 關聯\right
。任何不匹配的<delim>
iter 都會恢復為\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
後跟分隔符號並不總是產生預期的分隔符號(排版美觀)。
例如,我們可以看到同一公式的兩種格式。公式在右側對應於 TeXbook 中建議的格式,而左側的公式可能會在上面的程式碼片段中用或替換相應的修飾符( \bigl
, \biggr
...)後出現。\left
\right
而且,「修飾符」\left
和\right
必須出現在公式的同一部分。
關於解決方案
有必要將分隔符號前面的每個「修飾符」替換為適當的修飾符。
這些修飾符可以自動替換為其匹配的修飾符。使用的演算法看起來並不是很複雜。它的實作可能必須依賴文字編輯器,顯然不在 (La)TeX 上。