我有一个大图表(我用 \xymatrix 制作),我想重新调整比例以适合页面。目前,我正在使用
\resizebox{\columnwidth}{!}{
\[\xymatrix{
bigdiagram
}\]
}
它产生了我想要的结果,但是我得到了错误
LaTeX Error: Bad math environment delimiter.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2366 }
每次我编译我的 tex 文件时。调整方程大小的正确方法是什么?
答案1
我认为问题主要有两个根源:
LaTeX
\[...\]
只允许在所谓的“段落模式”(该名称由 Leslie Lamport 自己选择)中使用“显示数学模式”,即语法所暗示的数学模式,粗略地说,这是 LaTeX 在排版普通段落时的模式。不幸的是,命令的主要参数\resizebox
排版在另一种模式下(Lamport 称之为“从左到右模式”,简称“LR 模式”),不允许显示方程式。请参阅 Lamport 手册第 2 版第 36 页(L. Lamport,LaTeX:文档准备系统,第二版)了解更多信息。如果您
bigdiagram
使用需要更改\catcode
s 的环境(如包tikzcd
定义的环境)进行排版tikz-cd
,则(通常)您不能将其放在另一个命令的参数中。不过,您似乎正在使用xy
(Xy-Pic)包:我无法立即肯定地记得这个环境也需要更改\catcode
s(我大约二十年前使用过 Xy-Pic 包,而且只是偶尔使用),但很可能确实需要更改 s,因此会遇到同样的问题。
您可以通过用内联数学模式代替显示数学模式来解决第一个问题,可能使用它\displaystyle
来获得与显示时相同大小的符号,如下面的代码摘录所示:
\resizebox{\linewidth}{!}{%
\(\displaystyle \sum_{i=1}^{n} x_{i} + \frac{y}{2} = z\)%
}
为了避免第二种情况,您可以使用lrbox
环境将排版图保存在临时存储框中,然后在的参数中使用该框\resizebox
,如下所示
\newsavebox{\tempDiagram}
\begin{lrbox}{\tempDiagram}
\( % "\displaystyle" doesn't matter in this case
\begin{tikzcd} % example taken from the "tikz-cd" manual
A \arrow[rd] \arrow[r,"\phi"] & B \\
& C
\end{tikzcd}
\)
\end{lrbox}
\resizebox{\linewidth}{!}{\usebox{\tempDiagram}}
完整 MWE:
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage{amsmath} % compatibility check
\usepackage{graphics}
\usepackage{tikz-cd}
\begin{document}
\resizebox{\linewidth}{!}{%
\(\displaystyle \sum_{i=1}^{n} x_{i} + \frac{y}{2} = z\)%
}
\newsavebox{\tempDiagram}
\begin{lrbox}{\tempDiagram}
\( % "\displaystyle" doesn't matter in this case
\begin{tikzcd} % example taken from the "tikz-cd" manual
A \arrow[rd] \arrow[r,"\phi"] & B \\
& C
\end{tikzcd}
\)
\end{lrbox}
\resizebox{\linewidth}{!}{\usebox{\tempDiagram}}
\end{document}
下图显示了我在输出文件中得到的完整页面。顺便说一句,我现在正在我的备用电脑上工作,不幸的是,它只配备了 2016 版的 TeXLive;但这不应该对产生的输出产生任何实质性影响。另一方面,我的安装似乎缺少 Xy-Pic 包完成其工作所需的几种字体,所以我无法尝试它…… :-(
最后再说两点:
我建议您考虑切换到该
tikz-cd
包来排版您的图表。正如您所见,按比例(放大或缩小)整个数学公式看起来很糟糕,因为字体也会缩放,并且在实践中,只有当缩放因子非常接近一时,这才是一个可行的解决方案;否则,您应该努力寻找不同的解决方案。