diff options
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/fancytooltips/fancytooltips.dtx | 474 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/fancytooltips/fancytooltips.ins | 58 |
2 files changed, 532 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.dtx b/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.dtx new file mode 100644 index 00000000000..1738def53a6 --- /dev/null +++ b/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.dtx @@ -0,0 +1,474 @@ +% \iffalse meta-comment +% +% Copyright (C) 2004 by Robert Marik <marik@mendelu.cz> +% ----------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{fancytooltips.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{fancytooltips} +%<*package> + [2007/02/20 v1.1 fancytooltips.dtx file] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\usepackage[pdftex]{eforms} +\usepackage[pdftex]{color} +\usepackage[filename=tip]{fancytooltips} +\buttontipwidth=2cm +\buttontipheight=2cm +\begin{document} +\color{black} + \DocInput{fancytooltips.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{332} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{v1.0}{2007/02/15}{Initial version} +% \changes{v1.1}{2007/02/20}{Clener code, better documentation, fix +% for bug with delayinterval macro, support for dvips and DIstiller +% users.} +% +% \GetFileInfo{fancytooltips.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% +% \title{The \textsf{fancytooltips} package\thanks{This document +% corresponds to \textsf{fancytooltips}~\fileversion, dated \filedate.}} +% \author{Robert Marik \\ \texttt{marik@mendelu.cz}} +% +% \maketitle +% +% \section{Introduction} +% +% \null\hfill\TooltipHidden\frametip\\ +% The package |fancytooltips| is a package for \LaTeX. The pdf can be +% created by pdflatex or by latex + dvips + +% AdobeDistiller\footnote{not free ps2pdf} + Adobe +% Acrobat\footnote{not free Adobe Reader.}. It allows to create +% tooltips in a similar way like |cooltooltips| package, but the +% tooltip is a page from another PDF file. In this way you can use +% also mathematics, pictures and animations in your tooltips. The +% resulting PDF file can be used also with free Abobe Reader. +% +% The \color{black}tooltips are activated by |MouseOver| action with +% pressed |Shift| button down or by |MouseDown| action. The tooltips +% are deactivated after closing page or by moving mouse outside the +% link. You can try the links \tooltip{here}{1} (Einstein's formula) +% and also \tooltipanim{here}{2}{7} (animation -- numbers from 1 to +% 6). Tooltip appears on the right boundary of the first paragraph. +% You have to use the free Adobe Reader or nonfree Adobe Acrobat to +% see the effect (xpdf, evince and others fail to work with +% JavaScripts). For more examples how the presentation may look like +% see the |example.pdf| and |example-min.pdf| files in the |examples| +% subdirectory. +% +% The buttons are created using |eforms.sty| which is a part of +% AcroTeX bundle. +% +% \section{Usage} +% \subsection{The file with tooltips} +% The file with tooltips is an ordinary pdf file, one tooltip per +% page, tooltips should be in the top right corner at the page, in a +% colored box and the rest of the page should be +% transparent\footnote{See the example file \texttt{tooltipy.tex} and +% \texttt{tooltipy.pdf} which make use of \texttt{geometry.sty} +% package to set the page dimensions and \texttt{\string\colorbox} +% and \texttt{minipage} to make the box with tooltip}. We also +% provide simple cross referencing mechanism to reffer to the +% tooltips. If the pdf file is created by \LaTeX, +% \DescribeMacro{\keytip} you can define keywords to reffer to the +% pages using |\keytip| command. Simply put +% |\usepackage[createtips]{fancytooltips}| into preamble and write +% \texttt{\string\keytip}\marg{foo} in document. This writes +% information about keyword \meta{foo} and the pagenumber into file +% |fancytips.tex|. +% +% \subsection{The file with presentation -- pdf\LaTeX users} +% In the file with presentation, the user is responsible +% \begin{itemize} +% \item to include package |eforms| with |pdftex| option before +% loading fancytooltips package, and +% \item input either |color| or |xcolor| package in the +% preamble. +% \end{itemize} +% This is not convenient for the user, but everybody uses different +% package and from this reason, this part is left to the user. (And +% among others, the |color| or |xcolor| package is probably inputted +% by the package which is used to build the presentation.) +% +% To input the tooltips from file \meta{foo.pdf} call the package with +% \meta{filename} option |\usepackage[filename=foo]{fancytooltips}|, +% input images for tooltips somewhere in the document using +% \DescribeMacro{\TooltipHidden} macro |\TooltipHidden| +% \DescribeMacro{\frametip} and put the macro |\frametip| on every +% page\footnote{In the current document the \texttt{\string\frametip} +% command was used only once in the first paragraph, since we have +% tooltips in this paragraph only and the tooltips in the top right +% corner of the page would be outside of the screen in most cases.} +% in the right top corner of your document\footnote{See the file +% \texttt{example.tex} and \texttt{example-min.tex} to know how to +% achieve this with the \texttt{pdfscrren.sty} presentation bundle +% and pure \texttt{article.cls} class, respectively.}. +% \DescribeMacro{\buttontipwidth} \DescribeMacro{\buttontipheight} The +% dimensions of button with tooltips (created by |\frametip| macro) +% are stored in the |\buttontipwidth| and |\buttontipheight| length +% variables. If the page with tooltip is bigger, it is resized to fit +% into the button. You can change it for example by +% |\buttontipwidth=4in|. To get expected results (tooltips in the top +% right corner) these lengths should be equal or constant multiples of +% the page dimensions of the file with tooltips. The button is inside +% a box with zero dimensions and hence the box produced by |\frametip| +% command has zero dimensions. +% +% +% \DescribeMacro{\tooltip} The user can put the tooltip into her or +% his presentation using the command +% \texttt{\string\tooltip}{\marg{stuff}\marg{keyword-or-pagenumber}} +% where \meta{stuff} is the printed text in \meta{tooltipcolor} color +% and \meta{keyword-or-pagenumber} is either the pagenumber of the +% tooltip in the external file or the keyword defined by |\keytip| +% command. \DescribeMacro{\TooltipExtratext} The printed text +% \meta{stuff} is followed by |\TooltipExtratext| command. The default +% value is small blue soap in a box with zero dimensions, as you have +% seen in the second paragraph of this documentation. There is a +% package option |noextratext| which defines |\TooltipExtratext| to be +% empty. +% +% \DescribeMacro{\tooltipanim} The user can put a series (animation) of +% tooltips into the presentation by using +% \texttt{\string\tooltipanim}\marg{stuff}\marg{start}\marg{end} +% command, where \meta{start} and \meta{end} are keywords defined by +% |\keytip| command or page numbers. \DescribeMacro{\delayinterval} +% The delay between two frames is |\delayinterval| milliseconds. The +% default value is 200, you can change it by command +% |\def\delayinterval{100}|. +% \subsection{Changes for dvips users} +% dvips users have to specify option |dvips| in both |fancytips| and +% |eforms| packages. They have to use also a |pages| option with the +% number of pages in the PDF file with tooltips. You have to call the +% package by +% something like this:\\ +% |\usepackage[dvips]{eforms}|\\ +% |\usepackage[dvips,filename=tooltipy,pages=27]{fancytooltips}| +% +% You have to |latex| and |dvips| your file. This produces +% |filename.ps| and |Tooltipsdljs.fdf| files. Distill the pdf file +% into |filename.pdf| and open this file by Adobe Acrobat - this +% imports macros from |Tooltipsdljs.fdf| file. In Acrobat's JavaScript +% console (|Crtl+J|) run (|Ctrl+Enter|) the command |ImportIcons();| +% which is defined for the document and it imports the icons and +% returns 1. The file with pdf icon must be in the working directory. +% Then save the file under another name. +% +% \StopEventually{} +% +% \section{Implementation} +% \begin{macrocode} +%<*package> +\RequirePackage{everyshi} +\RequirePackage{graphicx} +\RequirePackage{xkeyval} + +\newif\ifcreatetips\createtipsfalse +\DeclareOptionX{createtips}{\createtipstrue} + +\newif\ifTooltip@usepdftex\Tooltip@usepdftextrue +\DeclareOptionX{dvips}{\Tooltip@usepdftexfalse} + +\newif\ifextratext\extratexttrue +\DeclareOptionX{noextratext}{\extratextfalse} + +\DeclareOptionX{filename}{\xdef\TooltipFilename{#1}} +\DeclareOptionX{pages}{\xdef\TooltipPages{#1}} + +\ProcessOptionsX + +\ifx\TooltipFilename\undefined +\PackageWarning{fancytooltips}{** The filename with tooltips is not given. **} +\fi + +\ifTooltip@usepdftex +\def\TooltipExtratext{\hbox to 0 pt{\smash + {\raisebox{0.5em}{\includegraphics[width=1em]% + {fancytooltipsmark.pdf}}}\hss}} +\else +\def\TooltipExtratext{\hbox to 0 pt{\smash + {\raisebox{0.5em}{\includegraphics[width=1em]% + {fancytooltipsmark.eps}}}\hss}} +\fi%\ifTooltip@usepdftex +\ifextratext\else\let\TooltipExtratext\relax\fi + +\ifcreatetips +% \end{macrocode} +% This part (three lines) is processed if the option |createtips| is +% used. In the opposite case we process the second part, up to the end +% of the package. +% \begin{macrocode} +\newwrite\tipfile +\immediate\openout\tipfile fancytips.tex +\def\keytip#1{\write\tipfile{\string\tooltipname{#1}{\arabic{page}}}} +\else +% \end{macrocode} +% If dvips is used, we define icons by the command |\eqIcon| stolen +% from |exerquiz.sty|. The following definitions are verbatim copy from +% |exerquiz.sty|. The definition of |\eqIconDefaults| contains some +% customizations. +% \begin{macrocode} +\ifTooltip@usepdftex\else +\ifx\everyeqIcon\undefined +\newcommand\everyeqIcon[1]{\def\every@eqIcon{#1}} +\def\every@eqIcon{} +\newcommand\eqIcon[4][] +{% + \push@@Button{#1}{#2}{#3}{#4}{}{\eq@setButtonProps\eq@Button@driver}% + {\eqIconDefaults\every@ButtonField\every@eqIcon}% +} +\fi%\ifx\everyeqIcon\undefined +\def\eqIconDefaults +{% + \rawPDF{}\S{}\mkIns{/TP 1 /IF<</A[1.0 1.0]/SW/B>>}\R{270} + \CA{}\RC{}\AC{}\BC{}\BG{}\H{B} + \textColor{0 g}\Ff{\FfReadOnly} +} +\fi%\ifTooltip@usepdftex +% \end{macrocode} +% Macro |\frametip| creates button in which tooltips appear. You have +% to use macro |\frametip| on every page in your presentation in right +% top corner (see the directory |examples|). +% \begin{macrocode} +\def\frametip{\vbox to 0 pt{\hbox to 0 pt{\hss\buttontip}\vss}} +\newdimen\buttontipwidth \buttontipwidth=5in +\newdimen\buttontipheight \buttontipheight=5in +\ifTooltip@usepdftex +\def\buttontip{% +\pdfstartlink user{% + /Subtype /Widget + /F 6 + /T (ikona) + /FT /Btn + /Ff 65536 + /H /N + /BS << /W 1 /S /S >> + /MK << /TP 1 /IF <</SW /B>> >> +}% +\vbox to \buttontipheight {\vss\hbox to \buttontipwidth{\hss}}\pdfendlink} +\else +\def\buttontip{% + \eqIcon[\BC{}\BG{}\F{\FHidden}]{ikona}{\buttontipwidth}{\buttontipheight} + } +\fi%\ifTooltip@usepdftex +% \end{macrocode} +% In the macros |\tooltip| and |\tooltipanim| we print the text into +% box with zero dimensions and then we build a button which covers +% this text and has an associated JavaScript action. +% \begin{macrocode} +\definecolor{tooltipcolor}{rgb}{0,0,1} +\def\tooltip#1#2{\checkTipNumber{#2}% + \edef\TipNumber{\FindTipNumber{#2}}% + \setbox0=\hbox{{\color{tooltipcolor}{#1}}}\hbox to 0 pt{{\copy0\TooltipExtratext\hss}}% + \pushButton[\BC{}\BG{}\S{}\AA{ + \AAMouseExit{\JS{CloseTooltips();}} + \AAMouseEnter{\JS{ + try {app.clearInterval(animace);}catch (e) {} + if (event.shift) {this.getField("ikona").hidden=false; + this.getField('ikona').buttonSetIcon(this.getField("animtiph\TipNumber").buttonGetIcon());}}} + } + \A{\JS{this.getField("ikona").hidden=false; + try {app.clearInterval(animace);}catch (e) {} + this.getField('ikona').buttonSetIcon(this.getField("animtiph\TipNumber").buttonGetIcon());}}] + {TooltipField}{\wd0}{\ht0}} +\def\delayinterval{200} +\def\tooltipanim#1#2#3{% + \checkTipNumber{#2}\edef\TipNumberA{\FindTipNumber{#2}}% + \checkTipNumber{#3}\edef\TipNumberB{\FindTipNumber{#3}}% + \setbox0=\hbox{{\color{tooltipcolor}{#1}}}\hbox to 0 pt{{\copy0\TooltipExtratext\hss}}% + \pushButton[\BC{}\BG{}\S{}\AA{ + \AAMouseExit{\JS{CloseTooltips();}} + \AAMouseEnter{\JS{ + var cislo=\TipNumberA; + try {app.clearInterval(animace);}catch (e) {} + function animuj() + { + if (cislo<\TipNumberB) cislo=cislo+1; + this.getField('ikona').buttonSetIcon(this.getField("animtiph"+cislo).buttonGetIcon()); + }; + if (event.shift) { + this.getField('ikona').buttonSetIcon(this.getField("animtiph"+\TipNumberA).buttonGetIcon()); + this.getField("ikona").hidden=false; + animace=app.setInterval('animuj();', \delayinterval); + } + }} + } + \A{\JS{ + try {app.clearInterval(animace);}catch (e) {} + var cislo=\TipNumberA; + function animuj() + { + if (cislo<\TipNumberB) cislo=cislo+1; + this.getField('ikona').buttonSetIcon(this.getField("animtiph"+cislo).buttonGetIcon()); + }; + this.getField('ikona').buttonSetIcon(this.getField("animtiph"+\TipNumberA).buttonGetIcon()); + this.getField("ikona").hidden=false; + animace=app.setInterval('animuj();', \delayinterval); + }} + ]{TooltipField}{\wd0}{\ht0}} +% \end{macrocode} +% This code for |pdftex| closes tooltip if the page is closed. +% \begin{macrocode} +\ifTooltip@usepdftex +\def\TooltipPageopencloseJS{ \global\pdfpageattr{% + /AA << /O << /S /JavaScript /JS (CloseTooltips();) >> >>}% +} +\pdfximage{\TooltipFilename.pdf}% +\edef\TooltipPages{\the\pdflastximagepages}% +\else +\def\TooltipPageopencloseJS{ +\literalps@out{% + [ {ThisPage} << /AA << + /O << /S /JavaScript /JS (CloseTooltips();) >> + >> >> /PUT pdfmark}} +\OpenAction{/S /JavaScript /JS (CloseTooltips();)} +\fi%\ifTooltip@usepdftex +\EveryShipout{\TooltipPageopencloseJS}% + +\ifTooltip@usepdftex +\begin{insDLJS}[clearTooltips]{Tooltipsdljs}{My Private DLJS for Tooltips} + var animace; + function CloseTooltips() + { + this.getField("ikona").hidden=true; + try {app.clearInterval(animace);}catch (e) {} + } +\end{insDLJS} +\else +\begin{insDLJS}[clearTooltips]{Tooltipsdljs}{My Private DLJS for Tooltips} + var animace; + function CloseTooltips() + { + this.getField("ikona").hidden=true; + try {app.clearInterval(animace);}catch (e) {} + } + function ImportTooltips() + { + for (var i=1;i<=\TooltipPages;i++) + {this.getField("animtiph"+i).buttonImportIcon("\TooltipFilename.pdf",(i-1));} + return(1); + } +\end{insDLJS} +\fi +% \end{macrocode} +% A cycle is used to create hidden buttons. Each button has associated a page +% from the file with tooltips as icon. These icons are invoked by JavaScripts +% defined in |\tooltip| and |\tooltipanim| macros. +% \begin{macrocode} +\newcount\tooltip@count +\ifTooltip@usepdftex +\newcommand*{\TooltipHidden}{% + \count@=0 + \@whilenum\count@<\TooltipPages \do{% + \tooltip@count=\count@ + \advance \tooltip@count by 1 + \bgroup + \immediate\pdfximage + width 0 pt height 0 pt depth 0 pt + page \the\tooltip@count{\TooltipFilename.pdf}% + \mbox{\leavevmode + \pdfstartlink user{ + /Subtype /Widget + /F 6 + /T (animtiph\the\tooltip@count) + /FT /Btn + /Ff 65536 + /H /N + /BS << /W 1 /S /S >> + /MK << + /TP 1 + /I \the\pdflastximage\space 0 R + /IF << /SW /A >> + >> + }% + \pdfendlink}% + \egroup + \advance\count@\@ne}% +} +\else +\def\TooltipHidden{% + \count@=0 + \@whilenum\count@<\TooltipPages \do{% + \tooltip@count=\count@ + \advance \tooltip@count by 1 + \bgroup + \eqIcon[\BC{}\BG{}\F{\FHidden}] + {animtiph\the\tooltip@count}{0cm}{0cm}% + \egroup + \advance\count@\@ne}% +} +\fi +% \end{macrocode} +% The keywords for the tooltips can be stored in the file +% |fancytips.tex|. The topics in this file are created by |\keytip| +% macro (see the first part of the code). +% \begin{macrocode} +\AtBeginDocument{\IfFileExists{fancytips.tex}{\input{fancytips.tex} +\PackageInfo{fancytooltips}{Inputting fancytips.tex.}}% + {\PackageWarning{fancytooltips}{No file fancytips.tex! + Your keywords for tooltips will not work!}}} + +\def\tooltipname#1#2{\expandafter\xdef\csname FancyToolTip@#1\endcsname{#2}} + +\def\FindTipNumber#1{\expandafter\ifx \csname FancyToolTip@#1\endcsname\relax + #1\else\csname FancyToolTip@#1\endcsname\fi} + +\def\checkTipNumber#1{\expandafter\ifx + \csname FancyToolTip@#1\endcsname\relax \PackageWarning{fancytooltips}{No + framenumber is assigned to keyword #1. I assume that #1 is the + number of the frame.}% + \fi} + +\fi +%</package> +% \end{macrocode} +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.ins b/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.ins new file mode 100644 index 00000000000..4559bb89318 --- /dev/null +++ b/Master/texmf-dist/source/latex/fancytooltips/fancytooltips.ins @@ -0,0 +1,58 @@ +%% +%% Copyright (C) 2007 by Robert Marik <marik@mendelu.cz> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.2 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of LaTeX version +%% 1999/12/01 or later. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/fancytooltips} + +\preamble + +This is a generated file. + +Copyright (C) 2007 by Robert Marik <marik@mendelu.cz> + +This file may be distributed and/or modified under the conditions of +the LaTeX Project Public License, either version 1.2 of this license +or (at your option) any later version. The latest version of this +license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.2 or later is part of all distributions of LaTeX version +1999/12/01 or later. + +\endpreamble + +\generate{\file{fancytooltips.sty}{\from{fancytooltips.dtx}{package}} +} + +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* files into a directory searched by TeX: *} +\Msg{* *} +\Msg{* fancytooltips.sty *} +\Msg{* fancytooltipsmark.pdf *} +\Msg{* fancytooltipsmark.eps *} +\Msg{* *} +\Msg{* To produce the documentation run the file *} +\Msg{* fancytooltips.dtx through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile |