比例盒和方程

比例盒和方程

我有一个大图表(我用 \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

我认为问题主要有两个根源:

  1. LaTeX\[...\]只允许在所谓的“段落模式”(该名称由 Leslie Lamport 自己选择)中使用“显示数学模式”,即语法所暗示的数学模式,粗略地说,这是 LaTeX 在排版普通段落时的模式。不幸的是,命令的主要参数\resizebox排版在另一种模式下(Lamport 称之为“从左到右模式”,简称“LR 模式”),不允许显示方程式。请参阅 Lamport 手册第 2 版第 36 页(L. Lamport,LaTeX:文档准备系统,第二版)了解更多信息。

  2. 如果您bigdiagram使用需要更改 \catcodes 的环境(如包tikzcd定义的环境)进行排版tikz-cd,则(通常)您不能将其放在另一个命令的参数中。不过,您似乎正在使用xy(Xy-Pic)包:我无法立即肯定地记得这个环境也需要更改\catcodes(我大约二十年前使用过 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 包完成其工作所需的几种字体,所以我无法尝试它…… :-(

上述 MWE 的输出

最后再说两点:

  1. 我建议您考虑切换到该tikz-cd包来排版您的图表。

  2. 正如您所见,按比例(放大或缩小)整个数学公式看起来很糟糕,因为字体也会缩放,并且在实践中,只有当缩放因子非常接近一时,这才是一个可行的解决方案;否则,您应该努力寻找不同的解决方案。

相关内容