用于演示的 Beamer 类提供了一种方法(使用 \framezoom 命令)在文档中包含一张图片,单击该图片即可放大,然后再次单击即可缩小。如何在非 Beamer 文档中获得相同的效果;更具体地说,在使用 XeLaTeX 编译的文章类文档中?
是否有一个包可以为文章类中的文档提供此功能?
答案1
这是一个适用于任何文档类中的 XeLaTeX 和 LaTeX->dvipdfmx 的解决方案。它使用了一些 JavaScript,因此在 AdobeReader 中效果最佳。只需将以下代码插入文档前言即可。代码定义了命令
\zoombox[框线宽度]{一般文本}
在本文件中使用。它使得一般文本可点击切换放大和缩小状态。在放大状态下一般文本被放大到刚好可以完全适合应用程序窗口。
就你的情况来说,一般文本应该是类似 \inlcudegraphics[scale=0.1]{picture} 的内容,其中包含原始分辨率的图片,但缩小到所需的缩略图大小。也就是说,只需要包含一个版本的图片。
请注意,该文档至少需要运行两次 (Xe)LaTeX。
亚历山大
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{hyperref}
\makeatletter
\InputIfFileExists{\jobname.zom}{}{}
\newsavebox\zbox
\newcounter{zoom}
\newwrite\zoomdat
\immediate\openout\zoomdat=\jobname.zom
\newcommand{\zoombox}[2][0]{%
\sbox\zbox{#2}%
\special{pdf: dest (zb\thezoom.out) [@thispage /Fit]}%
\raisebox{-\dp\zbox}{\pdfsavepos}%
\protected@write\zoomdat{}{%
\string\expandafter\string\def\string\csname\space zb\thezoom.llx\string\endcsname{%
\noexpand\number\pdflastxpos}%
\string\expandafter\string\def\string\csname\space zb\thezoom.lly\string\endcsname{%
\noexpand\number\pdflastypos}%
}%
\ifcsname zb\thezoom.llx\endcsname\ifcsname zb\thezoom.urx\endcsname%
\special{pdf: dest (zb\thezoom.in) [ @thispage /FitR
\hypercalcbp{\csname zb\thezoom.llx\endcsname sp}
\hypercalcbp{\csname zb\thezoom.lly\endcsname sp}
\hypercalcbp{\csname zb\thezoom.urx\endcsname sp}
\hypercalcbp{\csname zb\thezoom.ury\endcsname sp}
]}%
\special{pdf: ann
width \the\wd\zbox\space
height \the\ht\zbox\space
depth \the\dp\zbox\space
<<
/Type/Annot/Subtype/Link/H/N
/Border [0 0 #1 [1 2]]
/A <<
/S/JavaScript
/JS (
if(typeof(zoomed\thezoom)=='undefined'){
this.gotoNamedDest('zb\thezoom.out');
var zoomed\thezoom=false;
}
)
/Next <<
/S/GoTo/D (zb\thezoom.in)
/Next <<
/S/JavaScript
/JS(
if(zoomed\thezoom){
this.gotoNamedDest('zb\thezoom.out');
zoomed\thezoom=false;
}else{
zoomed\thezoom=true;
}
)
>>
>>
>>
>>}%
\fi\fi%
\usebox{\zbox}\raisebox{\ht\zbox}{\pdfsavepos}%
\protected@write\zoomdat{}{%
\string\expandafter\string\def\string\csname\space zb\thezoom.urx\string\endcsname{%
\noexpand\number\pdflastxpos}%
\string\expandafter\string\def\string\csname\space zb\thezoom.ury\string\endcsname{%
\noexpand\number\pdflastypos}%
}%
\stepcounter{zoom}%
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
编辑:
可选参数box line width
已添加到\zoombox
宏中。在给定线宽的缩放区域周围添加虚线,以屏幕像素为单位。默认值:0(无可见框)。
该宏的 pdftex 版本\zoombox
如下:PDF 中的自动“放大”超文本框。
答案2
据我所知,\framezoom 命令不使用 javascript 或类似的东西,而只是生成两个幻灯片(一个带有大图片)和两个幻灯片之间的一些链接。这当然也可以用文章来实现:例如,您可以将大版本放在文章末尾的空白页上。
答案3
您可以使用ocg工具包。它提供了 \ocgpicture 命令。