我有一个tex
包含一些 PNG 图像元素的文件\includegraphic
。我在 Windows 上使用 MikTeX,PDF 没问题。
现在,我需要一个 DVI,因此我尝试使用:\pdfoutput=0
这会创建一个 DVI,但只有在我删除所有 PNG 图像之后才能创建……否则我会收到如下错误:
! LaTeX Error: Cannot determine size of graphic in math-box-plot.png (no BoundingBox).
答案1
TeX 是基于文本的,它默认无法确定 PNG 图像本身的大小。
快速解决方案:
\usepackage{bmpsize}
并使用
\usepackage[dvipdfmx]{graphicx}
最好使用extractbb
(也称为ebb
,xbb
)程序来生成.bb
或.xbb
归档 LaTeX。在 ' 中使用此命令命令提示符':
for %i in (*.png) do xbb %i
(或者for %i in (*.png) do extractbb -x %i
,我不确定 MiKTeX。)
并使用
\usepackage[dvipdfmx]{graphicx}
(我使用 TeX Live,只有 dvipdfmx 支持 png 图像。但 MiKTeX 似乎有所不同,我记不太清楚了。)
答案2
安装程序图像魔术师,那么你可以即时完成:
\documentclass{article}
\usepackage[dvips]{graphicx}
\DeclareGraphicsRule{.png}{eps}{.bb}{`convert #1 eps:-}
\DeclareGraphicsRule{.gif}{eps}{.bb}{`convert #1 eps:-}
\usepackage{grfext}
\AppendGraphicsExtensions*{.png,.gif}
\usepackage{bmpsize}
\makeatletter
\newcommand*{\IncludeGraphics}[2][]{%
\begingroup
\let\@found\@empty
\@for\@type:=\bmpsize@types\do{%
\ifx\@found\@empty
\@nameuse{bmpsize@read@\@type}{#2.\@type}%
\ifbmpsize@ok
\let\@found=\@type
\fi
\fi
}%
\ifx\@found\@empty
\includegraphics[{#1}]{#2}%
\else
\includegraphics[{natwidth=\bmpsize@width,natheight=\bmpsize@height,#1}]{#2}%
\fi
\endgroup
}
\makeatother
\begin{document}
\IncludeGraphics{lion}\qquad % a png image
\IncludeGraphics{knuth-tex} % a gif image
\end{document}
顺便说一句:你不需要\pdfoutput=0
简单地运行latex
而不是pdflatex
答案3
我总是让便携式 latex 源同样适合用 latex 和 pdflatex 进行编译。我的补救措施相当简单。
放入\usepackage{graphicx}
前置放大器(不指定任何驱动程序)。
使用导入eps
或pdf
图形\includegraphics{filename}
;然后 latex 编译器加载,filename.eps
而 pdflatex 需要filename.pdf
。如果包被加载, MikTeX 会自动转换eps
为pdf
动态格式。epstopdf
导入带有明确显示扩展名的png
图形;在这种情况下,您不需要发明。位图图形的自然高度和宽度可以从 Windows 资源管理器或任何图形编辑器(例如 Windows Paint)中的文件属性中确定。\includegraphics[nathwith=<XX>bp, natheight=<YY>bp, width=<width>]{filename.png}
.png
\DeclareGraphicsRule