键值顺序相关 \includegraphics 错误:!包图形错误:除以 0

键值顺序相关 \includegraphics 错误:!包图形错误:除以 0

下面的代码

\documentclass{article}
\usepackage{graphicx}
\begin{document}
  \includegraphics[angle=180,width=10cm,height=1cm]{example-image-a}
\end{document}

产生以下错误

! Package graphics Error: Division by 0.

See the graphics package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.148 ...0,width=10cm,height=1cm]{example-image-a}

? 

这是预料之中的吗?如果是,为什么?如果不是,为什么会发生这种情况?

这原本不是我的问题。我的一个学生问了这个问题,我除了建议使用

\documentclass{article}
\usepackage{graphicx}
\begin{document}
  \includegraphics[width=10cm,height=1cm,angle=180]{example-image-a}
\end{document}

编译结果符合预期。

答案1

这个问题在评论中得到了解决。但在这里(5 个月后),我通过 MWE 为其他读者直观地展示了这个问题。在第一行中,我绘制了基线和两幅绕其中心旋转 90 度的图像。第一个指定为height=1cm,而第二个指定为totalheight=1cm,其中totalheight构成图像高度与深度之和。

我们在这里要指出的是,它height=1cm明确地指的是基线以上的高度量。而这正是理解 OP 调用失败的关键\includegraphics[angle=180,width=10cm,height=1cm]{example-image-a}。指令从左到右进行处理。如输出的第二行所示,旋转 180 度的图像在基线以上的高度为零。因此,没有有限的缩放级别可以发生,以使生成的图像显示出1cm高于基线的高度。这种无限制缩放的尝试导致了除以 0 的错误。

\documentclass{amsart}
\usepackage{graphicx}
\begin{document}
\leavevmode\rlap{\rule{3in}{.5pt}}
\raisebox{.4cm}{1cm}%
\rule{1pt}{1cm}
\includegraphics[origin=center,angle=90,height=1cm]{example-image}
\includegraphics[origin=center,angle=90,totalheight=1cm]{example-image}
\rule[-7.2pt]{1pt}{1cm}%
\raisebox{.25cm}{1cm}
\bigskip

Height is zero

\leavevmode\rlap{\rule{3in}{.5pt}}
\includegraphics[angle=180,width=1cm]{example-image}

scaling it by $\infty$\\ still has zero height
\end{document}

在此处输入图片描述

相关内容