为了加快我的排版工作,我正在探索“本地”重新定义一些命令的可能性。
在这个特定情况下,我想将 、 等命令重新定义\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
和 以成对形式的朋友,类似于\left
和\right
。此外,它假设开始分隔符与 相关联\left
,而结束分隔符与 相关联\right
。任何不匹配的<delim>
iters 都会恢复为\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 上。