我想使用pstool
来beamer
创建一个演示文稿,pdflatex
其中包含由 处理过的图像psfrag
。但是,正如下面的简单示例所示,图像是使用 documentclass 处理的beamer
,因此每个图像beamer
周围都有一个完整的“框架”。有办法解决这个问题吗?
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage[process=all,crop=pdfcrop]{pstool}
\begin{document}
\begin{frame}
\frametitle{Circle}
\begin{figure}
\psfragfig[width=0.3\textwidth]{figures/circle}
{
\psfrag{1}{\(s\)}
}
\end{figure}
\end{frame}
\end{document}
我怀疑如果可以覆盖用于pstool
处理图形的文档类,那将是一个解决方案,但我还没有找到如何做到这一点。
谢谢。
答案1
解决这个问题的关键是认识到“常规”编译过程以 PDF 模式通过 pdfLaTeX 发送您的文档,并且为了进行替换,psfrag
图形以 DVI 模式通过 pdfLaTeX 发送。
因此,仅针对主文档或仅针对每个图形的条件命令可以简单地使用\ifpdf
:
\ifpdf
% setup for the main document only
\else
% setup for pstool images only
\fi
就你的情况来说:
\ifpdf\else
\setbeamertemplate{navigation symbols}{}
\fi
文档中完全没有提到这一点,所以我现在就去修复它。
答案2
pstool
软件包使用主文档类(在您的 Q 中是 beamer)的前导码在图形和 psfrag 命令latex-dvips-ps2pdf
的底层辅助处理() 期间构建 pdf 图形。因此,要获得没有导航栏的图形,请添加.eps
circle.pdf
\setbeamertemplate{navigation symbols}{}
在序言中\documentclass{beamer}
中
如何摆脱投影仪中的导航符号?并编译pdflatex -shell-escape
得到
一旦所有 pdf 图形都通过辅助处理生成。设置选项process=none
而不是process=all
并注释掉仅有的像这样
%\setbeamertemplate{navigation symbols}{}
用图形(无导航栏)处理投影仪幻灯片,最后你会在主投影仪幻灯片上得到导航栏。
笔记:\EndPreamble
可用于限制用于辅助处理的前导码,从而加快处理速度。更多详细信息请参阅pstool 文档
答案3
使用 {背景画布}-图像时也会出现同样的问题。因此,这是使用 {背景画布}-图像的情况下 @Will 解决方案的扩展。
\ifpdf
\setbeamertemplate{background canvas}{%
\includegraphics[width=\paperwidth,height=\paperheight]{my_background_image}
}
\else
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{background canvas}{}
\fi