diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-03 15:43:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-03 15:43:44 +0000 |
commit | 8713286a652ae4ef7b6dc49efe024fff8cc6c760 (patch) | |
tree | 6e7255b50747996cc6657bad583d93861dff603f | |
parent | 64f3e6f8cd6421a34822bfd1b5303c2cb67409f5 (diff) |
ocgtools 0.5 (31mar10)
git-svn-id: svn://tug.org/texlive/trunk@17663 c570f23f-e606-0410-a88d-b1316a301751
39 files changed, 2104 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/ocgtools/README b/Master/texmf-dist/doc/latex/ocgtools/README new file mode 100644 index 00000000000..5e52a5cd8aa --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/README @@ -0,0 +1,20 @@ +The package ocgtools is designed to insert OGC (Optional Group +Content, known as layers) into PDF presentations. From the user's +point of view, the package allows to insert in an comfortable way any +TeX material into separate layers in PDF document and also insert +links which toggle theselayers on and off. Parts of the PDF document +like formatted text, tables, math formulas or graphics can be turned +to visible or invisible state by clicking active links or buttons. + +Similar packages are cooltooltips, pdfcomment, AcroTeX and +fancytooltips. See the ocgtools package documentation for differences +between ocgtools and the other packages. + +The package is distributed with examples build from one source using +several presentation packages (beamer, web, pdfscreen). All necessary +files are on Texlive 2009. Allmost all necessary files are on CTAN, +the file ocg.sty is at +http://www.tug.org/svn/texlive/trunk/Master/texmf/tex/latex/asymptote/ocg.sty + + + diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/book.jpg b/Master/texmf-dist/doc/latex/ocgtools/examples/book.jpg Binary files differnew file mode 100644 index 00000000000..dfa9376e31e --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/book.jpg diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.pdf Binary files differnew file mode 100644 index 00000000000..16b10a6b527 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.tex new file mode 100644 index 00000000000..28993cf7350 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Hannover.tex @@ -0,0 +1,11 @@ +\documentclass{beamer} +\usetheme{Hannover} + +\usepackage[transparent,minimouseover +]{ocgtools} + +%\usepackage{helvet} + +\input ocgtools-test.tex + +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.pdf Binary files differnew file mode 100644 index 00000000000..0a9b46a8b49 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.tex new file mode 100644 index 00000000000..ea461b69bcb --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer-Marburg.tex @@ -0,0 +1,13 @@ +\let\oldlabel\label +\documentclass{beamer} + +\usetheme{Marburg} +\usepackage[transparent,minimouseover +]{ocgtools} + +\AtBeginDocument{\let\label\oldlabel} +%\usepackage{helvet} + +\input ocgtools-test.tex + +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.pdf Binary files differnew file mode 100644 index 00000000000..91d9b782375 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.tex new file mode 100644 index 00000000000..331c0a37438 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-beamer.tex @@ -0,0 +1,8 @@ +\documentclass{beamer} +\usepackage[transparent, +minimouseover +]{ocgtools} +%\usepackage{helvet} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.pdf Binary files differnew file mode 100644 index 00000000000..b1c7890948d --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.tex new file mode 100644 index 00000000000..94780ac5d5e --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-minimal.tex @@ -0,0 +1,52 @@ +\documentclass{article} + +\usepackage{ocgtools} + +\layerVshift=1in +\advance\layerVshift by 16pt % determined experimentally + +\begin{document} + +\ocgtext{Test}{We test placing OCG's.} for placing OCG's: + +\hbox to \hsize{\hss\begin{minipage}{0.2\linewidth} + \ocgminitextlb{lb}{This is optional OCG.} + + \ocgminitextrb{rb}{This is optional OCG.} + + \ocgminitextlt{lt}{This is optional OCG.} + + \ocgminitextrt{rt}{This is optional OCG.} +\end{minipage} +\hss\hss\hss +\begin{minipage}{0.2\linewidth} + \ocgminitextlb{lb}{This is optional OCG.} + + \ocgminitextrb{rb}{This is optional OCG.} + + \ocgminitextlt{lt}{This is optional OCG.} + + \ocgminitextrt{rt}{This is optional OCG.} +\end{minipage} +\hss +} +\newpage + +\ocgminitextlb{New}{New} \ocgminitextrb{page}{page}. + +Second line + +\bigskip + +\ocgminitext{New}{New} \ocgminitext{page}{page}. + +Second line +\newpage + +Plain page. +\newpage + +\ocgminitextlb{Last}{Last} \ocgminitextrb{page}{page}. + +Second line on last page. +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.pdf Binary files differnew file mode 100644 index 00000000000..078e3b4aff9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.tex new file mode 100644 index 00000000000..48c859b1b77 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-nopanel.tex @@ -0,0 +1,17 @@ +\documentclass{article} +\usepackage[pdftex, +nopanel, +screen]{pdfscreen} + +\margins{0.25in}{0.25in}{0.25in}{0.25in} %left,right,top,bot +%\screensize{6in}{8in} +\screensize{4.875in}{6.5in} + +%\usepackage{times} + +\usepackage[transparent, +nobutton, nopageclose +]{ocgtools} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.pdf Binary files differnew file mode 100644 index 00000000000..a2b56e139b8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.tex new file mode 100644 index 00000000000..89af37a8681 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen-panelleft.tex @@ -0,0 +1,17 @@ +\documentclass{article} +\usepackage[pdftex, +panelleft, +screen]{pdfscreen} + +\margins{0.25in}{0.25in}{0.25in}{0.25in} %left,right,top,bot +%\screensize{6in}{8in} +\screensize{4.875in}{6.5in} + +%\usepackage{times} + +\usepackage[transparent, +nobutton, nopageclose +]{ocgtools} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.pdf Binary files differnew file mode 100644 index 00000000000..528c9a8b0ea --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.tex new file mode 100644 index 00000000000..48921a775a9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-pdfscreen.tex @@ -0,0 +1,17 @@ +\documentclass{article} +\usepackage[pdftex, +panelright, +screen]{pdfscreen} + +\margins{0.25in}{0.25in}{0.25in}{0.25in} %left,right,top,bot +%\screensize{6in}{8in} +\screensize{4.875in}{6.5in} + +%\usepackage{times} + +\usepackage[transparent, +nobutton, nopageclose +]{ocgtools} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.pdf Binary files differnew file mode 100644 index 00000000000..aee41b3da7c --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.tex new file mode 100644 index 00000000000..12e80f8e2a6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-leftpanel.tex @@ -0,0 +1,34 @@ +\documentclass{article} +\usepackage[%latextoc, +noxcolor,leftpanel, +usetemplates,pdftex]{web} +%\usepackage{times} +\screensize{4.875in}{6.5in} +\margins{12pt}{24pt}{24pt}{24pt} + +\definecolor{pozadi}{rgb}{1,1,0.9} +\pagecolor{pozadi} + +\usepackage[%transparent, +%nobutton +minimouseover +]{ocgtools} + +\buildpanel +{% +\null +\vfill +\textbf{Ocgtools demo} + +\bigskip +by + +\bigskip +Robert Ma\v{r}\'{i}k +\vfill +\panelNaviGroup % defined in web +} + + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.pdf Binary files differnew file mode 100644 index 00000000000..a8f992ed667 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.tex new file mode 100644 index 00000000000..6ede932b445 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web-rightpanel.tex @@ -0,0 +1,33 @@ +\documentclass{article} +\usepackage[%latextoc, +noxcolor,rightpanel, +usetemplates,pdftex]{web} +%\usepackage{times} +\screensize{4.875in}{6.5in} +\margins{12pt}{24pt}{24pt}{24pt} + +\definecolor{pozadi}{rgb}{1,1,0.9} +\pagecolor{pozadi} + +\usepackage[%transparent, +%nobutton +minimouseover +]{ocgtools} + +\buildpanel +{% +\null +\vfill +\textbf{Ocgtools demo} + +\bigskip +by + +\bigskip +Robert Ma\v{r}\'{i}k +\vfill +\panelNaviGroup % defined in web +} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.pdf Binary files differnew file mode 100644 index 00000000000..3e18973fa50 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.tex new file mode 100644 index 00000000000..ffdd2212447 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-example-web.tex @@ -0,0 +1,19 @@ +\documentclass{article} +\usepackage[%latextoc, +noxcolor, +usetemplates,pdftex]{web} +%\usepackage{times} +\screensize{4.875in}{6.5in} +\margins{12pt}{24pt}{24pt}{24pt} + +\definecolor{pozadi}{rgb}{1,1,0.9} +\pagecolor{pozadi} + +\usepackage[%transparent, +%nobutton, +insertvisible, +minimouseover +]{ocgtools} + +\input ocgtools-test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.bat b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.bat new file mode 100755 index 00000000000..7f0a9ab7a29 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.bat @@ -0,0 +1,5 @@ +pdflatex "\AtBeginDocument{\usepackage[pdftex,displaymath,floats,active,tightpage]{preview}}\PassOptionsToPackage{noocg}{ocgtools} \def\ocgpreview#1#2{#2}\input ocgtools-preview " +copy ocgtools-preview.pdf preview-temp.pdf +pdflatex ocgtools-preview +pdflatex ocgtools-preview +pdflatex ocgtools-preview diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.pdf Binary files differnew file mode 100644 index 00000000000..cb4a7094f1f --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.sh b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.sh new file mode 100644 index 00000000000..344d55fef7b --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.sh @@ -0,0 +1,6 @@ +pdflatex "\AtBeginDocument{\usepackage[pdftex,displaymath,floats,active,tightpage]{preview}}\PassOptionsToPackage{noocg}{ocgtools} \def\ocgpreview#1#2{#2}\input $1 " +cp $1.pdf preview-temp.pdf +grep '\\newlabel{' ocgtools-preview.aux | sed 's/newlabel/maplabelstoall/g' > preview.labels +pdflatex $1 +pdflatex $1 +pdflatex $1 diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.tex new file mode 100644 index 00000000000..a80693b3d73 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-preview.tex @@ -0,0 +1,65 @@ +\documentclass{article} +\usepackage[%latextoc, +noxcolor, +usetemplates,pdftex]{web} +%\usepackage{times} +\screensize{4.875in}{6.5in} +\margins{12pt}{24pt}{24pt}{24pt} + +\definecolor{pozadi}{rgb}{1,1,0.9} +\pagecolor{pozadi} + +%\scrollmode + +\title{OCGtools and preview} + +\optionalPageMatter{ + \begin{center} + \colorbox{yellow}{\begin{minipage}{0.5\linewidth} This is a demo + file to test cooperation between ocgtools and preview + packages. Go to the Section \ref{page} on page \pageref{page} + and put you mouse to the question marks following referrences + to figure and equation. The figure and equation should appear + in minilayer at the same page. + + The concept is DoItYourself, see the source + \texttt{.tex} file and script \texttt{ocgtools-preview.sh}. + \end{minipage}} + \end{center} +} + +\def\title#1{} +\usepackage[minimouseover]{ocgtools} + + +\ifx\ocgpreview\undefined\def\ocgpreview#1#2{#1}\fi + + \ocgpreview{\AtBeginDocument{ + \gdef\maplabeltopage#1#2{\expandafter\xdef\csname ocgtools@page@#1\endcsname{#2} +\message{^^J OCG: page #2}} + \gdef\savemaplabels#1#2#3#4{\xdef\ocgtoolstemp{#2}} + \gdef\maplabelstoall#1#2{\savemaplabels#2 \maplabeltopage{#1}{\ocgtoolstemp}} + \input preview.labels + \let\orieqref\eqref + \let\oriref\ref + \def\eqref#1{(\oriref{#1})% + \expandafter\ifx\csname ocgtools@page@#1\endcsname\relax\else + \,{\ocgminitext{$^{\text{?}}$}% + {\includegraphics[page=\csname ocgtools@page@#1\endcsname]{preview-temp}}}% + \fi}% + \def\ref#1{\oriref{#1}% + \expandafter\ifx\csname ocgtools@page@#1\endcsname\relax\else + \,{\ocgminitext{$^{\text{?}}$}% + {\includegraphics[page=\csname ocgtools@page@#1\endcsname]{preview-temp}}}% + \fi}% + }}{\AtBeginDocument{ + \newwrite\refsfile + \pagecolor{lightblue} + \immediate\openout\refsfile=preview.labels + \let\orilabel\label + \def\label#1{\orilabel{#1}\write\refsfile{\string\maplabeltopage{#1}{\thepage}}} + }} + +\input ocgtools-test.tex + +\end{document} diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.bat b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.bat new file mode 100755 index 00000000000..84155c14cf0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.bat @@ -0,0 +1,42 @@ +pdflatex ocgtools-example-web +pdflatex ocgtools-example-web +mpost mfpic-picture.mp +pdflatex ocgtools-example-web + +pdflatex ocgtools-example-web-leftpanel +pdflatex ocgtools-example-web-leftpanel +pdflatex ocgtools-example-web-leftpanel + +pdflatex ocgtools-example-web-rightpanel +pdflatex ocgtools-example-web-rightpanel +pdflatex ocgtools-example-web-rightpanel + +pdflatex ocgtools-example-pdfscreen-panelleft +pdflatex ocgtools-example-pdfscreen-panelleft +pdflatex ocgtools-example-pdfscreen-panelleft + +pdflatex ocgtools-example-pdfscreen-nopanel +pdflatex ocgtools-example-pdfscreen-nopanel +pdflatex ocgtools-example-pdfscreen-nopanel + +pdflatex ocgtools-example-pdfscreen +pdflatex ocgtools-example-pdfscreen +pdflatex ocgtools-example-pdfscreen + +pdflatex ocgtools-example-beamer +pdflatex ocgtools-example-beamer +pdflatex ocgtools-example-beamer + +pdflatex ocgtools-example-beamer-Hannover +pdflatex ocgtools-example-beamer-Hannover +pdflatex ocgtools-example-beamer-Hannover + +pdflatex ocgtools-example-beamer-Marburg +pdflatex ocgtools-example-beamer-Marburg +pdflatex ocgtools-example-beamer-Marburg + +pdflatex ocgtools-example-minimal +pdflatex ocgtools-example-minimal +pdflatex ocgtools-example-minimal + +ocgtools-preview.bat
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.sh b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.sh new file mode 100644 index 00000000000..a722cf2947b --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.sh @@ -0,0 +1,42 @@ +pdflatex ocgtools-example-web +pdflatex ocgtools-example-web +mpost mfpic-picture.mp +pdflatex ocgtools-example-web + +pdflatex ocgtools-example-web-leftpanel +pdflatex ocgtools-example-web-leftpanel +pdflatex ocgtools-example-web-leftpanel + +pdflatex ocgtools-example-web-rightpanel +pdflatex ocgtools-example-web-rightpanel +pdflatex ocgtools-example-web-rightpanel + +pdflatex ocgtools-example-pdfscreen-panelleft +pdflatex ocgtools-example-pdfscreen-panelleft +pdflatex ocgtools-example-pdfscreen-panelleft + +pdflatex ocgtools-example-pdfscreen-nopanel +pdflatex ocgtools-example-pdfscreen-nopanel +pdflatex ocgtools-example-pdfscreen-nopanel + +pdflatex ocgtools-example-pdfscreen +pdflatex ocgtools-example-pdfscreen +pdflatex ocgtools-example-pdfscreen + +pdflatex ocgtools-example-beamer +pdflatex ocgtools-example-beamer +pdflatex ocgtools-example-beamer + +pdflatex ocgtools-example-beamer-Hannover +pdflatex ocgtools-example-beamer-Hannover +pdflatex ocgtools-example-beamer-Hannover + +pdflatex ocgtools-example-beamer-Marburg +pdflatex ocgtools-example-beamer-Marburg +pdflatex ocgtools-example-beamer-Marburg + +pdflatex ocgtools-example-minimal +pdflatex ocgtools-example-minimal +pdflatex ocgtools-example-minimal + +sh ocgtools-preview.sh ocgtools-preview
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.tex b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.tex new file mode 100644 index 00000000000..6089b771aca --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/ocgtools-test.tex @@ -0,0 +1,254 @@ +\usepackage[metapost]{mfpic} +\opengraphsfile{mfpic-picture} +\usepackage{amsmath} +\usepackage{helvet} +\let\rmdefault\sfdefault + +\usepackage{wrapfig} + +% new page which works in beamer class only +\def\beamernewpage{\ifx \usetheme \undefined \relax \else \newpage\fi} + +% background for web.sty package +\ifx \ifweb@navibar \undefined \relax \else +\definecolor{lightgray}{rgb}{0.9,0.9,0.9} +\newbox\backgroundbox +\newbox\backgroundboxa +\setbox\backgroundboxa=\hbox{\rotatebox{20}{{\color{lightgray}\Large ocgtools\color{black}}}} +\newbox\backgroundboxb +\setbox\backgroundboxb=\hbox to \paperwidth{\xleaders\copy\backgroundboxa\hfill} +\newbox\backgroundboxc +\setbox\backgroundboxc=\vbox to \paperheight{\xleaders\copy\backgroundboxb\vfill} +\makeatletter + \def\ocgtools@shipoutstart@hook{\hbox to 0 pt{% + \kern -1in \vbox to 0 pt{\vss\copy\backgroundboxc} + \hss}} +\makeatother +\fi + +\begin{document} + +\fboxsep=4pt + +\title{Ocgtools demo} +\author{Robert Ma\v{r}\'{i}k} + +\maketitle +\def\maxwell{ +\nabla \cdot D&= \rho \\ +\nabla \cdot B&=0 \\ +\nabla \times E&=- \frac{\partial B}{\partial t}\\ +\nabla \times H&=J+ \frac{\partial D}{\partial t}} + +\tableofcontents +\beamernewpage +\makeatletter\ifx\PDFSCR@Info\undefined\relax\else\newpage\fi\makeatother + +\section{Introduction} + +\vbox to 0 pt{\noindent\hbox{\ocgpicture[width=3cm]{book.jpg}} + \vss} + +\hangindent=3.5cm \hangafter -5 \noindent This is test file for +\texttt{ocgtools} package. You can (using \texttt{pdflatex}) insert +hidden \TeX{} material into PDF files and open/close by clicking +active links. The active links in this document are pictures (like the +picture in this paragraph) or blue text. There are two kinds of +behavior +\begin{itemize} +\item OCG spans over allmost whole PDF pages (with black or + transparent boundary) and can be hidden by clicikng anywhere in the + page -- \makeatletter + \ocgtext{Try it here!}{Click \ifocg@hide@button anywhere \else red cross \fi to close.} \makeatother + +\item OCG is small and can be hidden either with the same link which + opens this text or with red mark on the right top corner -- + \ocgminitext[4cm]{Try it here!}{Click the same link or the red mark + to close.} +\end{itemize} + +\beamernewpage Note that the pictures may look darker in Adobe Reader +on Linux if you use package option \texttt{transparent} (means +transparent boundary of the OCG's, used for example in demos for +Beamer class and \verb|pdfscreen.sty| package). For comparison you can +look at the original picture \href{http://math.mendelu.cz/en/analyza?lang=en}{here}) or at the +demos which use \verb|web.sty| package. \ocgtext[5cm]{PDF viewer}{More + preciselly, Adobe Reader. \par \bigskip It is well known program. + You can install it on both Linux and Windows.} uses another +rendering when trasparency is called and this seems to be system +dependent. So be carefull when combining +\ocgminitext[3cm]{\texttt{transparent}}{\rightskip 0 pt plus 1 fill + This comment is in \texttt{vbox} with specified width and may + contain new paragraphs. It is rather long and placed on the top of + the page. Hence \textit{it is shifted a bit to fit the area on the + screen}. However, if the papersize is small (like for Beamer test + files), the bottom part remains invisible for reader. + +\smallskip 2-nd paragraph. + +\smallskip 3-rd paragraph. This is the last paragraph.} option and +bitmap pictures. + +\definecolor{green}{rgb}{0.5,1,0.5} +\begin{minipage}[c]{0.4\linewidth} + \ocgtext[4cm]{\begin{align}\label{eq:maxwell}\maxwell + \end{align} + }{\colorbox{green}{\kern-2\fboxsep\hbox to \hsize{\hss Maxwell equations\hss}}$$\begin{aligned} \maxwell + \end{aligned}$$} +\end{minipage}\hskip 0 pt plus 1 filll +\begin{minipage}[c]{0.2\linewidth} +\ocgpicture[width=\linewidth]{tall.jpg} +\end{minipage}\hskip 0 pt plus 1 filll +\begin{minipage}{0.3\linewidth} + Here we test \ocgminitextlt{ocg's}{{\color{red}O}ptional {\color{red}C}ontents {\color{red}G}roup} which are inside group (Maxwell's equation in minipage) and which are + taller than wide (little golf player). +\end{minipage} + +\newpage +\section{Options of the package} + +\begin{wrapfigure}[5]{r}{4cm} + \ocgpicture[width=4cm]{wide.jpg} +\end{wrapfigure} +This is some \ocgtext{random text}{anmf asdfh akdfjha adfjh akjdfh } +to see that \ocgminitextlb{\texttt{wrapfig}}{Wrapfig is a package for + \LaTeX.} works and wide pictures are scaled properly. Several +options are available for the package \verb|ocgtools|: +\ocgminitext[6cm]{transparent}{\texttt{beamer} and \texttt{pdfscreen} + demo files are compiled with \texttt{transparent} option -- the + black boundary of big layers is opaque.}, +\ocgminitext[6cm]{insertvisible}{The file \texttt{*-web-nopanel.tex} + is compiled with \texttt{insertvisible} option. The layers are + inserted as visible layers and are turned to invisible when the PDF + file is opened.}, + \ocgminitext[8cm]{nobutton}{Normally the pages + with active layers have a transparent button which can be used to + hide this layer. The user simply clicks anywhere and the layers + become hidden. In some viewers (like Foxit Reader) the button is not + 100\% transparent. This option allows not to include the big button + to hide layers. The layers can be closed by clicking the red cross + below. Demo files based on \texttt{pdfscreen} are compiled with this option. + Use this option to make the document accessible to Foxit Reader users.}, +\ocgminitext{noocg}{All OCG's are ignored}, +\ocgminitext[6cm]{noprogressmsg}{No messagae about processing OCG's at + the first page when document is opened.}, +\ocgminitext[8cm]{minimouseover}{\texttt{web} and \texttt{beamer} demo + files are compiled with \texttt{minimouseover} option. You can open + the minilayer by mouseover action in the area which is in the form + of invisible square 8pt$\times$8pt placed at the bottom right corner + of the referrence text.}, +\ocgminitext[8cm]{mouseover}{The same as + \texttt{minimouseover}, but works also for big layers. No demo file is + compiled with this option.}, +\ocgminitext[8cm]{nopageclose}{By default, layers and buttons for hiding them are + turned into hidden when entering a page. This option turns this behavior off. + Demo files based on \texttt{pdfscreen} are compiled with this option.} +(each option has an associated +minilayer with an explanation). Examples distributed with the package +are in the form of demo files based on three packages (\verb|beamer|, +\verb|web|, \verb|pdfscreen|). Each example has three variants with no +panel, with panel on the right and on the left and each example is +compiled with different options. The current document is compiled with +the following options: {\bfseries \makeatletter + \if@ocgtools@transparent transparent, \fi \if@ocgtools@insertvisible + insertvisible, \fi \ifocg@hide@button \relax \else nobutton, \fi + \ifocgtools@noocg noocg, \fi \ifx \ocgtools@progressmsg\relax + noprogressmsg, \fi \if@ocgtools@mouseover mouseover,\fi + \if@ocgtools@minimouseover minimouseover,\fi \if@ocgtools@pageclose\else nopageclose,\fi \makeatother } + + +\newpage +\section{A taste of mathematics} + +\def\a{\begin{mfpic}[80][40]{-0.1}{2}{-0.1}{2.8} + \gfill[green]\btwnfcn{0,1.5,0.1}{1+(x-1.2)**2}{0} + \axes + \xmarks{1.5} + \tlabelsep{4pt} + \tlabel[tc](0,0){$a$} + \tlabel[tc](1.5,0){$b$} + \pen{1pt} + \function{0,1.5,0.1}{1+(x-1.2)**2} + \end{mfpic}} + + \begin{figure} + \centering + \ocgtext{\a}{\a} + \caption{Floating figure} + \label{fig:figure} + \end{figure} + + Mfpic pictures can be scaled easily (see the floating figure). + + \beamernewpage We can add explanation to some computations easily + (Note the text \verb|Why?| inserted automatically by redefining + macro \verb|\ocgtextend|). + +{\def\ocgtextend{\raise0.75\baselineskip\hbox to 0 pt{\hss\tiny\color{red}Why?}\hss} + \global\def\dx{\,\mathrm{d}x} +\begin{eqnarray}\label{eq:label} +\int\ln x\dx&\ocgminitext[4cm]={Integration by parts $$\int\ln x\dx=\int1\cdot\ln x \dx$$}&x\ln x-\int x\frac 1x\dx\\ +&\ocgminitext={Formula $\int 1\dx=x$}&x\ln x - x +C +\end{eqnarray} + +} + +\newpage +\section{Few more tests} +Package \verb|ocgtools.sty| redefines output routine via +\verb|atbegshi.sty| package. From this reason it may be incompatible +with some other packages dealing with output routine. However, the +package \verb|eso-pic.sty| works fine. + +Test for placing OCG's: + +\hbox to \hsize{\hss\begin{minipage}{0.2\linewidth} + \ocgminitextlb{lb}{This is optional OCG.} + + \ocgminitextrb{rb}{This is optional OCG.} + + \ocgminitextlt{lt}{This is optional OCG.} + + \ocgminitextrt{rt}{This is optional OCG.} +\end{minipage} +\hss\hss\hss +\begin{minipage}{0.2\linewidth} + \ocgminitextlb{lb}{This is optional OCG.} + + \ocgminitextrb{rb}{This is optional OCG.} + + \ocgminitextlt{lt}{This is optional OCG.} + + \ocgminitextrt{rt}{This is optional OCG.} +\end{minipage} +\hss +} + +\ifx \usetheme \undefined +We inserted equation \eqref{eq:label} and Figure \ref{fig:figure} in +this document. + +The reference to Maxwell equations \eqref{eq:maxwell} works only if +compiled on Linux via \texttt{ocgtools-preview.sh} (called from +\texttt{ocgtools-test.sh} automatically with correct parameter). \fi + +\label{page} +\newpage + +\ocgminitextlb{New}{New} \ocgminitextrb{page}{page}. + +Second line + +\bigskip + +\ocgminitext{New}{New} \ocgminitext{page}{page}. + +Second line +\newpage + +Plain page. +\newpage + +\ocgminitextlb{Last}{Last} \ocgminitextrb{page}{page}. + +Second line on last page. diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/preview-temp.pdf b/Master/texmf-dist/doc/latex/ocgtools/examples/preview-temp.pdf Binary files differnew file mode 100644 index 00000000000..2ad3cf76360 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/preview-temp.pdf diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/tall.jpg b/Master/texmf-dist/doc/latex/ocgtools/examples/tall.jpg Binary files differnew file mode 100644 index 00000000000..7df7b6ef2fc --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/tall.jpg diff --git a/Master/texmf-dist/doc/latex/ocgtools/examples/wide.jpg b/Master/texmf-dist/doc/latex/ocgtools/examples/wide.jpg Binary files differnew file mode 100644 index 00000000000..130885e5dd7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/examples/wide.jpg diff --git a/Master/texmf-dist/doc/latex/ocgtools/ocgtools.pdf b/Master/texmf-dist/doc/latex/ocgtools/ocgtools.pdf Binary files differnew file mode 100644 index 00000000000..7f007807a04 --- /dev/null +++ b/Master/texmf-dist/doc/latex/ocgtools/ocgtools.pdf diff --git a/Master/texmf-dist/source/latex/ocgtools/ocgtools.dtx b/Master/texmf-dist/source/latex/ocgtools/ocgtools.dtx new file mode 100644 index 00000000000..4d9a399a154 --- /dev/null +++ b/Master/texmf-dist/source/latex/ocgtools/ocgtools.dtx @@ -0,0 +1,902 @@ +% \iffalse meta-comment +% +% Copyright (C) 2010 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{ocgtools.dtx} +%</driver> +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{ocgtools} +%<*package> + [2010/04/01 v0.5 ocgtools.dtx file] +%</package> +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{a4wide,url,color} +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\begin{document} + \DocInput{ocgtools.dtx} + \PrintChanges + \PrintIndex +\end{document} +%</driver> +% \fi +% +% \CheckSum{821} +% +% \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{v0.5}{2010/04/01}{First public version} +% +% \GetFileInfo{ocgtools.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def} +% +% \title{The \textsf{ocgtools} package\thanks{This document +% corresponds to \textsf{ocgtools}~\fileversion, dated \filedate.} +% \thanks{Supported by grant 131/2010 of Higher +% Education Development Fund (FRV\v S) }} \author{Robert Ma\v r\'\i k \\ +% \texttt{marik@mendelu.cz}} +% +% \maketitle +% +% \section{Introduction} +% +% The package |ocgtools| is designed to insert OGC (Optional Group +% Content) into PDF presentations. From the user's point of view, the +% package allows to insert in an comfortable way any \TeX{} material +% into separate layer in PDF document and insert links which toggle +% this layer on/off. Hence parts of PDF document like formatted text, +% tables, math formulas or graphics can be turned to visible or +% invisible state by clicking active links or buttons. +% +% Similar packages are |cooltooltips|, |pdfcomment|, |AcroTeX| and +% |fancytooltips|. In contrast to |cooltooltips| and |pdfcomment|, we +% can work with any \TeX{} material, not only plain text. In contrast +% to |fancytooltips|, no external file is necessary and more +% minilayers (see below) can be opened simultaneously on one +% page. However, |fancytooltips| and |ocgtools| can be combined in the +% same document, even on the same page. |AcroTeX| has far more +% possibilities than |ocgtools|, but has three disadvantages: (1) +% limited support for |pdftex| (no layers with |pdftex| driver) (2) +% PDF file needs postprocessing (3) for the post-processing the non-free +% Adobe Acrobat Professional is necessary. However, the user of +% |ocgtools| must have |AcroTeX| installed, since we use its +% capability to insert buttons and JavaScripts into document (|eforms| +% and |insdljs| packages). +% +% Two types of OCG objects can be inserted +% \begin{itemize} +% \item \textit{layers}: OCG's which span across the whole size of paper +% (scaled if necessary) +% \item \textit{minilayers}: OCG's which have their natural size and +% are placed somewhere close to the link which toggles them on/off. +% \end{itemize} +% +% The user should use viewer which allows to hide/reveal layers by +% JavaScript. This includes especially Adobe Reader. Some limited +% functionality is also in Foxit Reader (see the option |nobutton| +% below). In some other viewers (like |xpdf|) users see red warning on +% the first page (see |\ocgtools@msg|), all layers are visible and +% cannot be hidden. +% +% \marginpar{\texttt{Important comment!}}\textbf{\color{red} Big +% warning:} Unfortunately, with this package you may make your PDF +% files \textbf{less portable} even if you use Adobe Reader! Till now, +% we observed the following problems: +% \begin{itemize} +% \item jpg pictures may look darker when using \texttt{transparent} +% option and \textbf{Linux} version of Adobe Reader -- Adobe Reader +% switches to different rendering method which seems to be system +% dependent. Hope, Adobe fixes this problem soon. +% \item The layer with initial message on the first page which should +% be hidden to the users of Adobe Reader is sometimes still visible, +% if the PDF file is opened in Internet browser. From this reason, +% layer \texttt{ocgtools0} is switched on and then off when +% initializing PDF document. Hope, this workaround solves the +% problem. If not, report the problem with a minimal example, please. +% \end{itemize} +% +% \section{Examples} Several examples are distributed with the +% package. We have one minimal example, one example which shows +% cooperation with |preview.sty| and mainly -- examples which show +% cooperation with three most popular packages to build +% presentations. This includes |web.sty|, |pdfscreen.sty| and +% |beamer.cls|. We have three demo files for each -- with no panel, +% with panel on the right and with panel on the left. All examples can +% be recompiled by running |ocgtools-test.bat| on Windows and +% |ocgtools-test.sh| on Linux. +% +% \section{Usage} +% +% All the packages we use are on CTAN or in \TeX live2009. The file +% |ocg.sty| is a part of |asymptote| package\footnote{Do not +% interchange with the |ocg.sty| provided by \"Osterreichische +% Computer Geselshafft. The correct file |ocg.sty| is at +% \url{http://www.tug.org/svn/texlive/trunk/Master/texmf/tex/latex/asymptote/ocg.sty}}. +% |AcroTeX| is quite old on CTAN but the version on CTAN works well. +% New version of |AcroTeX| is at |www.acrotex.net|, if necessary. +% +% \bigskip \textbf{Prerequisities}: Only |pdflatex| is supported. The +% route via |dvips| or |dvipdfm| is not (yet?) supported (this +% restriction follows from |ocg.sty| and |transparent.sty| +% packages). To work with the package load |color.sty| and +% |hyperref.sty| packages. (This is usually done automatically by most +% packages which are used to build PDF presentations. If not, these +% packages are loaded by |ocgtools| automatically as soon as +% |\definecolor| and |\href| remain undefined, respectively.) You may +% use also |xcolor.sty|, but this package is not compatible with +% |transparent| option. \bigskip +% +% You have to compile your |.tex| file \textit{three times} (!). If +% you change your document and create new layer, you have to compile +% three times again. After most changes (which include change in +% position of but not the number of layers) you have to compile twice +% to put layers on correct position. If you change the content of text +% layers or minilayers, one compilation is sufficient. +% +% \bigskip +% Load package |ocgtools.sty| as usual: +% \cs{usepackage}\oarg{options}|{ocgtools}|. Options include: +% \begin{description} +% \item[\texttt{transparent}] Layers in fact do not span over the +% whole page, but the material of layer is scaled to some reasonable +% size (we keep aspect ratio). If the layer is activated, the page +% is covered by a uniform color |ocgbg| and the layer is placed on +% the top. The options |transparent| makes the color |ocgbg| +% transparent. Looks cool, but it could be slow and could change +% some colors of bitmap pictures (and this behavior seems to be +% system dependent -- looks differently on Linux and differently on +% Windows). The transparency is achieved by putting the command +% |\ocgtools@transparent| on appropriate place. The default setting +% is |\def\ocgtools@transparent{\transparent{0.4}}|. Use something +% like +% like the following three lines to override:\\ +% |\makeatletter|\\ +% |\def\ocgtools@transparent{\transparent{0.6}}|\\ +% |\makeeatother| +% \item[\texttt{nobutton}] The pages with active layers have a +% transparent button which can be used to hide this layer. The user +% simply clicks anywhere and the layers become hidden. In some +% viewers (like Foxit Reader) the button is not 100\% transparent. +% This option allows not to include the big button to hide layers. +% The layers can be closed by clicking the red cross +% below. +% \item[\texttt{insertvisible}] In some rare cases problems with OCG's +% occur on Windows installation of \TeX. Temporary (I hope) +% workaround is to use this option, which inserts OCG's as visible. +% The visibility is turned off when the PDF is opened on the first +% page. +% \item[\texttt{mouseover}] Layers can be opened by MouseOver action. +% The corresponding active area is an invisible square with side 8pt +% placed on the right bottom corner of the text or picture which +% opens the layer. More details: MouseOver opens the layer and +% MouseExit hides this layer again. If mouse button is clicked, the +% layer remains opened after exiting the button. +% \item[\texttt{minimouseover}] As mouseover, but restricted to +% minilayers. +% \item[\texttt{noocg}] The package and its commands are ignored. +% \item[\texttt{noprogressmsg}] Opening PDF on the first page show the +% message related to initial processing layers. This option turns +% the message off. +% \item[\texttt{nopageclose}] By default, all layers become off and +% all buttons become hidden if the page is changed. The option +% \texttt{nopageclose} suppresses this behavior. +% \end{description} +% +% The macro |\ocgtext|\oarg{width}\marg{text1}\marg{text2} +% \DescribeMacro{\ocgtext} is used to create layer which contains any +% \LaTeX{} material. \meta{text1} is a text which is written in an +% ``usual'' way (in blue color which indicates that this text can be +% used to hide/unhide another object) and this text is used to +% hide/unhide layer with \meta{text2} (which could be text divided +% into more than one paragraph, figure created by |mfpic| or any +% \LaTeX{} material). \meta{text2} is either placed into |\hbox| (if +% \meta{width} is 0\,pt, which is default) or wrapped by |\vbox| with |\hsize| +% equal to \meta{width} (in the opposite case). +% +% +% +% \DescribeMacro{\ocgpicture} The macro +% |\ocgpicture|\oarg{params}\marg{picture} is used to insert a picture +% which is used as a link to layer with bigger version of this +% picture. The optional parameter \meta{params} is used by +% |\includegraphics| command to draw picture in text. The layer +% contains scaled version of the picture (aspect ratio is preserved). +% +% \DescribeMacro{\ocgminitext} The macro +% |\ocgminitext|\oarg{width}\marg{text1}\marg{text2} is used to create +% layer containing \meta{text2} which is placed near the right top +% corner of \meta{text1}. \meta{text2} is placed into |\hbox| or +% |vbox| with given |hsize| according to the value of \meta{width}, +% as has been explained at |\ocgtext| macro. Macros |\ocgminitextrb|, +% |\ocgminitextlt| and |\ocgminitextlb| can be used to place the +% minilayer to the right bottom, left to and left bottom corner. +% +% \DescribeMacro{\ocgtextstart}\DescribeMacro{\ocgtextend} Macros +% |\ocgtextstart| and |\ocgtextend| are used to denote the start and +% the end of hyperlink which is used to hide/reveal layers. Default +% setting is |\def\ocgtextstart{\color{blue}}| and |\def\ocgtextend{}| +% and hence, the links are blue and there is no mark at the end of the +% link. +% +% \DescribeMacro{ocgpaper}\DescribeMacro{ocgbg} The colors |ocgbg| and +% |ocgpaper| are used to set the colors which are used to hide page +% and color which is used as background for text produced by +% |\ocgtext| and |\ocgminitext| commands. The default setting is +% |\definecolor{ocgpaper}{rgb}{1,1,0.2}| and +% |\definecolor{ocgbg}{rgb}{0,0,0}|. +% +% \DescribeMacro{\layerHshift} \DescribeMacro{\layerVshift} The +% dimensions |\layerHshift| and |\layerVshift| are used to place +% layers exactly on the top of the page. If presentation packages +% |web|, |beamer| or |pdfscreen| are used, then the length is set +% automatically. +% +% \DescribeMacro{\ocgtools@shipoutstart@hook} +% \DescribeMacro{\ocgtools@shipoutend@hook} Commands +% |\ocgtools@shipoutstart@hook| and |\ocgtools@shipoutend@hook| are +% introduced to insert some material at the begin and at the end of +% the box with the page contents. Can be used for example to put +% background to the presentation. Both commands should produce boxes +% of zero dimensions, i.e. use something like \begin{verbatim} +% \makeatletter \def\ocgtools@shipoutstart@hook{\hbox to 0 pt{\kern +% -1in \Huge A\hss}} \makeatother \end{verbatim} to insert letter "A" +% into the left bottom corner. Note that you will see this letter only +% if the background of the presentation is transparent. See also the +% files |ocgtools-example-web*.tex| and |ocgtools-example-web*.pdf| +% for slightly more complicated background. +% +% \DescribeMacro{\ocgclosechar} \DescribeMacro{\ocgtools@msg} Macro +% |\ocgclosechar| is used to print mark which is used to close layers +% and minilayers and |\ocgtools@msg| contains string for users of +% viewers which do not support layers (see the first few lines of the +% code for default settings). +% +% \section{Possible future development and known problems} +% \begin{enumerate} +% \item Test and support more packages for slides than current +% web.sty, pdfscreen.sty and beamer.sty? Which ones? +% \item Using |preview| package it is possible to extract equations +% and figures from the document and redefine |\ref| and |\eqref| +% commands in such a way that clicking (or mouseover) opens on the +% current page the layer with this equation (figure) and shift +% clicking moves the user to the page with this equation +% (figure). Or would |fancytooltips| produce better results in this +% case (smaller PDF file)? See also the paper by Ross More at +% \url{http://www.tug.org/TUGboat/Articles/tb29-3/tb93moore.pdf}. See +% the |ocgtools-preview.*| files for some initial attempts in this +% direction. +% \item Introduce draft mode, which prints all layers at the end of +% document with links there and back? +% \item Improve placement of minitextlayers. Currently we have one the +% reference point for both minitextlayers aligned to top and +% bottom, which is far from optimal. +% \item In some rare cases the layers may be not inserted properly +% when the \LaTeX{} file is compiled on \textbf{Windows} -- see the +% option \texttt{insertvisible} which solves this problems in most +% cases. Since the author has limited access to \TeX{} +% installations on Windows and hence reporting of problems with a +% minimal example is highly appreciated. +% \item The package cannot be used to hide 3D graphics inserted by +% |movie15| package. However, you can put this graphics into +% floating window or full-screen using capabilities of Acrobat Reader +% 9. +% \item If you open and close layer and then use "Back" +% (Alt+LeftArrow), the layer opens again, but the button to hide +% this layer becomes unavailable. Possible solution is to define +% open action and close action for each layer (is it possible in +% current PDF specification?). +% \end{enumerate} +% +% \StopEventually{} +% +% \section{Implementation} +% Initial settings +% \begin{macrocode} +%<*package> +\def\ocgtools@msg{If message does not disappear after a short time, the + author either did not compile the \LaTeX{} file three times, or your + PDF viewer does not support OCG. Use Adobe Reader!} + +\def\ocgtextstart{\color{blue}} +\def\ocgtextend{} +\ifx\definecolor\undefined\RequirePackage{color}\fi +\ifx\href\undefined\RequirePackage[pdftex]{hyperref}\fi +\definecolor{ocgpaper}{rgb}{1,1,0.2} +\definecolor{ocgbg}{rgb}{0,0,0} +\RequirePackage{graphicx} +\RequirePackage{pifont} +\RequirePackage{ocg} + +\def\ocgclosechar{\ding{56}} +% \end{macrocode} +% Make packages and options known. +% \begin{macrocode} +\RequirePackage{atbegshi} +\RequirePackage[pdftex]{eforms} +\newif\if@ocgtools@transparent\@ocgtools@transparentfalse +\DeclareOption{transparent}{\@ocgtools@transparenttrue} +\newif\if@ocgtools@insertvisible\@ocgtools@insertvisiblefalse +\def\ocgtools@initialvisibility{0} +\DeclareOption{insertvisible}{\@ocgtools@insertvisibletrue + \def\ocgtools@initialvisibility{1}} +\newif\ifocg@hide@button\ocg@hide@buttontrue +\DeclareOption{nobutton}{\ocg@hide@buttonfalse} +\newif\ifocgtools@noocg\ocgtools@noocgfalse +\DeclareOption{noocg}{\ocgtools@noocgtrue} +\def\ocgtools@progressmsg{\lower \layerVshift\hbox to 0 pt{ %space + \textField[\V{OCGtools: processing OCG's ...}\BG{1} + \textColor{1 0 0} \textSize{10}]% +{ocgtoolsmsg}{6cm}{20pt}\hss}}% +\DeclareOption{noprogressmsg}{\let\ocgtools@progressmsg\relax} +\newif\if@ocgtools@minimouseover \@ocgtools@minimouseoverfalse +\DeclareOption{minimouseover}{\@ocgtools@minimouseovertrue} +\newif\if@ocgtools@mouseover \@ocgtools@mouseoverfalse +\DeclareOption{mouseover}{\@ocgtools@mouseovertrue \@ocgtools@minimouseovertrue} +\newif\if@ocgtools@pageclose \@ocgtools@pageclosetrue +\DeclareOption{nopageclose}{\@ocgtools@pageclosefalse} +\ProcessOptions +% \end{macrocode} +% We insert JavaScripts which are evaluated when the file is opened at +% the first page. +% \begin{macrocode} +\edef\ocgtools@pdfpageattr{ +/AA << /O << /S /JavaScript /JS + ( +% \end{macrocode} +% We close layers, if the page is opened. If the document is opened +% and \texttt{ocgtoolsOCGs} is not initialized, we skip to +% \texttt{catch} part and initialize. +% \begin{macrocode} + try{ + var temp = ocgtoolsOCGs.length; + \if@ocgtools@pageclose + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \fi + } +% \end{macrocode} +% We initialize document -- we find all layers, put into +% \texttt{ocgtoolsOCGs} field and make them hidden. +% \begin{macrocode} + catch (e){ +% \end{macrocode} +% No dotted rectangle for buttons which have focus. +% \begin{macrocode} + app.focusRectg = false; +% \end{macrocode} +% The OCG objects inserted by ocgtools are stored in variable +% |ocgtoolsOCGs| when the PDF document is opened on the first page. +% \begin{macrocode} + var iniocgtoolsOCGs = this.getOCGs(); + var ocgtoolsOCGs = []; + for(var i=0; iniocgtoolsOCGs && i<iniocgtoolsOCGs.length;i++) + { + if(iniocgtoolsOCGs[i].name.substr(0,8) == "ocgtools") + { + ocgtoolsOCGs.push(iniocgtoolsOCGs[i]); + \if@ocgtools@insertvisible + iniocgtoolsOCGs[i].state=false; + \fi + } + } + iniocgtoolsOCGs[0].state=true; + iniocgtoolsOCGs[0].state=false; + \ifx\ocgtools@progressmsg\relax\relax\else + this.getField("ocgtoolsmsg").hidden=true; + \fi + } + \ifocg@hide@button + this.getField("OcgtoolsBtn.HideButton.main").hidden = true; + \fi + ) + >> >> +} + +\expandafter\global\expandafter\pdfpageattr\expandafter{\ocgtools@pdfpageattr} + +\def\ocgtools@transparent{} +\if@ocgtools@transparent +\RequirePackage{transparent} \def\ocgtools@transparent{\transparent{0.4}} +\fi +% \end{macrocode} +% Internal variables +% \begin{macrocode} +\newif\ifocg@minitext@left +\newif\ifocg@minitext@bottom +\newcount\ocgtools@layercount +\newskip\ocgtools@left@skip +\newskip\ocgtools@bottom@skip +\newdimen\ocgtools@maxheight +\newdimen\ocgtools@maxwidth +% \end{macrocode} +% We introduce lengths which can be used to finetune position of layers +% on the screen. These lengths are not necessary for plain pages +% (like article class with geometry package) and beamer. +% \begin{macrocode} +\newdimen\layerHshift \layerHshift=0pt +\newdimen\layerVshift \layerVshift=0pt +% \end{macrocode} +% We need small shift for web.sty. +% \begin{macrocode} +\ifx\@Rightmargin\undefined\else + \layerVshift=3pt +\fi +% \end{macrocode} +% We need another shift for pdfscreen.sty. +% \begin{macrocode} +\ifx\PDFSCR@Warning\undefined\else + \layerVshift=\@Bottommargin +\fi + +\newtoks\ocgtools@layer@toks +\ocgtools@layer@toks{} +\newbox\ocgtools@box@a +\newbox\ocgtools@box@b +\newif\ifocg@page@contains@layer +% \end{macrocode} +% We modify |shipout| routine and insert content of layers on the top of +% PDF pages. +% \begin{macrocode} +\def\ocgtools@one{1} +\let\ocgtools@shipoutstart@hook\relax +\let\ocgtools@shipoutend@hook\relax +\AtBeginShipout{% +\setbox\AtBeginShipoutBox=\hbox{% +% \end{macrocode} +% Hook which can be used to place backgound. +% \begin{macrocode} +\ocgtools@shipoutstart@hook +% \end{macrocode} +% We insert the page first. +% \begin{macrocode} +\hbox to 0 pt{\box\AtBeginShipoutBox\hss}\kern -1in\kern \layerHshift +% \end{macrocode} +% We insert the layers. +% \begin{macrocode} +\ocg@page@contains@layerfalse +\lower \layerVshift \hbox{\the\ocgtools@layer@toks}% +% \end{macrocode} +% If at least one layer has been inserted, we insert button which +% can be used to hide layers. +% \begin{macrocode} +\ifocg@page@contains@layer + \vbox to 0 pt{\kern -\paperheight \kern\layerVshift\hbox to 0 pt{\ocgtools@HideBtn\hss}\vss}% +\fi +% \end{macrocode} +% We insert progress field on the first page. +% \begin{macrocode} +\xdef\ocgtools@currpage{\thepage}% +\ifx\ocgtools@currpage\ocgtools@one +\ocgtools@progressmsg +\fi +% \end{macrocode} +% We finish the box. +% \begin{macrocode} +\hss \ocgtools@shipoutend@hook% +\kern 1in \kern -\layerHshift% +}% +} +% \end{macrocode} +% We create buttons which are used to hide all layers (if we create +% buttons, we keep possibility to make them hidden, in contrast to +% links). +% \begin{macrocode} +\def\ocgtools@HideBtn{\pushButton[\W{0}\BG{}\S{S}\BC{}\H{N}\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton").hidden = true; \fi + }}]{OcgtoolsBtn.HideButton.main}{\paperwidth}{\paperheight}} +% \end{macrocode} +% We create buttons which are attached to the top right corner +% of each minilayer and can be used to hide the corresponding minilayer. +% \begin{macrocode} +\newcommand\ocgtools@HideMiniLayer[1] +{\setbox\ocgtools@box@a=\hbox{{\color{red}\ocgclosechar}}% +\hbox to \wd\ocgtools@box@a% +{\hbox{{\color{red}\ocgclosechar}}\hss% +\hbox{\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% +\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = true; + }}]% + {OcgtoolsBtn.HideButton.mini.#1}{\wd\ocgtools@box@a}{\ht\ocgtools@box@a}}}} +% \end{macrocode} +% We create buttons which are attached tothe bottom right corner +% of the screen and can be used to hide all layers. +% \begin{macrocode} +\newcommand\ocgtools@HideLayers[1]{% +\setbox\ocgtools@box@a=\hbox{{\color{red}\ocgclosechar}}% +\hbox to \wd\ocgtools@box@a% +{\hbox{{\color{red}\ocgclosechar}}\hss% +\hbox{\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% +\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button + this.getField("OcgtoolsBtn.HideButton.main").hidden = true; + \fi + }}]% + {OcgtoolsBtn.HideButton.corner.#1}{\wd\ocgtools@box@a}{\ht\ocgtools@box@a}}}} +% \end{macrocode} +% To hide/unhide layers and minilayers we use modified code from +% http://www.texample.net/weblog/2008/nov/02/creating-pdf-layers/ +% \begin{macrocode} +\newcommand{\ocgtools@ToggleLayer}[2]{% + % #1: layer name, + % #2: link text + \leavevmode% + \pdfstartlink user { + /Subtype /Link + /Border [0 0 0]% + /H /N + /A << + /S/JavaScript + /JS ( + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = !ocgtoolsOCGs[i].state; + else + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton.main").hidden = false;\fi + this.getField("OcgtoolsBtn.HideButton.corner").hidden = false; + this.getField("OcgtoolsBtn.HideButton.corner.#1").setFocus(); + ) + >> + }#2% + \if@ocgtools@mouseover + \hbox to 0 pt{\hss\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% + \A{\JS{ + var OpenedByMouseEnter#1=false; + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton.main").hidden = false;\fi + this.getField("OcgtoolsBtn.HideButton.corner").hidden = false; + this.getField("OcgtoolsBtn.HideButton.corner.#1").setFocus(); + }} + \AA{\AAMouseEnter{\JS{ for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + var OpenedByMouseEnter#1=true; + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = true; + else + ocgtoolsOCGs[i].state = false; + } + }} + \AAMouseExit{\JS{ + if (OpenedByMouseEnter#1) + {for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + }} + }}}] + {OcgtoolsBtn.MaxiButton.#1}{8pt}{8pt}}% + \fi + \pdfendlink% +} + +\newcommand{\ocgtools@ToggleMiniLayer}[2]{% + % #1: layer name, + % #2: link text + \leavevmode% + \pdfstartlink user { + /Subtype /Link + /Border [0 0 0]% + /H /N + /A << + /S/JavaScript + /JS ( + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = !ocgtoolsOCGs[i].state; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = + !this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden; + if (!this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden) + {this.getField("OcgtoolsBtn.HideButton.mini.#1").setFocus();} + ) + >> + }#2% + \if@ocgtools@minimouseover + \hbox to 0 pt{\hss\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% + \A{\JS{ + var OpenedByMouseEnter#1=false; + this.getField("OcgtoolsBtn.HideButton.mini.#1").setFocus(); + }} + \AA{\AAMouseEnter{\JS{for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + var OpenedByMouseEnter#1=true; + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = true; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = false; + }} + \AAMouseExit{\JS{ + if (OpenedByMouseEnter#1) + { + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = true; + } + }}}] + {OcgtoolsBtn.MiniButton.#1}{8pt}{8pt}}% + \fi + \pdfendlink% +} + +% \end{macrocode} +% Macros dealing with |\savepos| from Vit Zyka's paper in CSTUG +% Bulletin (ISSN 1211-6661, No. 2, 2007) +% \begin{macrocode} +\newwrite\posHandle +\def\posFile{\jobname.pos} +\def\posOpen{\openout\posHandle=\posFile} +\def\posClose{\closeout\posHandle} +\ifocgtools@noocg +\else +\AtBeginDocument{\InputIfFileExists{\posFile}{}{}% +\ocgtools@maxheight=0.9\paperheight +\ocgtools@maxwidth=0.9\paperwidth +\expandafter\global\expandafter\def\csname ocgtools@textcontent@0\endcsname +{{\color{red}\bfseries\ocgtools@msg}} +\expandafter\ocgtools@layer@toks\expandafter{\the\ocgtools@layer@toks +\ocg@place@text{0}{1}{5cm}} +\posOpen} +\AtEndDocument{\posClose} +\fi + +% \end{macrocode} +% The following commands create links to hide/unhide layers and +% minilayers and write information on the layer number, page and layer +% content into the |pos| file. The content of textlayer is stored in +% command |\ocgtools@textcontent@<n>| where |<n>| is the number of the +% layer. Similarly, the content of the minitextlayer is stored in +% |\ocgtools@minitextcontent@<n>|. +% \begin{macrocode} +\newcommand\ocgpicture[2][]{% +\global\advance\ocgtools@layercount by 1% +\ocgtools@ToggleLayer{\the\ocgtools@layercount}% +{\leavevmode\includegraphics[#1]{#2}}% +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplacepicture\expandafter{% +\the\ocgtools@layercount}{\thepage}{#2}}% +} + +\newcommand\ocgtext[3][0pt]{% +\global\advance\ocgtools@layercount by 1% +\ocgtools@ToggleLayer{\the\ocgtools@layercount}% +{\leavevmode{\ocgtextstart #2\ocgtextend}}% +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplacetext\expandafter{% +\the\ocgtools@layercount}{\thepage}{#1}}% +\expandafter\global\expandafter\def +\csname ocgtools@textcontent@\the\ocgtools@layercount\endcsname{#3}% +} + +\newcommand\ocgminitextlt[3][0pt]{% +\ocg@minitext@lefttrue\do@ocg@minitext{#1}{#2}{#3}{lt}}% +\newcommand\ocgminitextrt[3][0pt]{% +\ocg@minitext@leftfalse\do@ocg@minitext{#1}{#2}{#3}{rt}}% +\newcommand\ocgminitextlb[3][0pt]{% +\ocg@minitext@lefttrue\do@ocg@minitext{#1}{#2}{#3}{lb}}% +\newcommand\ocgminitextrb[3][0pt]{% +\ocg@minitext@leftfalse\do@ocg@minitext{#1}{#2}{#3}{rb}}% +\let\ocgminitext\ocgminitextrt + +\long\def\do@ocg@minitext#1#2#3#4{% +\global\advance\ocgtools@layercount by 1\relax% +\leavevmode +\ifocg@minitext@left + \vbox to 0 pt{\kern 0.5\baselineskip\hbox to 0 pt{\hss\pdfsavepos}\vss}% +\fi +\ocgtools@ToggleMiniLayer{\the\ocgtools@layercount}% +{{\ocgtextstart #2\ocgtextend}}% +\ifocg@minitext@left\else\pdfsavepos\fi +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplaceminitext\expandafter +{\the\ocgtools@layercount}{\thepage}{\the\pdflastxpos}% +{\the\pdflastypos}{}{#1}{#4}}% +\expandafter\global\expandafter\def +\csname ocgtools@minitextcontent@\the\ocgtools@layercount\endcsname{#3}% +}% + +% \end{macrocode} +% These commands appear in |pos| file and we read these commands at the +% begin of the document. Pictures are stored in token register, texts +% for layers and minilayers are stored in commands defined by +% |\csname|. +% \begin{macrocode} +\newcommand\ocgtoolsplacepicture[3]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks \ocg@place@picture{#1}{#2}{#3}}} + +\newcommand\ocgtoolsplacetext[3]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks\ocg@place@text{#1}{#2}{#3}}} + +\newcommand\ocgtoolsplaceminitext[7]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks \ocg@place@minitext{#1}{#2}{#3}{#4}{#5}{#6}{#7}}} + +% \end{macrocode} +% These commands are called in output routine for each layer on each +% page. They put the layer on the page, if the layer should be here +% (i.e., if the second parameter equals |\thepage|). +% \begin{macrocode} +\def\ocg@place@picture#1#2#3{\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\ifx\tempnumb\tempnuma + \global\ocg@page@contains@layertrue + \vbox to 0 pt{\vss\hbox to 0pt% + {\hbox{\begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawpicture{#3}{#1}\end{ocg}}\hss}}% +\fi} + +\def\ocg@place@text#1#2#3{\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\ifx\tempnumb\tempnuma + \global\ocg@page@contains@layertrue + \vbox to 0 pt{\vss\hbox to 0 pt{\hbox{% + \begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawtext{#3}{\csname ocgtools@textcontent@#1\endcsname}{#1}% + \end{ocg}}\hss}}% +\fi} + +\long\def\ocg@place@minitext#1#2#3#4#5#6#7{% +\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\def\ocg@placement{#7}% +\def\ocg@rb{rb}\def\ocg@lb{lb}\def\ocg@rt{rt}\def\ocg@lt{lt}% +\ocg@minitext@leftfalse\ocg@minitext@bottomfalse +\ifx\ocg@placement\ocg@lb + \ocg@minitext@lefttrue\ocg@minitext@bottomtrue +\fi +\ifx\ocg@placement\ocg@rb + \ocg@minitext@leftfalse\ocg@minitext@bottomtrue\fi +\ifx\ocg@placement\ocg@lt + \ocg@minitext@lefttrue\ocg@minitext@bottomfalse +\fi +\ifx\tempnumb\tempnuma + \ocgtools@left@skip=#3sp minus #3sp% + \ocgtools@bottom@skip=#4sp% + \setbox\ocgtools@box@a=\hbox{\begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawminitext{#6}{\csname ocgtools@minitextcontent@#1\endcsname}{#1} + \end{ocg}}% + \ifocg@minitext@left + \ifdim \ocgtools@left@skip>\wd\ocgtools@box@a + \advance \ocgtools@left@skip by -\wd\ocgtools@box@a plus 0 pt minus -\wd\ocgtools@box@a + \else + \ocgtools@left@skip=0pt\relax + \fi + \fi + \ifocg@minitext@bottom + \advance \ocgtools@bottom@skip by -\ht\ocgtools@box@a + \fi + \hbox to 0 pt{\hbox to \paperwidth{\hskip \ocgtools@left@skip + \vbox to 0 pt{\vss + \vbox to \paperheight{\vskip 0 pt plus 1 fill + \box\ocgtools@box@a\vskip \ocgtools@bottom@skip} + }% + \hskip 0 pt plus 1 fill}\hss}% +\fi +} + +% \end{macrocode} +% This code actually gives a graphical representation of the layers. +% \begin{macrocode} +\def\ocgtools@drawpicture#1#2{\vbox to \paperheight{\vbox to 0 pt{{% +\ocgtools@transparent\color{ocgbg}% +\hrule width \paperwidth height \paperheight}\vss}\vss +\hbox to \paperwidth{\hss +\setbox\ocgtools@box@a=\hbox{\includegraphics[height=\ocgtools@maxheight]{#1}}% +\ifdim\wd\ocgtools@box@a>\ocgtools@maxwidth + \includegraphics[width=\ocgtools@maxwidth]{#1}\else \box\ocgtools@box@a +\fi +\hss}% +\vss +\hbox to \paperwidth {\hss\ocgtools@HideLayers{#2}}}} + +\newdimen\ocg@textdimen + +\long\def\ocgtools@drawtext#1#2#3{\vbox to \paperheight{% +\vbox to 0 pt{{\ocgtools@transparent\color{ocgbg}% +\hrule width \paperwidth height \paperheight}\vss}\vss\hbox to \paperwidth +{\hss +\ocg@textdimen=#1 +\ifdim\ocg@textdimen=0pt + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}{#2}}% +\else + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}% + {\vbox{\hsize=#1\relax\rightskip 0 pt plus 1 fil\relax #2}}}% +\fi +\setbox\ocgtools@box@b\hbox{\resizebox{!}{\ocgtools@maxheight}{\copy\ocgtools@box@a}}% +\ifdim\wd\ocgtools@box@b>\ocgtools@maxwidth + \resizebox{\ocgtools@maxwidth}{!}{\box\ocgtools@box@a} +\else + \box\ocgtools@box@b +\fi +\hss}% +\vss +\hbox to \paperwidth {\hss\ocgtools@HideLayers{#3}}}} + +\def\ocg@empty{} + +\newcommand\ocgtools@drawminitext[3]{\ocg@textdimen=#1 +\ifdim\ocg@textdimen=0pt + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}{#2\ }}% +\else \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}% + {\vbox{\hsize=#1\relax\rightskip 0 pt plus 1 fil\relax #2}}}% +\fi +\def\temp{#3}% +\ifx\temp\ocg@empty +\box\ocgtools@box@a +\else +\hbox{\copy\ocgtools@box@a\raise\ht\ocgtools@box@a +\vbox to 0 pt{\hbox to 0 pt{\hss +\ocgtools@HideMiniLayer{#3}}\vss}}% +\fi +} + +\ifocgtools@noocg + \renewcommand\ocgpicture[2][]{\leavevmode\includegraphics[#1]{#2}} + \renewcommand\ocgtext[3][0pt]{\leavevmode #2} + \long\def\do@ocg@minitext#1#2#3#4{\leavevmode #2}% + \renewcommand\ocgtoolsplacepicture[3]{} + \renewcommand\ocgtoolsplacetext[3]{} + \renewcommand\ocgtoolsplaceminitext[7]{} +\fi + +%</package> +% \end{macrocode} +% +% \Finale +\endinput + + + diff --git a/Master/texmf-dist/source/latex/ocgtools/ocgtools.ins b/Master/texmf-dist/source/latex/ocgtools/ocgtools.ins new file mode 100644 index 00000000000..d8d016b6e24 --- /dev/null +++ b/Master/texmf-dist/source/latex/ocgtools/ocgtools.ins @@ -0,0 +1,56 @@ +%% +%% Copyright (C) 2010 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/ocgtools} + +\preamble + +This is a generated file. + +Copyright (C) 2010 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{ocgtools.sty}{\from{ocgtools.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{* ocgtools.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file *} +\Msg{* ocgtools.dtx through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/ocgtools/ocgtools.sty b/Master/texmf-dist/tex/latex/ocgtools/ocgtools.sty new file mode 100644 index 00000000000..5cac7f126ee --- /dev/null +++ b/Master/texmf-dist/tex/latex/ocgtools/ocgtools.sty @@ -0,0 +1,489 @@ +%% +%% This is file `ocgtools.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ocgtools.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2010 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. +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{ocgtools} + [2010/04/01 v0.5 ocgtools.dtx file] +\def\ocgtools@msg{If message does not disappear after a short time, the + author either did not compile the \LaTeX{} file three times, or your + PDF viewer does not support OCG. Use Adobe Reader!} + +\def\ocgtextstart{\color{blue}} +\def\ocgtextend{} +\ifx\definecolor\undefined\RequirePackage{color}\fi +\ifx\href\undefined\RequirePackage[pdftex]{hyperref}\fi +\definecolor{ocgpaper}{rgb}{1,1,0.2} +\definecolor{ocgbg}{rgb}{0,0,0} +\RequirePackage{graphicx} +\RequirePackage{pifont} +\RequirePackage{ocg} + +\def\ocgclosechar{\ding{56}} +\RequirePackage{atbegshi} +\RequirePackage[pdftex]{eforms} +\newif\if@ocgtools@transparent\@ocgtools@transparentfalse +\DeclareOption{transparent}{\@ocgtools@transparenttrue} +\newif\if@ocgtools@insertvisible\@ocgtools@insertvisiblefalse +\def\ocgtools@initialvisibility{0} +\DeclareOption{insertvisible}{\@ocgtools@insertvisibletrue + \def\ocgtools@initialvisibility{1}} +\newif\ifocg@hide@button\ocg@hide@buttontrue +\DeclareOption{nobutton}{\ocg@hide@buttonfalse} +\newif\ifocgtools@noocg\ocgtools@noocgfalse +\DeclareOption{noocg}{\ocgtools@noocgtrue} +\def\ocgtools@progressmsg{\lower \layerVshift\hbox to 0 pt{ %space + \textField[\V{OCGtools: processing OCG's ...}\BG{1} + \textColor{1 0 0} \textSize{10}]% +{ocgtoolsmsg}{6cm}{20pt}\hss}}% +\DeclareOption{noprogressmsg}{\let\ocgtools@progressmsg\relax} +\newif\if@ocgtools@minimouseover \@ocgtools@minimouseoverfalse +\DeclareOption{minimouseover}{\@ocgtools@minimouseovertrue} +\newif\if@ocgtools@mouseover \@ocgtools@mouseoverfalse +\DeclareOption{mouseover}{\@ocgtools@mouseovertrue \@ocgtools@minimouseovertrue} +\newif\if@ocgtools@pageclose \@ocgtools@pageclosetrue +\DeclareOption{nopageclose}{\@ocgtools@pageclosefalse} +\ProcessOptions +\edef\ocgtools@pdfpageattr{ +/AA << /O << /S /JavaScript /JS + ( + try{ + var temp = ocgtoolsOCGs.length; + \if@ocgtools@pageclose + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \fi + } + catch (e){ + app.focusRectg = false; + var iniocgtoolsOCGs = this.getOCGs(); + var ocgtoolsOCGs = []; + for(var i=0; iniocgtoolsOCGs && i<iniocgtoolsOCGs.length;i++) + { + if(iniocgtoolsOCGs[i].name.substr(0,8) == "ocgtools") + { + ocgtoolsOCGs.push(iniocgtoolsOCGs[i]); + \if@ocgtools@insertvisible + iniocgtoolsOCGs[i].state=false; + \fi + } + } + iniocgtoolsOCGs[0].state=true; + iniocgtoolsOCGs[0].state=false; + \ifx\ocgtools@progressmsg\relax\relax\else + this.getField("ocgtoolsmsg").hidden=true; + \fi + } + \ifocg@hide@button + this.getField("OcgtoolsBtn.HideButton.main").hidden = true; + \fi + ) + >> >> +} + +\expandafter\global\expandafter\pdfpageattr\expandafter{\ocgtools@pdfpageattr} + +\def\ocgtools@transparent{} +\if@ocgtools@transparent +\RequirePackage{transparent} \def\ocgtools@transparent{\transparent{0.4}} +\fi +\newif\ifocg@minitext@left +\newif\ifocg@minitext@bottom +\newcount\ocgtools@layercount +\newskip\ocgtools@left@skip +\newskip\ocgtools@bottom@skip +\newdimen\ocgtools@maxheight +\newdimen\ocgtools@maxwidth +\newdimen\layerHshift \layerHshift=0pt +\newdimen\layerVshift \layerVshift=0pt +\ifx\@Rightmargin\undefined\else + \layerVshift=3pt +\fi +\ifx\PDFSCR@Warning\undefined\else + \layerVshift=\@Bottommargin +\fi + +\newtoks\ocgtools@layer@toks +\ocgtools@layer@toks{} +\newbox\ocgtools@box@a +\newbox\ocgtools@box@b +\newif\ifocg@page@contains@layer +\def\ocgtools@one{1} +\let\ocgtools@shipoutstart@hook\relax +\let\ocgtools@shipoutend@hook\relax +\AtBeginShipout{% +\setbox\AtBeginShipoutBox=\hbox{% +\ocgtools@shipoutstart@hook +\hbox to 0 pt{\box\AtBeginShipoutBox\hss}\kern -1in\kern \layerHshift +\ocg@page@contains@layerfalse +\lower \layerVshift \hbox{\the\ocgtools@layer@toks}% +\ifocg@page@contains@layer + \vbox to 0 pt{\kern -\paperheight \kern\layerVshift\hbox to 0 pt{\ocgtools@HideBtn\hss}\vss}% +\fi +\xdef\ocgtools@currpage{\thepage}% +\ifx\ocgtools@currpage\ocgtools@one +\ocgtools@progressmsg +\fi +\hss \ocgtools@shipoutend@hook% +\kern 1in \kern -\layerHshift% +}% +} +\def\ocgtools@HideBtn{\pushButton[\W{0}\BG{}\S{S}\BC{}\H{N}\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton").hidden = true; \fi + }}]{OcgtoolsBtn.HideButton.main}{\paperwidth}{\paperheight}} +\newcommand\ocgtools@HideMiniLayer[1] +{\setbox\ocgtools@box@a=\hbox{{\color{red}\ocgclosechar}}% +\hbox to \wd\ocgtools@box@a% +{\hbox{{\color{red}\ocgclosechar}}\hss% +\hbox{\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% +\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = true; + }}]% + {OcgtoolsBtn.HideButton.mini.#1}{\wd\ocgtools@box@a}{\ht\ocgtools@box@a}}}} +\newcommand\ocgtools@HideLayers[1]{% +\setbox\ocgtools@box@a=\hbox{{\color{red}\ocgclosechar}}% +\hbox to \wd\ocgtools@box@a% +{\hbox{{\color{red}\ocgclosechar}}\hss% +\hbox{\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% +\F{\FHidden}\A{\JS{ + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button + this.getField("OcgtoolsBtn.HideButton.main").hidden = true; + \fi + }}]% + {OcgtoolsBtn.HideButton.corner.#1}{\wd\ocgtools@box@a}{\ht\ocgtools@box@a}}}} +\newcommand{\ocgtools@ToggleLayer}[2]{% + % #1: layer name, + % #2: link text + \leavevmode% + \pdfstartlink user { + /Subtype /Link + /Border [0 0 0]% + /H /N + /A << + /S/JavaScript + /JS ( + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = !ocgtoolsOCGs[i].state; + else + ocgtoolsOCGs[i].state = false; + } + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton.main").hidden = false;\fi + this.getField("OcgtoolsBtn.HideButton.corner").hidden = false; + this.getField("OcgtoolsBtn.HideButton.corner.#1").setFocus(); + ) + >> + }#2% + \if@ocgtools@mouseover + \hbox to 0 pt{\hss\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% + \A{\JS{ + var OpenedByMouseEnter#1=false; + \ifocg@hide@button this.getField("OcgtoolsBtn.HideButton.main").hidden = false;\fi + this.getField("OcgtoolsBtn.HideButton.corner").hidden = false; + this.getField("OcgtoolsBtn.HideButton.corner.#1").setFocus(); + }} + \AA{\AAMouseEnter{\JS{ for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + var OpenedByMouseEnter#1=true; + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = true; + else + ocgtoolsOCGs[i].state = false; + } + }} + \AAMouseExit{\JS{ + if (OpenedByMouseEnter#1) + {for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + }} + }}}] + {OcgtoolsBtn.MaxiButton.#1}{8pt}{8pt}}% + \fi + \pdfendlink% +} + +\newcommand{\ocgtools@ToggleMiniLayer}[2]{% + % #1: layer name, + % #2: link text + \leavevmode% + \pdfstartlink user { + /Subtype /Link + /Border [0 0 0]% + /H /N + /A << + /S/JavaScript + /JS ( + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = !ocgtoolsOCGs[i].state; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = + !this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden; + if (!this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden) + {this.getField("OcgtoolsBtn.HideButton.mini.#1").setFocus();} + ) + >> + }#2% + \if@ocgtools@minimouseover + \hbox to 0 pt{\hss\pushButton[\W{0}\S{S}\BG{}\BC{}\H{N}% + \A{\JS{ + var OpenedByMouseEnter#1=false; + this.getField("OcgtoolsBtn.HideButton.mini.#1").setFocus(); + }} + \AA{\AAMouseEnter{\JS{for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + var OpenedByMouseEnter#1=true; + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = true; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = false; + }} + \AAMouseExit{\JS{ + if (OpenedByMouseEnter#1) + { + for(var i=0; ocgtoolsOCGs && i<ocgtoolsOCGs.length;i++) + { + if(ocgtoolsOCGs[i].name == "ocgtools#1") + ocgtoolsOCGs[i].state = false; + } + this.getField("OcgtoolsBtn.HideButton.mini.#1").hidden = true; + } + }}}] + {OcgtoolsBtn.MiniButton.#1}{8pt}{8pt}}% + \fi + \pdfendlink% +} + +\newwrite\posHandle +\def\posFile{\jobname.pos} +\def\posOpen{\openout\posHandle=\posFile} +\def\posClose{\closeout\posHandle} +\ifocgtools@noocg +\else +\AtBeginDocument{\InputIfFileExists{\posFile}{}{}% +\ocgtools@maxheight=0.9\paperheight +\ocgtools@maxwidth=0.9\paperwidth +\expandafter\global\expandafter\def\csname ocgtools@textcontent@0\endcsname +{{\color{red}\bfseries\ocgtools@msg}} +\expandafter\ocgtools@layer@toks\expandafter{\the\ocgtools@layer@toks +\ocg@place@text{0}{1}{5cm}} +\posOpen} +\AtEndDocument{\posClose} +\fi + +\newcommand\ocgpicture[2][]{% +\global\advance\ocgtools@layercount by 1% +\ocgtools@ToggleLayer{\the\ocgtools@layercount}% +{\leavevmode\includegraphics[#1]{#2}}% +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplacepicture\expandafter{% +\the\ocgtools@layercount}{\thepage}{#2}}% +} + +\newcommand\ocgtext[3][0pt]{% +\global\advance\ocgtools@layercount by 1% +\ocgtools@ToggleLayer{\the\ocgtools@layercount}% +{\leavevmode{\ocgtextstart #2\ocgtextend}}% +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplacetext\expandafter{% +\the\ocgtools@layercount}{\thepage}{#1}}% +\expandafter\global\expandafter\def +\csname ocgtools@textcontent@\the\ocgtools@layercount\endcsname{#3}% +} + +\newcommand\ocgminitextlt[3][0pt]{% +\ocg@minitext@lefttrue\do@ocg@minitext{#1}{#2}{#3}{lt}}% +\newcommand\ocgminitextrt[3][0pt]{% +\ocg@minitext@leftfalse\do@ocg@minitext{#1}{#2}{#3}{rt}}% +\newcommand\ocgminitextlb[3][0pt]{% +\ocg@minitext@lefttrue\do@ocg@minitext{#1}{#2}{#3}{lb}}% +\newcommand\ocgminitextrb[3][0pt]{% +\ocg@minitext@leftfalse\do@ocg@minitext{#1}{#2}{#3}{rb}}% +\let\ocgminitext\ocgminitextrt + +\long\def\do@ocg@minitext#1#2#3#4{% +\global\advance\ocgtools@layercount by 1\relax% +\leavevmode +\ifocg@minitext@left + \vbox to 0 pt{\kern 0.5\baselineskip\hbox to 0 pt{\hss\pdfsavepos}\vss}% +\fi +\ocgtools@ToggleMiniLayer{\the\ocgtools@layercount}% +{{\ocgtextstart #2\ocgtextend}}% +\ifocg@minitext@left\else\pdfsavepos\fi +\expandafter\write\expandafter\posHandle\expandafter{% +\expandafter\string\expandafter\ocgtoolsplaceminitext\expandafter +{\the\ocgtools@layercount}{\thepage}{\the\pdflastxpos}% +{\the\pdflastypos}{}{#1}{#4}}% +\expandafter\global\expandafter\def +\csname ocgtools@minitextcontent@\the\ocgtools@layercount\endcsname{#3}% +}% + +\newcommand\ocgtoolsplacepicture[3]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks \ocg@place@picture{#1}{#2}{#3}}} + +\newcommand\ocgtoolsplacetext[3]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks\ocg@place@text{#1}{#2}{#3}}} + +\newcommand\ocgtoolsplaceminitext[7]{% +\expandafter\global\expandafter\ocgtools@layer@toks\expandafter +{\the\ocgtools@layer@toks \ocg@place@minitext{#1}{#2}{#3}{#4}{#5}{#6}{#7}}} + +\def\ocg@place@picture#1#2#3{\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\ifx\tempnumb\tempnuma + \global\ocg@page@contains@layertrue + \vbox to 0 pt{\vss\hbox to 0pt% + {\hbox{\begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawpicture{#3}{#1}\end{ocg}}\hss}}% +\fi} + +\def\ocg@place@text#1#2#3{\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\ifx\tempnumb\tempnuma + \global\ocg@page@contains@layertrue + \vbox to 0 pt{\vss\hbox to 0 pt{\hbox{% + \begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawtext{#3}{\csname ocgtools@textcontent@#1\endcsname}{#1}% + \end{ocg}}\hss}}% +\fi} + +\long\def\ocg@place@minitext#1#2#3#4#5#6#7{% +\def\tempnuma{#2}\edef\tempnumb{\thepage}% +\def\ocg@placement{#7}% +\def\ocg@rb{rb}\def\ocg@lb{lb}\def\ocg@rt{rt}\def\ocg@lt{lt}% +\ocg@minitext@leftfalse\ocg@minitext@bottomfalse +\ifx\ocg@placement\ocg@lb + \ocg@minitext@lefttrue\ocg@minitext@bottomtrue +\fi +\ifx\ocg@placement\ocg@rb + \ocg@minitext@leftfalse\ocg@minitext@bottomtrue\fi +\ifx\ocg@placement\ocg@lt + \ocg@minitext@lefttrue\ocg@minitext@bottomfalse +\fi +\ifx\tempnumb\tempnuma + \ocgtools@left@skip=#3sp minus #3sp% + \ocgtools@bottom@skip=#4sp% + \setbox\ocgtools@box@a=\hbox{\begin{ocg}{ocgtools#1}{ocgtools#1}{\ocgtools@initialvisibility}% + \ocgtools@drawminitext{#6}{\csname ocgtools@minitextcontent@#1\endcsname}{#1} + \end{ocg}}% + \ifocg@minitext@left + \ifdim \ocgtools@left@skip>\wd\ocgtools@box@a + \advance \ocgtools@left@skip by -\wd\ocgtools@box@a plus 0 pt minus -\wd\ocgtools@box@a + \else + \ocgtools@left@skip=0pt\relax + \fi + \fi + \ifocg@minitext@bottom + \advance \ocgtools@bottom@skip by -\ht\ocgtools@box@a + \fi + \hbox to 0 pt{\hbox to \paperwidth{\hskip \ocgtools@left@skip + \vbox to 0 pt{\vss + \vbox to \paperheight{\vskip 0 pt plus 1 fill + \box\ocgtools@box@a\vskip \ocgtools@bottom@skip} + }% + \hskip 0 pt plus 1 fill}\hss}% +\fi +} + +\def\ocgtools@drawpicture#1#2{\vbox to \paperheight{\vbox to 0 pt{{% +\ocgtools@transparent\color{ocgbg}% +\hrule width \paperwidth height \paperheight}\vss}\vss +\hbox to \paperwidth{\hss +\setbox\ocgtools@box@a=\hbox{\includegraphics[height=\ocgtools@maxheight]{#1}}% +\ifdim\wd\ocgtools@box@a>\ocgtools@maxwidth + \includegraphics[width=\ocgtools@maxwidth]{#1}\else \box\ocgtools@box@a +\fi +\hss}% +\vss +\hbox to \paperwidth {\hss\ocgtools@HideLayers{#2}}}} + +\newdimen\ocg@textdimen + +\long\def\ocgtools@drawtext#1#2#3{\vbox to \paperheight{% +\vbox to 0 pt{{\ocgtools@transparent\color{ocgbg}% +\hrule width \paperwidth height \paperheight}\vss}\vss\hbox to \paperwidth +{\hss +\ocg@textdimen=#1 +\ifdim\ocg@textdimen=0pt + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}{#2}}% +\else + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}% + {\vbox{\hsize=#1\relax\rightskip 0 pt plus 1 fil\relax #2}}}% +\fi +\setbox\ocgtools@box@b\hbox{\resizebox{!}{\ocgtools@maxheight}{\copy\ocgtools@box@a}}% +\ifdim\wd\ocgtools@box@b>\ocgtools@maxwidth + \resizebox{\ocgtools@maxwidth}{!}{\box\ocgtools@box@a} +\else + \box\ocgtools@box@b +\fi +\hss}% +\vss +\hbox to \paperwidth {\hss\ocgtools@HideLayers{#3}}}} + +\def\ocg@empty{} + +\newcommand\ocgtools@drawminitext[3]{\ocg@textdimen=#1 +\ifdim\ocg@textdimen=0pt + \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}{#2\ }}% +\else \setbox\ocgtools@box@a=\hbox{\colorbox{ocgpaper}% + {\vbox{\hsize=#1\relax\rightskip 0 pt plus 1 fil\relax #2}}}% +\fi +\def\temp{#3}% +\ifx\temp\ocg@empty +\box\ocgtools@box@a +\else +\hbox{\copy\ocgtools@box@a\raise\ht\ocgtools@box@a +\vbox to 0 pt{\hbox to 0 pt{\hss +\ocgtools@HideMiniLayer{#3}}\vss}}% +\fi +} + +\ifocgtools@noocg + \renewcommand\ocgpicture[2][]{\leavevmode\includegraphics[#1]{#2}} + \renewcommand\ocgtext[3][0pt]{\leavevmode #2} + \long\def\do@ocg@minitext#1#2#3#4{\leavevmode #2}% + \renewcommand\ocgtoolsplacepicture[3]{} + \renewcommand\ocgtoolsplacetext[3]{} + \renewcommand\ocgtoolsplaceminitext[7]{} +\fi + +\endinput +%% +%% End of file `ocgtools.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 6b000b5658e..0a536209a72 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -207,7 +207,7 @@ my @TLP_working = qw( nfssext-cfr niceframe nicetext nih nkarta noitcrul nomencl nomentbl nonfloat nostarch notes notes2bib ntgclass ntheorem-vn numname numprint - oberdiek ocr-latex octavo ofs ogham oldstyle + oberdiek ocgtools ocr-latex octavo ofs ogham oldstyle onlyamsmath onrannual opcit ordinalpt orkhun othello oubraces outline pagecont pagenote pagerange paper papercdcase papertex diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 2bcda038428..049993999e6 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -408,6 +408,7 @@ depend ntabbing depend ntheorem depend numname depend numprint +depend ocgtools depend ocr-latex depend octavo depend oldstyle diff --git a/Master/tlpkg/tlpsrc/ocgtools.tlpsrc b/Master/tlpkg/tlpsrc/ocgtools.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/ocgtools.tlpsrc |