自动更正仅包装位图的 eps 文件的边界框

自动更正仅包装位图的 eps 文件的边界框

我注意到,当包含一些 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

相关内容