我有一个 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
而不是完整的分隔符规范。