我注意到,当包含一些 EPS 文件时,无论出于何种原因,边界框都以一种相当奇怪的方式指定(例如,GIMP 似乎犯了这种错误)。
我可能应该浏览每个文件并手动更正这些问题 - 但我不得不问,有没有一种自动化的方法可以做到这一点而又不会带来太多麻烦?
我看到了该包bmpsize
,但它似乎不适用于 EPS 文件。
当我使用 pdflatexepstopdf
而不是 latex -> dvips -> ps2pdf 时,这对我来说是个问题。与其发布 MWE,我提出一个简单的问题,有没有办法将所有包含仅位图的 EPS 图像的边界框覆盖为 (0, 0, width, height)?
编辑:我还注意到,以下解决方案虽然不是完全自动化的,但也不起作用:
使用 pdflatex 编译时边界框的等效性(ps2eps 仍然返回不正确的边界框)。
答案1
下面这个最小的例子定义了\check@includegraphics@ext{<filename>}
(大部分\Ginclude@graphics
取自graphics.dtx
)。它会扫描所有可能包含的<filename>
图形图像。如果.bmp
找到,您可以提供其他默认设置,否则它将包含您提供的任何图像:
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\def\check@includegraphics@ext#1{%
\begingroup
\let\input@path\Ginput@path
\filename@parse{#1}%
\ifx\filename@ext\relax
\@for\Gin@temp:=\Gin@extensions\do{%
\ifx\Gin@ext\relax
\Gin@getbase\Gin@temp
\fi}%
\else
\Gin@getbase{\Gin@sepdefault\filename@ext}%
\fi
\xdef\filename@ext{\Gin@ext}%
\endgroup}
\let\oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[2][]{%
\check@includegraphics@ext{#2}% Find possible extension of graphics to be included
\ifnum\pdfstrcmp{\filename@ext}{.bmp}=0 % BMP image
\oldincludegraphics[#1,bb=0 0 10 10,clip=true]{#2}%
\else
\oldincludegraphics[#1]{#2}%
\fi}
\makeatother
\begin{document}
\includegraphics[height=\baselineskip]{example-image-a}
\includegraphics[height=\baselineskip]{example-image-b.pdf}
\end{document}
正如您所看到的,我提供了一个b
圆形的b
牛和clip=true
,您可以修改它以满足您对位图图像包含的要求。
请注意,此条件特定于小写文件扩展名。因此,它将以通常的方式.bmp
包含.BMP
、 、 ...。.Bmp