(不仅)beamer:自动附加 \includegraphics 命令中使用的图形文件(到 PDF 输出)

(不仅)beamer:自动附加 \includegraphics 命令中使用的图形文件(到 PDF 输出)
  • 我喜欢将演示文稿中使用的图形文件附加beamer到生成的 pdf 文件中。
  • 背景是,我想让我的工作同事能够使用图形文件,例如在 PowerPoint 中(我是唯一一个在工作中使用 LaTeX 的人)。
  • 我可以使用该包附加图形文件attachfile

有没有办法实现自动化,以便\includegraphics自动嵌入/附加所使用的图形文件?

\includegraphics如果我还能使用命令就太完美了未变这样我就可以将其与现有的演示文稿一起使用。

\documentclass{beamer}
\usepackage{graphicx}
\usepackage{attachfile}

\begin{document}

% For example image, see http://tex.stackexchange.com/questions/231738    

\begin{frame}[c]
\frametitle{Frame With Image}
\centering
\includegraphics[width=0.5\textwidth]{example-image.png} 
\textattachfile{example-image.png}{}
\end{frame}

\end{document}

在此处输入图片描述

答案1

如果你想生成

\includegraphics[width=0.5\textwidth]{example-image.png} 
\textattachfile{example-image.png}{}

对于每幅图像最简单的方法是使用

\xgr[width=0.5\textwidth]{example-image.png} 

\xgr在你的序言中定义

\newcommand\xgr[1][]{%
  \includegraphics[#1]{#2}%
  \textattachfile{#2}{}}

如果你想使用\includegraphics(并且更好,因为它允许 includegraphics 找到真正的文件名,如果你省略扩展名)使用

\makeatletter
\let\saved@Gin@setfile\Gin@setfile
\def\Gin@setfile#1#2#3{%
\saved@Gin@setfile{#1}{#2}{#3}%
\textattachfile{#3}{}}
\makeatother

\Gin@setfile是内部的最后一个“公共”宏\includegraphics,在解析任何缺失的扩展名并在图形路径上查找文件后调用。然后它调用不同于 pdftex 或 latex/dvips 等的特定于驱动程序的代码来实际包含图像。

#3是带扩展名的完整文件名,

#1是“文件类型”(它决定了将使用哪些内部包含宏,通常eps是或pdf或一些表示位图类型的名称,详细信息取决于驱动程序及其支持的文件类型,

#2是“读取文件”,主要用于example-image.bb从位图文件中查找大小信息。

因此上面只是添加了对attachfile的调用来附加#3

相关内容