一般来说我们使用 LaTeX 的时候都是直接使用 pdflatex 直接生成 PDF 文件,但是有时候也许有特殊需求,需要使用 LaTeX 编译器生成 DVI 文件。一般来说的话使用 LaTeX 这个编译器编译之后会默认生成 DVI 文件,当然,也可以直接使用命令行生成。但是,老唐在生成过程中遇到的最大的问题是关于图片的问题。使用 pdflatex 的时候不存在任何问题,但是换成 latex 之后会提示“Cannot determine size of graphic”的错误。本文就介绍一下怎么生成 DVI 文件以及怎么解决这个错误。
一、LaTex 生成 DVI 文件的方法
一般来说,直接打开 texlive 的编辑器,然后选择使用 latex 编译就会生成 DVI 文件。
此外,也可以直接打开命令行,到你文件所在目录,然后输入下面命令生成:
latex input.tex
如果想继续生成 PDF 文件,使用下面命令:
dvipdfmx input.dvi
如果提示错误,可以看看具体错误是什么,如果是“Cannot determine size of graphic”这个错误,可以继续往下看。
二、“Cannot determine size of graphic” 解决方法
解决方法有两个,分别阐述如下。
方法一:指定图片大小
由于这个错误是因为使用 latex 的时候无法自动获取图片大小(包括 JPG、PNG、PDF 等格式的图片都不行),所以我们需要手动指定图片大小。指定大小方法如下:
\begin{figure} \centering \includegraphics[width=0.8\textwidth,natwidth=610,natheight=642]{tiger.pdf} \end{figure}
大家可以看到在 \includegraphics
里面有 natwidth
和 natheight
这两个属性,默认我们是不会添加这两个属性的,这里必须添加才能解决这个问题,这两个属性分别是图片的宽度和高度,单位可以是英尺或者厘米,默认是英尺,比如我们可以使用 natwidth=10.57cm
来指定使用厘米做单位。
那么如何获取图片大小呢?对于 JPG 或者 PNG 格式的图片来说,获取大小很简单。对于 PDF 来说,获取图片大小只需要打开文件,然后在菜单栏查看文件属性即可:
方法二:直接把图片转换成 EPS(推荐)
使用 EPS 图片的话是不需要设置图片大小的,这也是最为推荐的一种解决方式。
如果是 JPG 或者 PNG,那么可以在生成的时候直接选择生成 EPS 文件,比如 Python 生成图片的时候可以设置。
如果是 PDF,可以参考《macOS / Linux 上如何把 PDF 文件转换成 EPS 文件》。
参考文献:
- https://www.jianshu.com/p/21e236c82654
- https://tex.stackexchange.com/questions/17734/cannot-determine-size-of-graphic
- https://tex.stackexchange.com/questions/170575/metrics-of-natwidth-parameter-in-includegraphics-when-dealing-with-pdf