自动将 \left 转换为 \Bigl

自动将 \left 转换为 \Bigl

我有一个 LaTeX 文件,其中包含大量其他自动生成的包含 TikZ 图形的 LaTeX 文件。假设我想让\left(TikZ 图形中的每个图形都以相同的固定大小显示,例如\Bigl(

改变自动生成器方面并非不可能,但我想解决包含数字方面的问题。

我试过

\def\includetikzfile{#1}{{\let\left\Bigl\input{#1.tikz}}}

但它很快就陷入无限循环,超出了 TeX 的容量。

我该怎么做?

答案1

很容易看出循环来自哪里,因为它是根据(默认情况下)\Bigr定义的\Big

\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}

因此定义如下\left

对传入文件进行替换/编辑可能更安全

如果你想在 TeX 中做到这一点,你需要

\let\oldleft\left
\let\oldright\right

然后重新定义这些

\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}

使用\oldleft然后\oldright你会稍微安全一点

\let\left\Bigl
\let\right\Bigr

在本地重新定义中,尽管仍然可能存在失败的情况,特别是因为\left\right原语不会像宏那样扫描参数,\Bigr例如

$\left\delimiter"26A30C  \frac{a}{b} \right.$

可以,但是如果你替换\left\Bigr

$\Bigl\delimiter"26A30C  \frac{a}{b} \Bigr.$

产生

! Missing number, treated as zero.
<to be read again> 
                   \vbox 
l.11 $\Bigl\delimiter

因为参数\Bigr只是标记\delimiter而不是完整的分隔符规范。

相关内容