LaTeX 中是否有任何软件包可以将演示文稿中使用的所有图像放在幻灯片末尾,并附上使用这些图片的幻灯片的链接。换句话说,我希望拥有演示文稿中使用的图像的全尺寸或缩放图像幻灯片,并附上使用这些图像的幻灯片的链接。
举个例子,假设幻灯片 1 上有图像 A 和 B,幻灯片 2 上有图像 C 和 D。我希望幻灯片 3、4、5 和 6 上有 A、B、C 和 D 的全尺寸图像,并且幻灯片 1 中有图像 A 的链接至幻灯片 3,以此类推。
答案1
我不知道有哪个软件包可以满足您的要求。但是可以为此编写宏。
以下解决方案提供了一个宏,\includegraphicstwic
用于在调用它的地方插入图片并存储一些有关它的信息以便稍后再次插入。使用其最后一个参数,可以为带有大图片的框架指定标题(这是强制性的)。要再次插入图片,\outputpictures
必须在最后一帧之后调用该宏。此宏还可以防止为图片框架生成小框架。
内部beamer
缩放功能用于将图片缩放到最大可能尺寸。图片出现在框架文本区域的左上角,并缩放以适合高度或宽度,即宽度不够的图片将在右侧留有空白,高度不够的图片将在底部留有空白。
还设置了链接。单击演示文稿中的图片将转到带有放大图片的框架,单击后者将返回(使用 PDF 查看器的返回功能)。
您可以通过注释掉\frametitle{#3}
代码中的以下行来禁用带有放大图片的框架的标题。如果您想要这些框架的迷你框架,请注释掉以下行\nomoreminiframes
。
编辑:
我修改了代码。它现在包含版本 1、2a 和 2b。最后两个在代码中被注释掉了。注释显示了要为哪个版本启用什么。
版本 1与之前相同,我只是稍微整理了一下代码。请注意,beamer
缩放功能会自动生成 GoBack 链接,因此无法更改。
版本 2a不使用缩放功能。相反,图片会缩放到\textheight
尽可能\textwidth
大。不幸的是,使用缩放功能后,图片会变小,但居中效果很好。
这里整张图片是指向其在正常框架中首次出现的固定链接,例如,第 5 页的图片将链接到第 1 页,即使您通过单击第 2 页上的该图像转到该页。
版本 2b与版本 2a 几乎相同,但此处的大图是两个链接。左侧将转到第一次出现的位置(与 2a 类似),但右侧是 GoBack 链接。
新代码:
\documentclass{beamer}
\usetheme{Dresden}
\usecolortheme{crane}
\makeatletter
% both version
%-------------------------------------------------------------------------------
% necessary to get rid of miniframes for appended big pictures
\newcommand{\disableslideentry}{\def\slideentry##1##2##3##4##5##6{}}
\newcommand{\nomoreminiframes}{\addtocontents{nav}{\protect\headcommand{\protect\disableslideentry}}}
% counter for automatially generated links
\newcounter{picnum}
\setcounter{picnum}{0}
% list with infos about pictures to be appended
\newcommand{\@pltlist}{}
%-------------------------------------------------------------------------------
% version 1 start: using beamers \framezoom
% -> paper size images, go-back links
%-------------------------------------------------------------------------------
% overlay-aware command for including pictures on the slide and on a frame at the end
% #1: options for \includegraphics, not used in frame with full picture
% #2: file for picture
% #3: title for frame with full picture
\newcommand<>{\includegraphicstwice}[3][]{%
\@includegraphicstwice[#1]{#2}{#3}#4
}
\def\@includegraphicstwice[#1]#2#3<#4-#5>{%
\only<#4>{%
\stepcounter{picnum}%
\xdef\@pltlist{\@pltlist,#2/#3}%
}%
\hyperlink<#4-#5>{fullpic\thepicnum}{\includegraphics[#1]{#2}}%
}
% get image size
\newbox\@imagebox
\newdimen\@imageheight
\newdimen\@imagewidth
\newcommand{\get@imagesize}[1]{%
\sbox{\@imagebox}{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{#1}}%
\@imageheight\ht\@imagebox
\@imagewidth\wd\@imagebox
\typeout{text: \the\textwidth\space x \the\textheight}%
\typeout{image: \the\@imagewidth\space x \the\@imageheight}%
}
% command to insert frames with full pictures, to be called at the end
\newcommand{\outputpictures}{%
% comment out the next line to get miniframes for the frames with pictures
\nomoreminiframes
\setcounter{picnum}{0}%
\expandafter\@outputpictures\@pltlist,\@@nil
}
\def\@outputpictures,#1\@@nil{\@@outputpictures#1\@@nil}
\def\@@outputpictures#1,#2\@@nil{%
\@@@outputpictures#1\@@nil
\def\@tempa{#2}\ifx\@tempa\@empty\else
\@@outputpictures#2\@@nil
\fi
}
\def\@@@outputpictures#1/#2\@@nil{%
\stepcounter{picnum}%
\get@imagesize{#1}%
\begin{frame}<2>[plain]
% comment out next line to get rid of frame title for picture frames
\frametitle{#2}%
\framezoom<1><2>(0pt,0pt)(\@imagewidth,\@imageheight)%
\hypertarget<2>{fullpic\thepicnum}{\usebox\@imagebox}%
\end{frame}
}
%-------------------------------------------------------------------------------
% version 1 end
% version 2 start: without \framezoom
% -> text size images, links to first appearance of picture
%-------------------------------------------------------------------------------
%% overlay-aware command for including pictures on the slide and on a frame at the end
%% #1: options for \includegraphics, not used in frame with full picture
%% #2: file for picture
%% #3: title for frame with full picture
%\newcommand<>{\includegraphicstwice}[3][]{%
% \@includegraphicstwice[#1]{#2}{#3}#4
%}
%\def\@includegraphicstwice[#1]#2#3<#4-#5>{%
% \only<#4>{%
% \stepcounter{picnum}%
% \xdef\@pltlist{\@pltlist,#2/smallpic\thepicnum/#3}%
% }%
%% \hyperlink<#4-#5>{fullpic\thepicnum}{\includegraphics[#1]{#2}}%
% \hyperlink<#4-#5>{fullpic\thepicnum}{%
% \alt<#4>{\hypertarget{smallpic\thepicnum}{\includegraphics[#1]{#2}}}{\includegraphics[#1]{#2}}}%
%}
%
%% version 2b only: needed for split link version
%%-----------------------------------
%%% get image size
%%\newbox\@imagebox
%%\newdimen\@imageheight
%%\newdimen\@imagewidth
%%\newcommand{\get@imagesize}[1]{%
%% \sbox{\@imagebox}{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{#1}}%
%% \@imageheight\ht\@imagebox
%% \@imagewidth\wd\@imagebox
%% \typeout{text: \the\textwidth\space x \the\textheight}%
%% \typeout{image: \the\@imagewidth\space x \the\@imageheight}%
%%}
%%-----------------------------------
%
%% command to insert frames with full pictures, to be called at the end
%\newcommand{\outputpictures}{%
% % comment out the next line to get miniframes for the frames with pictures
% \nomoreminiframes
% \setcounter{picnum}{0}%
% \expandafter\@outputpictures\@pltlist,\@@nil
%}
%\def\@outputpictures,#1\@@nil{\@@outputpictures#1\@@nil}
%\def\@@outputpictures#1,#2\@@nil{%
% \@@@outputpictures#1\@@nil
% \def\@tempa{#2}\ifx\@tempa\@empty\else
% \@@outputpictures#2\@@nil
% \fi
%}
%\def\@@@outputpictures#1/#2/#3\@@nil{%
% \stepcounter{picnum}%
% \begin{frame}[plain]
% % comment out next line to get rid of frame title for picture frames
% \frametitle{#3}%
% % version 2a: link to first appearance
% %-----------------------------------
% \centering
% \hyperlink{#2}{\hypertarget{fullpic\thepicnum}{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{#1}}}
% %-----------------------------------
% % version 2b: left half: link to first appearance, right half: go-back link
% %-----------------------------------
%% \get@imagesize{#1}%
%% \centering
%% \vbox to 0pt{\hbox to \textwidth{\hfil
%% \hypertarget{fullpic\thepicnum}{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{#1}}\hfil}\vss}%
%% \hyperlink{#2}{\vbox to \@imageheight{\hbox to 0.5\@imagewidth{\hfill}\vfil}}%
%% \Acrobatmenu{GoBack}{\vbox to \@imageheight{\hbox to 0.5\@imagewidth{\hfil}\vfil}}%
% %-----------------------------------
% \end{frame}
%}
%-------------------------------------------------------------------------------
% version 2 end
\makeatother
\begin{document}
\section{First section}
\subsection{First subsection}
\begin{frame}{First frame}
\includegraphicstwice<1->[width=0.45\textwidth]{example-image}{First picture}\hfill
\includegraphicstwice<2->[width=0.45\textwidth]{example-image-a}{Second picture}
\end{frame}
\begin{frame}{Second frame}
\includegraphicstwice<1->[width=0.25\textwidth]{example-image-9x16}{Third picture}\hfill
\includegraphicstwice<2->[width=0.45\textwidth]{example-image-16x9}{Fourth picture}
\end{frame}
\outputpictures
\end{document}
新结果:
主要框架:
带大图片的框架,版本 1:
带大图片的框架,版本 2a 和 2b: