\includegraphics 和 dvisvgm 的问题

\includegraphics 和 dvisvgm 的问题

我正在使用 XeLatex 和 dvisvgm 生成 .svg 文件。我想使用 \includegraphics 包含一个 .png 图像,但它不起作用:有一个替换图像而不是我想要的图像。

以下是我用来编译的内容(见下页):

    END {
system("xelatex -no-pdf svgbeamer.tex && xelatex -no-pdf svgbeamer.tex && dvisvgm --font-format=ttf --exact --zoom=-1 -p1,- svgbeamer.xdv")
}

以下是我的简单示例:

\documentclass[dvisvgm,aspectratio=169]{beamer}

\setbeamersize{text margin left=0cm} %to get real fullscreen

\begin{document}

\includegraphics[height=8cm]{banane.png}

\end{document}

仅使用 XeLatex 编译的相同代码就可以正常运行。

有什么线索吗?

PS:图片是

在此处输入图片描述

答案1

PNG(以及其他兼容 Web 的位图格式,如 JPEG 和 GIF)并未物理嵌入到 SVG 输出中dvisvgm,仅通过外部链接引用。只有 PostScript 和 PDF(大多数静态位图格式可使用外部转换器(如 ImageMagick)转换或包装成它们)才嵌入到 SVG 输出中。它们保持独立,并且必须在运行时由 Web 浏览器找到。

为了使 SVG 自给自足,位图文件必须采用 base64 编码并嵌入为data:image/png;base64,...数据 blob。这可以按如下方式完成,修补graphicx后端驱动程序dvisvgm

这需要media4svg较新版本的软件包(>= v0.9 2022-08-12)。

排版

dvilualatex svgbeamer
dvisvgm --font-format=woff2 --bbox=papersize --zoom=-1 -p1,- svgbeamer

或者

latex --shell-escape svgbeamer
dvisvgm --font-format=woff2 --bbox=papersize --zoom=-1 -p1,- svgbeamer

或者

xelatex --no-pdf --shell-escape svgbeamer
dvisvgm --font-format=woff2 --bbox=papersize --zoom=-1 -p1,- svgbeamer.xdv
\documentclass[dvisvgm,aspectratio=169]{beamer}

%\graphicspath{{myimages}} % add search dirs as needed

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% patch graphics backend driver `dvisvgm.def' to physically embed
% bitmaps into DVI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\let\Ginclude@bitmapOrig\Ginclude@bitmap
\def\Ginclude@bitmap#1{%
  \baseSixtyFour{#1}{72}{{?nl}}\bitmap@stream%
  \Ginclude@bitmapOrig{%
    data:image/\expandafter\remove@dot\Gin@ext;;base64,{?nl}%
    \bitmap@stream}%
}
\def\remove@dot.#1;{#1}
\makeatother

\RequirePackage{media4svg} % provides base64-encode utility
\ExplSyntaxOn
\cs_new:Npn\baseSixtyFour#1#2#3#4{
  \sys_if_engine_luatex:TF{
    \xdef#4{\directlua{media4svg.base64("#1",#2,"#3")}}
  }{
    \msvg_convert_file_to_blob:nnnN{#1}{#2}{#3}#4
  }
}
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
\begin{document}

\begin{frame}{Embedded PNG}
\includegraphics[height=6cm]{banane.png}
\end{frame}

\end{document}

相关内容