diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex b/Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex new file mode 100644 index 00000000000..0bfdf2b8eda --- /dev/null +++ b/Master/texmf-dist/tex/generic/thumbpdf/thumbpdf.tex @@ -0,0 +1,278 @@ +% File: thumbpdf.tex +% Project: thumbpdf +% Version: 2005/07/06 v3.8 +% Author: Heiko Oberdiek +% +% Copyright: Copyright (C) 1999-2005 Heiko Oberdiek. +% +% This work may be distributed and/or modified under +% the conditions of the LaTeX Project Public License, +% either version 1.3 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.3 or later is part of all distributions +% of LaTeX version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% See file "readme.txt" for a list of files that +% belong to this project. +% +% Function: Program to include thumbnails as images. +% It looks for thumbnail files `thb*.png' and +% includes them as images in the output pdf file +% `thumbpdf.pdf'. The perl script `thumbpdf(.pl)' +% automatically calls pdftex with this file to +% generate `thumbpdf.pdf' and produces the data +% files, that contains the necessary pdf image objects +% for package `thumbpdf.sty'. +% +% Requirement: * pdftex +% * thumbnails `thb*.png' +% +% Use: * Syntax: pdftex thumbpdf +% * \thumbmax: +% Because it takes some time to look for 1000 thumbnail +% files, a maximum number can be specified: +% pdftex \def\thumbmax{20}\input thumbpdf +% * \thumbjob: +% This macro contains the name of the user's TeX file +% without extension (`<jobname>'). It is needed to build +% the name of the optional file `<jobname>.tno', that +% contains extra thumbnail declarations: +% pdftex \def\thumbjob{example}\input thumbpdf +% Then `example.tno' are read to get additional +% thumbnails. +% +% History: 1999/02/14 v1.0: first public release +% 1999/02/23 v1.1 +% 1999/03/01 v1.2 +% 1999/03/12 v1.3: Copyright: LPPL +% 1999/05/05 v1.4 +% 1999/06/13 v1.5 +% 1999/07/27 v1.6 +% 1999/08/08 v1.7: pdfTeX 0.14a +% 1999/09/09 v1.8 +% 1999/09/16 v1.9 +% 2000/01/11 v1.10: \immediate before \pdfximage removed, +% because it is obsolete and because of a problem with +% a pre-release version of pdfTeX 0.14d. +% 2000/01/19 v1.11 +% 2000/02/11 v1.12: \thumbjob added. +% 2000/02/22 v2.0: Looking for `\thumbjob.tno' only, the +% file name `thumbopt.tex' is not supported anymore. +% 2000/02/28 v2.1 +% 2000/03/07 v2.2 +% 2000/03/22 v2.3 +% 2000/04/10 v2.4: Version is also printed on screen. +% 2000/07/29 v2.5 +% 2000/09/27 v2.6 +% 2000/10/27 v2.7 +% 2001/01/12 v2.8 +% 2001/03/29 v2.9 +% 2001/04/02 v2.10 +% 2001/04/26 v2.11 +% 2002/01/11 v3.0 +% 2002/05/26 v3.1 +% 2002/05/26 v3.2 +% 2003/03/19 v3.3 +% 2003/06/06 v3.4 +% 2004/10/24 v3.5: LPPL 1.3. +% 2004/11/19 v3.6 +% 2004/11/19 v3.7: For easier debugging, the special +% thumbpdf objects are now valid PDF objects that +% are referenced in the Catalog. +% 2005/07/06 v3.8 + +\immediate\write16{% + File: thumbpdf.tex 2005/07/06 v3.8 % + Including thumbnails as images (HO)% +} +\immediate\write16{% +****************************************************************} +\immediate\write16{% +* Generating `thumbpdf.pdf', each page with a found thumbnail. *} +\immediate\write16{% +****************************************************************} + +\def\END{\csname @@end\endcsname\end} + +% Check, if LaTeX format +\ifx\mbox\undefined +\else + \immediate\write16{% + !!! Process this file `\jobname.tex' with pdf(e)tex % + (plain format) !!!% + }% + \expandafter\END +\fi + +% Check if pdfTeX +\ifx\pdfoutput\undefined + \immediate\write16{% + !!! Process this file `\jobname.tex' with pdf(e)tex % + (NOT tex) !!!% + }% + \expandafter\END +\fi + +\pdfoutput=1 + +% this file is tested with pdfTeX 0.13a +% but for downward compatibilty a trick from Hans Hagen: +\ifnum\pdftexversion<13 \ifnum\expandafter `\pdftexrevision<`s + \let\normalpdfimage\pdfimage + \def\grabpdfimage#1#2{\normalpdfimage#1 #2\relax} + \def\pdfimage#1#{\grabpdfimage{#1}} +\fi\fi + +% syntax has changed with pdfTeX 0.14a: +\ifnum\pdftexversion>13 + \def\pdfimage#1#{\grabpdfimage{#1}} + \def\grabpdfimage#1#2{% + \pdfximage#1{#2}\pdfrefximage\pdflastximage + } +\fi + +% max. 106x106 / 72 dpi +\hsize 1.5in +\vsize 1.5in + +\nopagenumbers + +\newcount\thumbcount +\def\thumbcountstep{\advance\thumbcount by 1 } + +\def\thumbfilename{thb\the\thumbcount.png} + +\newread\thumbread +\def\ifthumbexists{% + \openin\thumbread=\thumbfilename\relax + \ifeof\thumbread + \expandafter\noneofone + \else + \closein\thumbread + \expandafter\firstofone + \fi +} +\def\noneofone#1{} +\def\firstofone#1{#1} + +\def\iffileexists#1{% + \openin\thumbread=#1\relax + \ifeof\thumbread + \expandafter\secondoftwo + \else + \closein\thumbread + \expandafter\firstoftwo + \fi +} +\long\def\firstoftwo#1#2{#1} +\long\def\secondoftwo#1#2{#2} + +\let\listthumbs\empty + +\def\printthumbfile{% + \vfill\eject + \centerline{% + \pdfimage height \vsize {\thumbfilename}% + }% +} + +\newcount\thumbfound +\thumbfound=0 +\def\processthumb{% + \edef\listthumbs{\listthumbs\space\the\thumbcount}% + \printthumbfile + \pageno=\thumbcount + \advance\thumbfound by 1 +} + +\expandafter\ifx\csname thumbmax\endcsname\relax + \def\thumbmax{999}% +\fi + +\immediate\write16{* Looking for thumbnails 0..\thumbmax:} + +\thumbcount=\thumbmax\relax +\advance\thumbcount by 1 +\edef\thumbmax{\the\thumbcount}% +\thumbcount=0 +\loop +\ifnum\thumbcount<\thumbmax\relax + \ifthumbexists\processthumb + \thumbcountstep +\repeat + +\break +\immediate\write16{==> \the\thumbfound\space thumbnail(s) found.} +\immediate\pdfobj{<</MaxThumbNumber \the\thumbfound>>} +\edef\CatalogHook{\the\pdflastobj\space 0 R}% +\immediate\write16{* Looking for extra thumbnails:} + +\def\END{% + \ifx\allthumbs\empty + \else + \immediate\pdfobj{<</ListThumbs\listthumbs>>}% + \edef\CatalogHook{\CatalogHook\space\the\pdflastobj\space 0 R}% + \fi + \pdfcatalog{/ThumbpdfHook [\CatalogHook]}% + \vfill\eject + \csname bye\endcsname % \bye is \outer +} + +% <jobname>.tno +\ifx\thumbjob\UnDeFiNeD + \immediate\write16{!!! Warning: \string\thumbjob\space undefined, + search for extra thumbnails skipped!% + } + \expandafter\END +\fi +\def\optfile{\thumbjob.tno}% +\iffileexists{\optfile}{}{% + \immediate\write16{==> No optional thumbnail file.}% + \END +}% +\thumbfound=0 + +\def\thumb{\futurelet\nexttoken\thumbA} +\let\braceleft=[ +\def\thumbA{% + \if\nexttoken\braceleft + \expandafter\thumbB + \else + \expandafter\thumbC + \fi +} +\def\thumbC#1{\thumbB[#1]{#1}} +\def\thumbB[#1]#2{% #1: label, #2: file[.png] + \iffileexists{#2.png}{% + \def\thumbfilename{#2.png}% + }{% + \iffileexists{#2}{% + \def\thumbfilename{#2}% + }{% + \let\thumbfilename\empty + }% + }% + \ifx\thumbfilename\empty + \immediate\write16{% + !!! Warning: Thumbnail `#2' does not exist!"}% + \else + \edef\listthumbs{\listthumbs\space{#1}}% + \printthumbfile + \advance\thumbcount by -1 + \pageno=\thumbcount + \advance\thumbfound by 1 + \fi +} + +\thumbcount=0 +\input \optfile +\break +\immediate\write16{==> \the\thumbfound\space extra thumbnail(s) found.}% + +\END |