%% -*- TeX -*- %% (top line is for WinEdt: TeX file) %% %% This is file `pdfwin.sty'. It provides three widely %% customizable windows for screen output of TeX documents. %% %% Copyright (C) 2001,02,03 Matthias M\"{u}hlich %% muehlich@iap.uni-frankfurt.de %% %% NOTES: %% * I prefer readability to achieving maximum effectivity, i.e. I %% tried to avoid macros like \hb@xt@, \z@, \p@ or \xixt@@n and %% wrote \hbox to, 0, 1pt and 16 instead. %% * The package "pdfscreen.sty" by C.V. Radhakrishnan provided a %% nice inspiration of what is possible with pdf output - at least %% if you use default configuration and are content with the %% package and its many bugs. %% The pdfwin package was completely coded from scratch and its %% features and flexibility extend pdfscreen considerably. Only a %% bug fix in "pdfscreen.sty" (provided by D. P. Story) and %% some foreign language names were copied. %% %% This program 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. %% %% History: %% JAN-FEB 2001 1.0 MM first version %% JUL 2001 1.1 MM I added some macros for a upcoming %% presentation at a conference %% SEP-OCT 2001 1.2 MM some cosmetics; adapted to a lecture script; %% chapterpanel functionality %% MAR-APR 2003 1.3 MM some functionality removed (temporarily); %% first official release %% %% ===================================================================== %% This program package contains the following files: %% * pdfwin.sty style file %% (to be included with \UsePackage{pdfwin}) %% * pdfwin.cfg configuration file (empty) %% ------------------------------------------------------------------ %% * truncate.sty style file not included in all LaTeX %% distributions; needed for panel TOC %% ------------------------------------------------------------------ %% * Bucuresti2003.tex sample document, main file %% * Buc*.pdf graphics for sample document %% * marble.png background graphics for sample document %% * JWGU-Logo.png logo of my university %% * shortvec.tex abbreviations for vectors and matrices %% ===================================================================== %% %% feel free to experiment with the code! But remember: %% modification means change of filename (and be fair and give reference %% to the original author :-). See LaTeX Project Public %% License for details. %% %% please report bugs to: muehlich@iap.uni-frankfurt.de Thanks! \NeedsTeXFormat{LaTeX2e} % ============== % identification % ============== % \ProvidesPackage{pdfwin}% [2003/04/04 v1.3 This is package pdfwin. It provides widely % customizable windows for screen output of TeX documents.] % ================= % required packages % ================= % % NOTE: all packages listed here are standard packages. % However, if paneltoc is activated you have to get % truncate.sty from CTAN (e.g. ftp://ftp.dante.de/tex-archive) \RequirePackage{amssymb} % black triangles \RequirePackage{keyval} % user interface \RequirePackage{graphicx} \RequirePackage{color} % ======================== % preliminary declarations % ======================== % \newif\if@nocfg \@nocfgfalse \newif\if@paneltoc \@paneltocfalse \newif\if@chapterpanel \@chapterpanelfalse \newif\if@coloremph \@coloremphfalse \newif\if@pdftexdriver \@pdftexdriverfalse % \def\PDFWIN@Warning#1{\PackageWarning{pdfwin}{#1}} \def\PDFWIN@Info#1{\PackageInfo{pdfwin}{#1}} \def\PDFWIN@Error#1#2{\PackageError{pdfwin}{#1}{#2}} \def\PDFWIN@langwarn#1{\PackageWarningNoLine{pdfwin}{% Sorry, language `#1' not supported\MessageBreak% in this version. English strings are used instead.\MessageBreak% However you can give all the strings in the pdfwin.cfg\MessageBreak% file which will be read by the package. \MessageBreak\MessageBreak% If you can suggest translations for this language,\MessageBreak% please mail them to the author of this package}} % \def\paneltitlepagename#1{\gdef\@Paneltitlepagename{#1}} \def\panelabstractname#1{\gdef\@Panelabstractname{#1}} \def\panelcontentsname#1{\gdef\@Panelcontentsname{#1}} \def\panelindexname#1{\gdef\@Panelindexname{#1}} \def\panelhomepagename#1{\gdef\@Panelhomepagename{#1}} \def\panelfullscreenname#1{\gdef\@Panelfullscreenname{#1}} \def\panelgobackname#1{\gdef\@Panelgobackname{#1}} \def\panelgoforwardname#1{\gdef\@Panelgoforwardname{#1}} \def\panelsearchname#1{\gdef\@Panelsearchname{#1}} \def\panelquitname#1{\gdef\@Panelquitname{#1}} \def\panelclosename#1{\gdef\@Panelclosename{#1}} \def\panelpagename#1{\gdef\@Panelpagename{#1}} \def\panelofname#1{\gdef\@Panelofname{#1}} \let\@Paneltitlepagename\@empty \let\@Panelabstractname\@empty \let\@Panelcontentsname\@empty \let\@Panelindexname\@empty \let\@Panelhomepagename\@empty \let\@Panelfullscreenname\@empty \let\@Panelgobackname\@empty \let\@Panelgoforwardname\@empty \let\@Panelsearchname\@empty \let\@Panelquitname\@empty \let\@Panelclosename\@empty \let\@Panelpagename\@empty \let\@Panelofname\@empty % ================================= % option declaration and processing % ================================= % \DeclareOption{nocfg}{\@nocfgtrue} \DeclareOption{paneltoc}{\@paneltoctrue} \DeclareOption{chapterpanel}{\@chapterpaneltrue} \DeclareOption{coloremph}{\@coloremphtrue} \DeclareOption{pdftex}{\@pdftexdrivertrue} \DeclareOption{sectionbreak}{% \let\org@section\section\def\section{\clearpage\org@section}% } % \DeclareOption{catalan}{% \paneltitlepagename{Inici} \panelabstractname{Resum} \panelcontentsname{Contingut} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Plana personal} \panelgobackname{Tornar} \panelgoforwardname{->} \panelclosename{Tancar} \panelsearchname{???} \panelquitname{Sortir} \panelpagename{P\`agina} \panelofname{de} } \DeclareOption{czech}{% \paneltitlepagename{Tituln\'{\i} strana} \panelabstractname{Abstrakt} \panelcontentsname{Obsah} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{\'Uvodn\'{\i} strana} \panelgobackname{Zp\v{e}t} \panelgoforwardname{->} \panelclosename{Zav\v{r}\'{\i}t} \panelsearchname{???} \panelquitname{Konec} \panelpagename{Strana} \panelofname{z} } \DeclareOption{danish}{% \paneltitlepagename{Forside} \panelabstractname{Resum\'e} \panelcontentsname{Indhold} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Hjemmeside} \panelgobackname{G\aa\ tilbage} \panelgoforwardname{->} \panelclosename{Luk} \panelsearchname{???} \panelquitname{Afslut} \panelpagename{Side} \panelofname{af} } \DeclareOption{dutch}{ \paneltitlepagename{Titel Pagina} \panelabstractname{Samenvatting} \panelcontentsname{Inhoudsopgave} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Startpagina} \panelgobackname{Ga terug} \panelgoforwardname{->} \panelclosename{Sluiten} \panelsearchname{???} \panelquitname{Be\"eindigen} \panelpagename{Pagina} \panelofname{van} } \DeclareOption{english}{% \paneltitlepagename{Title Page} \panelabstractname{Abstract} \panelcontentsname{Contents} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Home Page} \panelgobackname{Go Back} \panelgoforwardname{Go Forward} \panelclosename{Close} \panelsearchname{Search} \panelquitname{Quit} \panelpagename{Page} \panelofname{of} } \DeclareOption{french}{% \paneltitlepagename{Page de Titre} \panelabstractname{R\'esum\'e} \panelcontentsname{Sommaire} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Page d\'accueil} \panelgobackname{Retour} \panelgoforwardname{->} \panelclosename{Fermer} \panelsearchname{???} \panelquitname{Quitter} \panelpagename{Page} \panelofname{de} } \DeclareOption{german}{% \paneltitlepagename{Titelseite} \panelabstractname{Zusammenfassung} \panelcontentsname{Inhalt} \panelindexname{Index} \panelfullscreenname{Vollbild} \panelhomepagename{WWW-Startseite} \panelgobackname{Zur\"uck} \panelgoforwardname{Vor} \panelclosename{Schlie\ss en} \panelsearchname{Suchen} \panelquitname{Beenden} \panelpagename{Seite} \panelofname{von} } \DeclareOption{norsk}{% \paneltitlepagename{Forside} \panelabstractname{Sammendrag} \panelcontentsname{Innhold} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Hjemmeside} \panelgobackname{G\aa\ tilbake} \panelgoforwardname{->} \panelclosename{Lukk} \panelsearchname{???} \panelquitname{Avslutt} \panelpagename{Side} \panelofname{av} } \DeclareOption{nynorsk}{% \paneltitlepagename{Forside} \panelabstractname{Samandrag} \panelcontentsname{Innhald} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Heimeside} \panelgobackname{G\aa\ tilbake} \panelgoforwardname{->} \panelclosename{Lat att} \panelsearchname{???} \panelquitname{Avslutt} \panelpagename{Side} \panelofname{av} } \DeclareOption{polish}{% \paneltitlepagename{Strona tytu\l owa} \panelabstractname{Streszczenie} \panelcontentsname{Spis tre\'sci} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Strona g\l \'owna} \panelgobackname{Powr\'ot} \panelgoforwardname{->} \panelclosename{Zamknij} \panelsearchname{???} \panelquitname{Koniec} \panelpagename{Strona} \panelofname{z} } \DeclareOption{portuges}{% \paneltitlepagename{P\'agina de Rosto} \panelabstractname{Sum\'ario} \panelcontentsname{\'Indice Geral} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Homepage} \panelgobackname{Voltar} \panelgoforwardname{->} \panelclosename{Fechar} \panelsearchname{???} \panelquitname{Desistir} \panelpagename{P\'agina} \panelofname{de} } \DeclareOption{russian}{% \paneltitlepagename{\cyr\CYRT\cyri\cyrt\cyru\cyrl\cyrsftsn\cyrn\cyra\cyrya{} \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyra} \panelabstractname{\cyr\CYRA\cyrn\cyrn\cyro\cyrt\cyra\cyrc\cyri\cyrya} \panelcontentsname{\cyr\CYRS\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Home Page} \panelgobackname{\cyr\CYRN\cyra\cyrz\cyra\cyrd} \panelgoforwardname{->} \panelclosename{\cyr\CYRZ\cyra\cyrk\cyrr\cyrery\cyrt\cyrsftsn} \panelsearchname{???} \panelquitname{\cyr\CYRV\cyrery\cyrh\cyro\cyrd} \panelpagename{\cyr\CYRS\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyra} \panelofname{\cyr\cyri\cyrz} } \DeclareOption{slovak}{% \paneltitlepagename{Tituln\'a strana} \panelabstractname{Abstrakt} \panelcontentsname{Obsah} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Domovsk\'a str\'anka} \panelgobackname{Sp\"a\v t} \panelgoforwardname{->} \panelclosename{Zatvori\v t} \panelsearchname{???} \panelquitname{Koniec} \panelpagename{Strana} \panelofname{z} } \DeclareOption{slovene}{% \paneltitlepagename{Naslovnica} \panelabstractname{Povzetek} \panelcontentsname{Kazalo} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Spletna stran} \panelgobackname{Nazaj} \panelgoforwardname{->} \panelclosename{Zapri} \panelsearchname{???} \panelquitname{Kon\v{c}aj} \panelpagename{Stran} \panelofname{od} } \DeclareOption{spanish}{% \paneltitlepagename{P\'agina de Abertura} \panelabstractname{Resumen} \panelcontentsname{Contenido} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{P\'agina www} \panelgobackname{Regresar} \panelgoforwardname{->} \panelclosename{Cerrar} \panelsearchname{???} \panelquitname{Abandonar} \panelpagename{P\'agina} \panelofname{de} } \DeclareOption{swedish}{% \paneltitlepagename{F\"ors\"attsblad} \panelabstractname{Sammanfattning} \panelcontentsname{Inneh\aa{}ll} \panelindexname{Index} % ??? \panelfullscreenname{Full Screen} \panelhomepagename{Hemsida} \panelgobackname{Tillbaka} \panelgoforwardname{->} \panelclosename{St\"ang} \panelsearchname{???} \panelquitname{Avsluta} \panelpagename{Sida} \panelofname{av} } % define all other languages of babel package as non existent \DeclareOption{bahasa}{\PDFSCR@langwarn{bahasa}\ExecuteOptions{english}} \DeclareOption{breton}{\PDFSCR@langwarn{breton}\ExecuteOptions{english}} \DeclareOption{croatian}{\PDFSCR@langwarn{croatian}\ExecuteOptions{english}} \DeclareOption{esperanto}{\PDFSCR@langwarn{esperanto}\ExecuteOptions{english}} \DeclareOption{finnish}{\PDFSCR@langwarn{finnish}\ExecuteOptions{english}} \DeclareOption{galician}{\PDFSCR@langwarn{galician}\ExecuteOptions{english}} \DeclareOption{greek}{\PDFSCR@langwarn{greek}\ExecuteOptions{english}} \DeclareOption{hebrew}{\PDFSCR@langwarn{hebrew}\ExecuteOptions{english}} \DeclareOption{hungarian}{\PDFSCR@langwarn{hungarian}\ExecuteOptions{english}} \DeclareOption{magyar}{\PDFSCR@langwarn{magyar}\ExecuteOptions{english}} \DeclareOption{irish}{\PDFSCR@langwarn{irish}\ExecuteOptions{english}} \DeclareOption{italian}{\PDFSCR@langwarn{italian}\ExecuteOptions{english}} \DeclareOption{lowersorbian}{\PDFSCR@langwarn{lowersorbian}\ExecuteOptions{english}} \DeclareOption{uppersorbian}{\PDFSCR@langwarn{uppersorbian}\ExecuteOptions{english}} \DeclareOption{romanian}{\PDFSCR@langwarn{romanian}\ExecuteOptions{english}} \DeclareOption{scottish}{\PDFSCR@langwarn{scottish}\ExecuteOptions{english}} \DeclareOption{turkish}{\PDFSCR@langwarn{turkish}\ExecuteOptions{english}} \DeclareOption{ukrainian}{\PDFSCR@langwarn{ukrainian}\ExecuteOptions{english}} \DeclareOption{welsh}{\PDFSCR@langwarn{welsh}\ExecuteOptions{english}} % some replacements \DeclareOption{american}{\ExecuteOptions{english}} \DeclareOption{USenglish}{\ExecuteOptions{english}} \DeclareOption{UKenglish}{\ExecuteOptions{english}} \DeclareOption{british}{\ExecuteOptions{english}} \DeclareOption{austrian}{\ExecuteOptions{german}} \DeclareOption{germanb}{\ExecuteOptions{german}} \DeclareOption{brazil}{\ExecuteOptions{portuges}} \DeclareOption{portuguese}{\ExecuteOptions{portuges}} \DeclareOption{brazilian}{\ExecuteOptions{portuges}} \DeclareOption{francais}{\ExecuteOptions{french}} \DeclareOption{ngerman}{\typeout{****** Igitt! Neue Beliebigkeits-Rechtschreibung!% Na, meinetwegen... ;-) ******}\ExecuteOptions{german}} \DeclareOption{naustrian}{\typeout{****** Igitt! Neue Beliebigkeits-Rechtschreibung!% Na, meinetwegen... ;-) ******}\ExecuteOptions{german}} \ExecuteOptions{english} \ProcessOptions\relax % ======================= % BEGIN OF IMPLEMENTATION % ======================= % % NOTE: all identifiers containing an '@' symbol are internal % identifiers. Please do not write code that relies on these % functions because they might change in future versions. % -------------------------------------------------------------- % HYPERREF SETUP % \if@paneltoc\RequirePackage[breakall]{truncate}\fi % \@ifundefined{hyperref}{% \if@pdftexdriver% \RequirePackage[pdftex,backref,pagebackref,colorlinks,plainpages=false,% menucolor=menucolor,% % pdfpagemode=FullScreen,% pdfmenubar=false,pdftoolbar=false,% pdffitwindow=true,pdfcenterwindow=true,pdfwindowui=false,pdfview=Fit,% pdfstartview=Fit]{hyperref}% \else% (no pdftex => try to setup hyperref now) \hypersetup{% backref,pagebackref,colorlinks,plainpages=false,menucolor=menucolor,% pdfpagemode=none,pdfmenubar=false,pdftoolbar=false,pdffitwindow=true,% pdfcenterwindow=true,pdfwindowui=false,pdfview=Fit,pdfstartview=Fit% } \fi% }{ % (else hyperref undefined) \PDFWIN@Error{Please load hyperref package first}{hyperref must be loaded before pdfwin}% } % -------------------------------------------------------------- % COUNTERS % % window types % 0: disabled % 1: transparent % 2: colored background % 3: graphics % 4: colored background + graphics \newcount\@Screen@Type \@Screen@Type=2 \newcount\@Text@WinType \@Text@WinType=2 \newcount\@Panel@WinType \@Panel@WinType=2 \newcount\@User@WinType \@User@WinType=0 % % define chapter counter for small classes (!!!) \ifx\c@chapter\@undefined\newcount\c@chapter\fi % % RealPage is necessary to allow different page numberings, % e.g. roman for titlepage, abstract, contents and foreword % and arabic numbering (starting with 1!) for the rest \newcounter{RealPage} \setcounter{RealPage}{1} % % Three windows are predefined - text, panel, user. Additional windows % can be defined by the user if he/she needs them. \newcounter{WindowCount} \setcounter{WindowCount}{3} % % PanelTocLine is a counter for the lines in the panel TOC \newcounter{PanelTocLine}[page] \newcounter{TocChapterCount}[page] \newcounter{ptocsection}\setcounter{ptocsection}{0} % -------------------------------------------------------------- % BOOLEANS % \newif\if@PanelTocHighlight \@PanelTocHighlightfalse \newif\if@PTocNTransparent \@PTocNTransparentfalse \newif\if@PTocHTransparent \@PTocHTransparentfalse \newif\if@InPreamble \@InPreambletrue \AtBeginDocument{\@InPreamblefalse} % -------------------------------------------------------------- % COLORS --- these colors can be modified (i.e. redefined) by the user % % screen and window colors \definecolor{ScreenBackgroundColor}{rgb}{.0,.2,.8} \definecolor{TextBackgroundColor}{rgb}{.8,.9,1.0} \definecolor{PanelBackgroundColor}{rgb}{.7,.75,.8} \definecolor{UserBackgroundColor}{rgb}{1.0,1.0,1.0} \definecolor{TextBorderColor}{rgb}{.0,.0,.0} \definecolor{PanelBorderColor}{rgb}{.0,.0,.0} \definecolor{UserBorderColor}{rgb}{.0,.0,.0} % button colors \definecolor{ButtonTextColor}{rgb}{.0,.0,.3} \definecolor{ButtonHighlightedTextColor}{rgb}{.8,.0,.2} \definecolor{ButtonDisabledTextColor}{rgb}{.5,.55,.6} \definecolor{ButtonBackgroundColor}{rgb}{.7,.75,.8} \definecolor{ButtonUpperShadowColor}{rgb}{.85,.9,.95} \definecolor{ButtonShadowColor}{rgb}{.5,.55,.6} % logo colors \definecolor{LogoShadowColor}{rgb}{.85,.9,.95} \definecolor{LogoUpperShadowColor}{rgb}{.5,.55,.6} % panel toc colors \definecolor{PanelTocNormalTextColor}{rgb}{.0,.0,.3} \definecolor{PanelTocNormalBackgroundColor}{rgb}{.7,.75,.8} \definecolor{PanelTocHighlightedTextColor}{rgb}{.8,.8,.0} \definecolor{PanelTocHighlightedBackgroundColor}{rgb}{.0,.0,.3} % text colors \definecolor{TextEmphColor}{rgb}{.0,.0,.8}% \definecolor{TextGrayedOutColor}{rgb}{.5,.5,.5}% \definecolor{TextHighlightedColor}{rgb}{.9,.0,.2}% \definecolor{TextRevealedColor}{rgb}{.0,.0,.5}% % section headings \definecolor{Section0Color}{rgb}{.7,.7,.0} \definecolor{Section1Color}{rgb}{.75,.6,.1} \definecolor{Section2Color}{rgb}{.7,.4,.2} \definecolor{Section3Color}{rgb}{.65,.2,.3} \definecolor{Section4Color}{rgb}{.6,.1,.5} \definecolor{Section5Color}{rgb}{.55,.0,.7} % chapter panel colors: 0 - title, contents, index, ... % 1 - normal chapters % a/b/c/d: background/text/upper shadow/lower shadow \definecolor{ChapterPanelColor0a}{rgb}{.9,.9,.9} \definecolor{ChapterPanelColor0b}{rgb}{0,0,0} \definecolor{ChapterPanelColor0c}{rgb}{1,1,1} \definecolor{ChapterPanelColor0d}{rgb}{.4,.4,.4} \definecolor{ChapterPanelColor1a}{rgb}{.15,.2,.5} \definecolor{ChapterPanelColor1b}{rgb}{.95,.95,.95} \definecolor{ChapterPanelColor1c}{rgb}{.6,.7,.95} \definecolor{ChapterPanelColor1d}{rgb}{.0,.05,.3} % -------------------------------------------------------------- % LENGTHS % \setlength{\headheight}{0pt} \setlength{\headsep}{0pt} \setlength{\footskip}{0pt} \hoffset=0pt \voffset=0pt \paperwidth=20cm \paperheight=15cm \pagestyle{empty} % % NOTE: % We will use the \put command for displaying graphics. Therefore,% % the origin is in the LOWER left corner at (0pt/0pt). % % - text window position (lower left corner) and size \newlength{\@Text@LLX} \setlength{\@Text@LLX}{.02\paperwidth} \newlength{\@Text@LLY} \setlength{\@Text@LLY}{.02\paperheight} \newlength{\@Text@DimX} \setlength{\@Text@DimX}{.79\paperwidth} \newlength{\@Text@DimY} \setlength{\@Text@DimY}{.96\paperheight} % - panel position (lower left corner) and size \newlength{\@Panel@LLX} \setlength{\@Panel@LLX}{.83\paperwidth} \newlength{\@Panel@LLY} \setlength{\@Panel@LLY}{.02\paperheight} \newlength{\@Panel@DimX} \setlength{\@Panel@DimX}{.15\paperwidth} \newlength{\@Panel@DimY} \setlength{\@Panel@DimY}{.96\paperheight} % - user window position (lower left corner) and size \newlength{\@User@LLX} \setlength{\@User@LLX}{.02\paperwidth} \newlength{\@User@LLY} \setlength{\@User@LLY}{.92\paperheight} \newlength{\@User@DimX} \setlength{\@User@DimX}{.79\paperwidth} \newlength{\@User@DimY} \setlength{\@User@DimY}{.06\paperheight} % - window borders \newlength{\@Text@BorderThickness} \setlength{\@Text@BorderThickness}{2.0pt} \newlength{\@Text@BorderArcRadius} \setlength{\@Text@BorderArcRadius}{12pt} \newlength{\@Panel@BorderThickness} \setlength{\@Panel@BorderThickness}{2.0pt} \newlength{\@Panel@BorderArcRadius} \setlength{\@Panel@BorderArcRadius}{12pt} \newlength{\@User@BorderThickness} \setlength{\@User@BorderThickness}{2.0pt} \newlength{\@User@BorderArcRadius} \setlength{\@User@BorderArcRadius}{12pt} % - margins (apply for text window) \newlength{\@LeftMargin} \setlength{\@LeftMargin}{1cm} \newlength{\@RightMargin} \setlength{\@RightMargin}{1cm} \newlength{\@TopMargin} \setlength{\@TopMargin}{1cm} \newlength{\@BottomMargin} \setlength{\@BottomMargin}{1cm} % - button shape \newlength{\@ButtonShadowDepth}\setlength{\@ButtonShadowDepth}{2pt} \newlength{\@ButtonWidth} \setlength{\@ButtonWidth}{.8\@Panel@DimX} \newlength{\@SmallButtonWidth} \setlength{\@SmallButtonWidth}{.4\@Panel@DimX} \addtolength{\@SmallButtonWidth}{-\@ButtonShadowDepth} % - logo shape \newlength{\@LogoWidth} \setlength{\@LogoWidth}{.7\@Panel@DimX} \newlength{\@LogoShadowDepth} \setlength{\@LogoShadowDepth}{3.0pt} % - panel toc height (usually automatic; fixed only if >0) \newlength{\@PanelTOCHeight} \setlength{\@PanelTOCHeight}{0cm} % % temporary help registers \newdimen\Win@DimX \newdimen\Win@DimY \newdimen\Win@LLX \newdimen\Win@LLY \newdimen\Win@BT \newdimen\Win@BR % -------------------------------------------------------------- % LAYOUT % \newcommand{\InitLayout}{% % NOTE: both \oddsidemargin and \evensidemargin define % LEFT margins (on odd/even pages). In one-sided % documents only \oddsidemargin is used. \if@InPreamble% \else% \PDFWIN@Warning{***** Page Layout changed outside of % Preamble - this might not work as expected! *****} \fi% \global\setlength{\textwidth}{\@Text@DimX}% \global\addtolength{\textwidth}{-\@LeftMargin}% \global\addtolength{\textwidth}{-\@RightMargin}% \global\setlength{\textheight}{\@Text@DimY}% \global\addtolength{\textheight}{-\@TopMargin}% \global\addtolength{\textheight}{-\@BottomMargin}% \global\addtolength{\textheight}{-\headheight}% \global\addtolength{\textheight}{-\headsep}% \global\addtolength{\textheight}{-\footskip}% \global\setlength{\oddsidemargin}{\@LeftMargin}% \global\addtolength{\oddsidemargin}{\@Text@LLX}% \global\addtolength{\oddsidemargin}{-1in}% \global\setlength{\evensidemargin}{\@LeftMargin}% \global\addtolength{\evensidemargin}{\@Text@LLX}% \global\addtolength{\evensidemargin}{-1in}% \global\setlength{\topmargin}{\@TopMargin}% \global\addtolength{\topmargin}{\paperheight}% \global\addtolength{\topmargin}{-\@Text@DimY}% \global\addtolength{\topmargin}{-\@Text@LLY}% \global\addtolength{\topmargin}{-1in}% } \InitLayout % initialize with default values % -------------------------------------------------------------- % GENERAL DEFINITIONS % \renewcommand\floatpagefraction{1} \renewcommand\textfraction{0} % % Overwrite page styles. Can be modified by user to make use of % explicit or implicit (e.g. "empty" for title page or "plain" for % first page of chapters) page style modifications \def\ps@plain{} \def\ps@empty{} \def\ps@firstpage{} \def\ps@headings{} \def\ps@myheadings{} \def\ps@title{} % \def\@linkcolor{red} \def\@anchorcolor{blue} \def\@citecolor{red} \def\@filecolor{red} \def\@urlcolor{magenta} \def\@menucolor{red} \def\@pagecolor{red} % \def\Top@Text@{\relax} \def\@Text@{\relax} \def\@Panel@{\relax} \def\@User@{\relax} % \let\@Screen@Overlay\@empty \let\@Text@Overlay\@empty \let\@Panel@Overlay\@empty \let\@User@Overlay\@empty % \def\emptystring{empty} \edef\@paneltext{\emptystring} \edef\@LogoFile{\emptystring} \def\@LogoWidth{2cm} \edef\@HomepageURL{\emptystring} \edef\@LogoURL{\emptystring} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % USER INTERFACE % \long\def\SetUnderTextWin#1{\gdef\@Text@{#1}} \long\def\SetOverTextWin#1{\gdef\Top@Text@{#1}} \long\def\SetPanelContents#1{\gdef\@Panel@{#1}} \long\def\SetUserContents#1{\gdef\@User@{#1}} % \newcommand{\SetMargins}[4]{% \global\setlength{\@LeftMargin}{#1}% \global\setlength{\@RightMargin}{#2}% \global\setlength{\@TopMargin}{#3}% \global\setlength{\@BottomMargin}{#4}% \InitLayout% } \newcommand{\SetPaneltext}[1]{\gdef\@paneltext{#1}} % \expandafter\def\csname WindowName1\endcsname{Text} \expandafter\def\csname WindowName2\endcsname{Panel} \expandafter\def\csname WindowName3\endcsname{User} \expandafter\def\csname WindowRef1\endcsname{text} \expandafter\def\csname WindowRef2\endcsname{panel} \expandafter\def\csname WindowRef3\endcsname{user} % % MACROS USING KEYVAL PACKAGE \def\SetScreen#1{\setkeys{pdfwinScreen}{#1}} \def\SetLogo#1{\setkeys{pdfwinLogo}{#1}} \def\SetButtons#1{\setkeys{pdfwinButtons}{#1}} \def\SetPanelTOC#1{\setkeys{pdfwinPanelTOC}{#1}} \def\SetWindow#1#2{% \def\@WinName{error}% \@tempcnta=\c@WindowCount% \loop% \ifnum\@tempcnta>0% \def\tempa{#1}% \edef\tempb{\csname WindowRef\number\@tempcnta\endcsname}% \ifx\tempa\tempb% \xdef\@WinName{\csname WindowName\number\@tempcnta\endcsname}% \fi% \advance\@tempcnta by -1% \repeat% \def\tempb{error}% \ifx\@WinName\tempb% \PDFWIN@Error{SetWindow called with wrong window name specifier '#1'}% {you can only use 'text', 'panel' or 'user' (or your user-created% additional specifiers) as window identifiers % (first argument of SetWindow command)}% \fi% \setkeys{pdfwin}{#2}% } % % SCREEN KEYS \define@key{pdfwinScreen}{width}{\global\paperwidth=#1} \define@key{pdfwinScreen}{height}{\global\paperheight=#1\InitLayout} \define@key{pdfwinScreen}{filename}{\xdef\@Screen@Overlay{#1}} \define@key{pdfwinScreen}{backgroundcolor}% {\definecolor{ScreenBackgroundColor}{rgb}{#1}} \define@key{pdfwinScreen}{type}{% \def\tempa{#1}% \def\tempb{disabled}% \ifx\tempa\tempb\PDFWIN@Error{Disabling screen?! NO!}{\PDFWIN@ScreenErr}% \else\def\tempb{transparent}% \ifx\tempa\tempb\PDFWIN@Error{transparent screen?! NO!}{\PDFWIN@ScreenErr}% \else\def\tempb{colored}% \ifx\tempa\tempb\global\@Screen@Type=2% \else\def\tempb{graphics}% \ifx\tempa\tempb\global\@Screen@Type=3% \else\def\tempb{extended}% \ifx\tempa\tempb\global\@Screen@Type=4% \else\def\tempb{wallpaper}% \ifx\tempa\tempb\global\@Screen@Type=5% \else\PDFWIN@Error{SetScreen called with wrong type specifier '#1'}{\PDFWIN@ScreenErr}% \fi\fi\fi\fi\fi\fi% } \def\PDFWin@ScreenErr{Only 'colored', 'graphics', 'extended' and 'wallpaper' are % allowed for the screen type. In contrast to windows, 'disabled' and % 'transparent' are forbidden.} % % LOGO KEYS \define@key{pdfwinLogo}{shadowcolor}% {\definecolor{LogoShadowColor}{rgb}{#1}} \define@key{pdfwinLogo}{uppershadowcolor}% {\definecolor{LogoUpperShadowColor}{rgb}{#1}} \define@key{pdfwinLogo}{filename}{\xdef\@LogoFile{#1}} \define@key{pdfwinLogo}{width}{\xdef\@LogoWidth{#1}} \define@key{pdfwinLogo}{shadowdepth}{\global\@LogoShadowDepth=#1} \define@key{pdfwinLogo}{url}{\xdef\@LogoURL{#1}} % % BUTTONS KEYS \def\Init@Buttons{% \global\setlength{\@SmallButtonWidth}{.5\@ButtonWidth}% \global\addtolength{\@SmallButtonWidth}{-\@ButtonShadowDepth}} \define@key{pdfwinButtons}{width}{\global\@ButtonWidth=#1\Init@Buttons} \define@key{pdfwinButtons}{shadowdepth}% {\global\@ButtonShadowDepth=#1\Init@Buttons} \define@key{pdfwinButtons}{backgroundcolor}% {\definecolor{ButtonBackgroundColor}{rgb}{#1}} \define@key{pdfwinButtons}{textcolor}% {\definecolor{ButtonTextColor}{rgb}{#1}} \define@key{pdfwinButtons}{htextcolor}% {\definecolor{ButtonHighlightedTextColor}{rgb}{#1}} \define@key{pdfwinButtons}{dtextcolor}% {\definecolor{ButtonDisabledTextColor}{rgb}{#1}} \define@key{pdfwinButtons}{shadowcolor}% {\definecolor{ButtonShadowColor}{rgb}{#1}} \define@key{pdfwinButtons}{uppershadowcolor}% {\definecolor{ButtonUpperShadowColor}{rgb}{#1}} \define@key{pdfwinButtons}{url}{\xdef\@HomepageURL{#1}} % % PANELTOC KEYS \define@key{pdfwinPanelTOC}{textcolor}% {\definecolor{PanelTocNormalTextColor}{rgb}{#1}} \define@key{pdfwinPanelTOC}{backgroundcolor}% {\definecolor{PanelTocNormalBackgroundColor}{rgb}{#1}} \define@key{pdfwinPanelTOC}{htextcolor}% {\definecolor{PanelTocHighlightedTextColor}{rgb}{#1}} \define@key{pdfwinPanelTOC}{hbackgroundcolor}% {\definecolor{PanelTocHighlightedBackgroundColor}{rgb}{#1}} \define@key{pdfwinPanelTOC}{height}% {\global\@PanelTOCHeight=#1} \define@key{pdfwinPanelTOC}{transparency}{% \def\tempa{#1}% \def\tempb{none}% \ifx\tempa\tempb\@PTocNTransparentfalse\@PTocHTransparentfalse% \else\def\tempb{normal}% \ifx\tempa\tempb\@PTocNTransparenttrue\@PTocHTransparentfalse% \else\def\tempb{highlighted}% \ifx\tempa\tempb\@PTocNTransparentfalse\@PTocHTransparenttrue% \else\def\tempb{both}% \ifx\tempa\tempb\@PTocNTransparenttrue\@PTocHTransparenttrue% \else\PDFWIN@Error{wrong specifier '#1' for panel TOC transparency mode}% {Only the transparency modes 'none', 'normal', 'highlighted' and% 'both' are possible}% \fi\fi\fi\fi% } % % WINDOW KEYS \def\Adjust@Text@Win{\InitLayout} \def\Adjust@Panel@Win{} \def\Adjust@User@Win{} \define@key{pdfwin}{basex}{\global\csname @\@WinName @LLX\endcsname=#1% \csname Adjust@\@WinName @Win\endcsname} \define@key{pdfwin}{basey}{\global\csname @\@WinName @LLY\endcsname=#1% \csname Adjust@\@WinName @Win\endcsname} \define@key{pdfwin}{width}{\global\csname @\@WinName @DimX\endcsname=#1% \csname Adjust@\@WinName @Win\endcsname} \define@key{pdfwin}{height}{\global\csname @\@WinName @DimY\endcsname=#1% \csname Adjust@\@WinName @Win\endcsname} \define@key{pdfwin}{borderthickness}% {\global\csname @\@WinName @BorderThickness\endcsname=#1} \define@key{pdfwin}{borderradius}% {\global\csname @\@WinName @BorderArcRadius\endcsname=#1} \define@key{pdfwin}{filename}% {\expandafter\xdef\csname @\@WinName @Overlay\endcsname{#1}} \define@key{pdfwin}{backgroundcolor}% {\definecolor{\@WinName BackgroundColor}{rgb}{#1}} \define@key{pdfwin}{bordercolor}% {\definecolor{\@WinName BorderColor}{rgb}{#1}} \define@key{pdfwin}{type}{% \def\tempa{#1}% \def\tempb{disabled}% \ifx\tempa\tempb\global\csname @\@WinName @WinType\endcsname=0% \else\def\tempb{transparent}% \ifx\tempa\tempb\global\csname @\@WinName @WinType\endcsname=1% \else\def\tempb{colored}% \ifx\tempa\tempb\global\csname @\@WinName @WinType\endcsname=2% \else\def\tempb{graphics}% \ifx\tempa\tempb\global\csname @\@WinName @WinType\endcsname=3% \else\def\tempb{extended}% \ifx\tempa\tempb\global\csname @\@WinName @WinType\endcsname=4% \else\PDFWIN@Error{SetWindow called with wrong window type specifier '#1'}% {Only the window types 'disabled', 'transparent', 'colored',% 'graphics' and 'extended' are allowed.}% \fi\fi\fi\fi\fi% } % --- user interface finished --- % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %========================================================== % % --- internal realization part starts here --- % % NOTE: the following commands will be written to aux-file; % the initial value defined here is overwritten when aux-file is read. % NOTE: \LastPageString is not necessarily an arabic number \newcommand*{\LastPageString}{?} % for page of \newcommand*{\ChapterNumber}{10} % for chapter panel \newcommand*{\LastPage}{999} % for disabling this button \newcommand*{\AbstractPage}{0} % for disabling this button \newcommand*{\ContentsPage}{0} % for disabling this button \newcommand*{\IndexPage}{0} % for disabling this button % % chapter-specific version of \LastPageString: \expandafter\def\csname LastPageC0String\endcsname{???} \expandafter\def\csname LastPageC1String\endcsname{???} \expandafter\def\csname LastPageC2String\endcsname{???} \expandafter\def\csname LastPageC3String\endcsname{???} \expandafter\def\csname LastPageC4String\endcsname{???} \expandafter\def\csname LastPageC5String\endcsname{???} \expandafter\def\csname LastPageC6String\endcsname{???} \expandafter\def\csname LastPageC7String\endcsname{???} \expandafter\def\csname LastPageC8String\endcsname{???} \expandafter\def\csname LastPageC9String\endcsname{???} \expandafter\def\csname LastPageC10String\endcsname{???} \expandafter\def\csname LastPageC11String\endcsname{???} \expandafter\def\csname LastPageC12String\endcsname{???} \expandafter\def\csname LastPageC13String\endcsname{???} \expandafter\def\csname LastPageC14String\endcsname{???} \expandafter\def\csname LastPageC15String\endcsname{???} % % WARNING: AN EVIL HACK WILL FOLLOW NOW ... CONTINUE READING AT OWN RISK ;-) % we have to fight a fierce battle against the babel package here: % babel writes a \select@language command at the begin of the aux-file % (and toc, lof, lot files, if they exist). This command overwrites % \contentsname and \abstractname. Thus, a simple definition would % not work. % We have to change it \emph{at the beginning of the document}. % And additionally, we have to modify \select@language (this is % executed at the beginning of every toc, lof, lot or aux file!). \newcommand*{\PDFWinFightsBabelSuccessfully}{% \renewcommand*{\contentsname}{% \protect\hypertarget{contents}{\@Panelcontentsname}% \immediate\write\@auxout{\string\gdef\string\ContentsPage{\number\c@RealPage}}% }% \renewcommand*{\abstractname}{% \protect\hypertarget{abstract}{\@Panelabstractname}% \immediate\write\@auxout{\string\gdef\string\AbstractPage{\number\c@RealPage}}% }% \renewcommand*{\indexname}{% \protect\hypertarget{index}{\@Panelindexname}% \immediate\write\@auxout{\string\gdef\string\IndexPage{\number\c@RealPage}}% }% } \AtBeginDocument{% \PDFWinFightsBabelSuccessfully% \let\org@select@language\select@language% \def\select@language#1{% \org@select@language{#1}\PDFWinFightsBabelSuccessfully}% } % -------------------------------------------------------------- % NEW WINDOWS % \def\NewWindow#1#2{% % increase window counter \global\advance\c@WindowCount by 1\relax% % % window name and reference \expandafter\gdef\csname WindowName\number\c@WindowCount\endcsname{#1}% \expandafter\gdef\csname WindowRef\number\c@WindowCount\endcsname{#2}% % % append to \Draw@PDFWinWindows \g@addto@macro\Draw@PDFWinWindows{\@ShowWindow{#1}}% % % new colors and variables \definecolor{#1BackgroundColor}{rgb}{1.0,1.0,1.0}% \definecolor{#1BorderColor}{rgb}{.0,.0,.0}% \expandafter\newcount\csname @#1@WinType\endcsname% \csname @#1@WinType\endcsname=0% \expandafter\newlength\csname @#1@LLX\endcsname% \csname @#1@LLX\endcsname=.02\paperwidth% \expandafter\newlength\csname @#1@LLY\endcsname% \csname @#1@LLY\endcsname=.92\paperheight% \expandafter\newlength\csname @#1@DimX\endcsname% \csname @#1@DimX\endcsname=.79\paperwidth% \expandafter\newlength\csname @#1@DimY\endcsname% \csname @#1@DimY\endcsname=.06\paperheight% \expandafter\newlength\csname @#1@BorderThickness\endcsname% \csname @#1@BorderThickness\endcsname=2.0pt% \expandafter\newlength\csname @#1@BorderArcRadius\endcsname% \csname @#1@BorderArcRadius\endcsname=12pt% % % misc \expandafter\def\csname Adjust@#1@Win\endcsname{}% \expandafter\def\csname @#1@\endcsname{\relax}% \long\expandafter\def\csname Set#1Contents\endcsname##1{% \expandafter\gdef\csname @#1@\endcsname{##1}% }% } % -------------------------------------------------------------- % INCREMENTAL PAGE NUMBERING (e.g. 10 - 11a - 11b - 11c - 12) % % mechanism: in order to avoid changes on internal functions as far % as possible, two new counters are introduced. The first one % memorizes the basic page number (i.e. 11 in the example given % above) and the second one is computed as the difference between % the normal page counter (not touched!) and the first counter, % plus offset of one. % NOTE: no \stepcounter or \addtocounter before/after page break % necessary for new counters; normal page counter does the job! % % define new counters for incremental page counting \newcount\c@incpagea \newcount\c@incpageb % % redefine (i.e. patch) \pagenumbering: % \pagenumbering{incremental} starts incremental numbering % \pagenumbering{restore} restores old setting % else: old \pagenumbering definition from latex.ltx \def\pagenumbering#1{% \def\tempa{#1}% \def\tempb{incremental}% \ifx\tempa\tempb \global\c@incpagea=\c@page% \let\org@thepage\thepage% % NOTE: \thepage can be modified by user after \pagenumbering{incremental} \gdef\thepage{\arabic{incpagea}\alph{incpageb}}% \let\org@newpage\newpage% \def\newpage{\org@newpage\computeincpage}% \computeincpage \else \def\tempb{restore}% \ifx\tempa\tempb \let\newpage\org@newpage% \let\thepage\org@thepage% \global\c@page=\c@incpagea% \stepcounter{page} \else \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname\c@page} \fi \fi } \def\computeincpage{% \c@incpageb=\c@page% \advance\c@incpageb\@ne% \advance\c@incpageb -\c@incpagea% } % -------------------------------------------------------------- % FONTS (can be redefined by user) % % setting button text font and style (button height) %\newcommand{\SetButtonTextStyle}{\rule[-4pt]{0pt}{13pt}% % \footnotesize\sffamily\itshape\mdseries} \newcommand{\SetButtonTextStyle}{\rule[-3pt]{0pt}{11pt}% \scriptsize\sffamily\itshape\mdseries} % % setting page info ("page x of y") font and style % (usually the same as button text) %\newcommand{\SetPageInfoStyle}{\rule[-4pt]{0pt}{13pt}% % \footnotesize\sffamily\itshape\mdseries} \newcommand{\SetPageInfoStyle}{\rule[-3pt]{0pt}{11pt}% \scriptsize\sffamily\itshape\mdseries} % % setting panel toc text font and style (button height) %\newcommand{\SetTocNTextStyle}{\rule[-3pt]{0pt}{11pt}% % \scriptsize\sffamily\itshape\mdseries} %\newcommand{\SetTocHTextStyle}{\rule[-3pt]{0pt}{11pt}% % \scriptsize\sffamily\itshape\bfseries} \newcommand{\SetTocNTextStyle}{\rule[-2pt]{0pt}{7pt}% \tiny\sffamily\itshape\mdseries} \newcommand{\SetTocHTextStyle}{\rule[-2pt]{0pt}{7pt}% \tiny\sffamily\itshape\bfseries} % % setting font and style of the chapter panel \newcommand{\SetChapterTextStyle}{\rule[-2pt]{0pt}{9pt}% \sffamily\bfseries\scriptsize} \newcommand{\SetChapterTitelStyle}{\rule[-2pt]{0pt}{7pt}% \sffamily\bfseries\tiny} % -------------------------------------------------------------- % SECTION AND \EMPH COLORING % \if@coloremph\renewcommand{\emph}[1]{\textcolor{TextEmphColor}{#1}}\fi % \let\org@startsection\@startsection \renewcommand{\@startsection}[6]{% \org@startsection{#1}{#2}{#3}{#4}{#5}{#6\color{Section#2Color}}} % % normally redefining \@startsection should be sufficient. % But unfortunately, it's not. Sometimes, the internal color stack % gets mixed up and the beginning of a new page is written in a % wrong color. The color is fixed once a differently colored text % is printed. A work-around for section headings (which are likely to % be affected by this bug) is printing the section number in the % correct color. \let\org@seccntformat\@seccntformat \def\@seccntformat#1{\protect\textcolor{Section\thesection@level Color}% {\org@seccntformat{#1}}\quad}% % -------------------------------------------------------------- % DYNAMIC PAGES % % NOTE: if you are looking at this section in order to define new % dynamic environments and you don't really understand what's % going on here, then I have to apologize, but some things I need % are only possible in plain TeX and not in LaTeX, e.g. global % (and not local) counter settings. Notice that the LaTeX counter % abc is equivalent to the TeX counter \c@abc. % \newcounter{dynamicpage} \setcounter{dynamicpage}{0} \newcounter{maxdynamicpages} \setcounter{maxdynamicpages}{5} % \newcommand*{\copycolor}[2]{\expandafter\let\csname\string\color @#2% \expandafter\endcsname\csname\string\color @#1\endcsname} % \newcommand{\store}[1]{\long\gdef\recall{#1}\global\c@dynamicpage=0} % \newcommand*{\revealnext}{% \newpage% \global\advance\c@dynamicpage by 1% \relax% %% otherwise the FIRST color would not be changed. Mysterious... \copycolor{TextRevealedColor}{color\number\c@dynamicpage}% \recall% } \newcommand{\initreveal}[1]{% \@tempcnta=\c@maxdynamicpages% \loop \ifnum\@tempcnta>0% \copycolor{TextBackgroundColor}{color\number\@tempcnta}% \advance\@tempcnta by -1% \repeat% \store{#1}% } \newcommand*{\highlightnext}{% \newpage% \@tempcnta=\c@maxdynamicpages% \loop \ifnum\@tempcnta>0% \copycolor{TextGrayedOutColor}{color\number\@tempcnta}% \advance\@tempcnta by -1% \repeat% \global\advance\c@dynamicpage by 1% \relax% \copycolor{TextHighlightedColor}{color\number\c@dynamicpage}% \recall% } \newcommand{\inithighlight}[1]{\store{#1}} % -------------------------------------------------------------- % BUTTON MACROS % % setting button color \newcommand{\NormalButtonCol}{\color{ButtonTextColor}} \newcommand{\FirstButtonCol}{\ifnum\number\c@RealPage=1% \color{ButtonDisabledTextColor}\else\NormalButtonCol\fi} \newcommand{\LastButtonCol}{\ifnum\number\c@RealPage=\number\LastPage% \color{ButtonDisabledTextColor}\else\NormalButtonCol\fi} \newcommand{\AbstractButtonCol}{\ifnum\number\c@RealPage=\number\AbstractPage% \color{ButtonDisabledTextColor}\else\NormalButtonCol\fi} \newcommand{\ContentsButtonCol}{\ifnum\number\c@RealPage=\number\ContentsPage% \color{ButtonDisabledTextColor}\else\NormalButtonCol\fi} \newcommand{\IndexButtonCol}{\ifnum\number\c@RealPage=\number\IndexPage% \color{ButtonDisabledTextColor}\else\NormalButtonCol\fi} % % #1: box contents #2,#3 : upper/lower border colors % \fboxrule determines the thickness of the shadow \newcommand*{\ThreeDimBox}[3]{\bgroup% \fboxsep0pt% \color{#2}% \setbox\@tempboxa\hbox{\fbox{#1}}% \copy\@tempboxa% \@tempcnta=10% \@tempdimc=\fboxrule% %% increment \divide\@tempdimc by \@tempcnta% \color{#3}% \@tempdima=0pt% %% width \@tempdimb=\ht\@tempboxa% %% height \loop% \ifnum\@tempcnta>0% \advance\@tempcnta by -1% \advance\@tempdimb by -\@tempdimc% \advance\@tempdima by \@tempdimc% \hbox to 0pt{\hss\vrule \@width\@tempdima \@height\@tempdimb \@depth\dp\@tempboxa}% \repeat% \@tempcnta=10% \@tempdima=\wd\@tempboxa% %% width \@tempdimb=-\dp\@tempboxa% %% -depth -> height \loop% \ifnum\@tempcnta>0% \advance\@tempcnta by -1% \advance\@tempdimb by \@tempdimc% \advance\@tempdima by -\@tempdimc% \hbox to 0pt{\hss\vrule \@width\@tempdima \@height\@tempdimb \@depth\dp\@tempboxa}% \repeat% \egroup} % % [#1]: width (optional; default: \@ButtonWidth) #2: button text \newcommand{\AddButton}[2][\@ButtonWidth]{\bgroup% \fboxrule=\@ButtonShadowDepth% \ThreeDimBox{\colorbox{ButtonBackgroundColor}% {\hbox to #1{\hfil\NormalButtonCol\SetButtonTextStyle#2\hfil}}}% {ButtonUpperShadowColor}{ButtonShadowColor}% \egroup} % -------------------------------------------------------------- % PANEL MACROS % \newcommand*{\btl}{\ensuremath{\blacktriangleleft}} \newcommand*{\btr}{\ensuremath{\blacktriangleright}} % % The default panel consists of four parts: % [graphical logo] % [panel TOC] % navigation buttons % [some text] % parts in square brackets are optional. % % The panel contents are composed vertically to build a minipage % NOTE: background color is set later \SetPanelContents{% \begin{minipage}[t][\@Panel@DimY][c]{\@Panel@DimX}% \normalcolor% \normalfont% \PanelContents% \end{minipage}% } % \PanelContents can be modified by user. The user does not need % to know anything about the internal realization of \@Panel@ % or \Draw. The \PanelContents level is encapsulated. % NOTE: all \Draw commands should end with \vfill \newcommand{\PanelContents}{% \centering% \vspace*{5pt}\vfill% \DrawLogo% \DrawPanelTOC% \DrawNavigationPanel% \DrawPanelText% \vspace*{5pt}% } % \def\DrawLogo{\ifx\emptystring\@LogoFile\else% \setbox0=\hbox{\bgroup% \fboxrule=\@LogoShadowDepth% \ThreeDimBox{\includegraphics[width=\@LogoWidth]% {\@LogoFile}}{LogoUpperShadowColor}{LogoShadowColor}% \egroup}% \ifx\emptystring\@LogoURL\mbox{\box0}\else\href{\@LogoURL}{\box0}\fi% \par\vfill\fi% } % \def\DrawPanelTOC{% \if@paneltoc% \ifdim\@PanelTOCHeight>0cm% fixed size? \begin{minipage}[t][1.5cm][t]{\@Panel@DimX}% \@panel@toc% \end{minipage}% \else% \@panel@toc% \fi% \vfill% \else% \relax% \fi% } % \def\DrawPanelText{\ifx\emptystring\@paneltext\else% \parbox{.98\@Panel@DimX}{\centering \@paneltext}\par\vfill\fi} % % You can change \DrawNavigationPanel with \renewcommand. % Just copy this definition here and (un)comment and reorder % the items in the way you like. \newcommand{\DrawNavigationPanel}{ % \ShowPageInfo\par\vfill \GoToPageButton\par\vfill % \HomePageButton\par\vfill % \TitlePageButton\par\vfill % \AbstractPageButton\par\vfill % \IndexPageButton\par\vfill % \ContentsPageButton\par\vfill \FirstLastButton\par\vfill \PrevNextButton\par\vfill \BackForwardButton\par\vfill % \BackButton\par\vfill % \ForwardButton\par\vfill \FullScreenButton\par\vfill \SearchButton\par\vfill \CloseButton\par\vfill % \QuitButton\par\vfill } % % \ShowEmptyPageInfo needs exactly the same space as \ShowPageInfo. Use this % if you want to turn off page info for certain pages without changing the % positions of the other panel elements \def\ShowEmptyPageInfo{% \bgroup% \SetPageInfoStyle% \egroup% } \def\ShowPageInfo{% \bgroup% \SetPageInfoStyle% \textcolor{ButtonTextColor}{\@Panelpagename}\space% \textcolor{ButtonHighlightedTextColor}{\thepage}% \space\textcolor{ButtonTextColor}{\@Panelofname}\space% \if@chapterpanel% \textcolor{ButtonHighlightedTextColor}% {\csname LastPageC\arabic{chapter}String\endcsname}% \else% \textcolor{ButtonHighlightedTextColor}{\LastPageString}% \fi% \egroup% } \def\GoToPageButton{% \Acrobatmenu{GoToPage}{\AddButton% {\textcolor{ButtonTextColor}{\@Panelpagename}\space% \textcolor{ButtonHighlightedTextColor}{\thepage}\space% \textcolor{ButtonTextColor}{\@Panelofname}\space% \if@chapterpanel% \textcolor{ButtonHighlightedTextColor}% {\csname LastPageC\arabic{chapter}String\endcsname}% \else% \textcolor{ButtonHighlightedTextColor}{\LastPageString}% \fi% }}% } \def\HomePageButton{% \href{\@HomepageURL}{\AddButton{\@Panelhomepagename}} } \def\TitlePageButton{% \Acrobatmenu{FirstPage}{\AddButton{\FirstButtonCol\@Paneltitlepagename}}% } \def\AbstractPageButton{% \ifnum\number\AbstractPage=0% \PDFWIN@Warning{no abstract! abstract page button not possible}% \else% \hyperlink{abstract}{\AddButton{\AbstractButtonCol\@Panelabstractname}}% \fi% } \def\ContentsPageButton{% \ifnum\number\ContentsPage=0% \PDFWIN@Warning{no TOC found! contents page button not possible}% \else% \hyperlink{contents}{\AddButton{\ContentsButtonCol\@Panelcontentsname}}% \fi% } \def\IndexPageButton{% \ifnum\number\IndexPage=0% \PDFWIN@Warning{no index found! index button not possible}% \else% \hyperlink{index}{\AddButton{\ContentsButtonCol\@Panelindexname}}% \fi% } \def\FirstLastButton{% \Acrobatmenu{FirstPage}{\AddButton[\@SmallButtonWidth]% {\FirstButtonCol\scalebox{.8}[1.4]{\btl\btl}}}% \Acrobatmenu{LastPage}{\AddButton[\@SmallButtonWidth]% {\LastButtonCol\scalebox{.8}[1.4]{\btr\btr}}}% } \def\PrevNextButton{% \Acrobatmenu{PrevPage}{\AddButton[\@SmallButtonWidth]% {\FirstButtonCol\scalebox{.8}[1.4]{\btl}}}% \Acrobatmenu{NextPage}{\AddButton[\@SmallButtonWidth]% {\LastButtonCol\scalebox{.8}[1.4]{\btr}}}% } \def\BackForwardButton{% \Acrobatmenu{GoBack}{\AddButton[\@SmallButtonWidth]% {\raisebox{-2pt}{\scalebox{2}{$\hookleftarrow$}}}}% \Acrobatmenu{GoForward}{\AddButton[\@SmallButtonWidth]% {\raisebox{-2pt}{\scalebox{2}{$\hookrightarrow$}}}}% } \def\BackButton{% \Acrobatmenu{GoBack}{\AddButton{\@Panelgobackname}}% } \def\ForwardButton{% \Acrobatmenu{GoForward}{\AddButton{\@Panelgoforwardname}}% } \def\FullScreenButton{% \Acrobatmenu{FullScreen}{\AddButton{\@Panelfullscreenname}}% } \def\SearchButton{% \Acrobatmenu{Find}{\AddButton{\@Panelsearchname}}% } \def\CloseButton{% \Acrobatmenu{Close}{\AddButton{\@Panelclosename}}% } \def\QuitButton{% \Acrobatmenu{Quit}{\AddButton{\@Panelquitname}}% } % -------------------------------------------------------------- % PANEL TOC SECTION COUNTING % \def\sectionstring{section} \def\chapterstring{chapter} % \def\AddPanelTocEntry#1{% \stepcounter{ptocsection}% \hypertarget{ptoctarget\number\c@ptocsection}{}% \addtocontents{toc}{\protect\PTocEntry{#1}{ptoctarget\number\c@ptocsection}}% }% % \let\PTocEntry\@gobbletwo % -------------------------------------------------------------- % PANEL TOC MACROS % % for a panel TOC we have to modify: % * the input of the *.toc file % * the generation of the *.toc file % the last thing is necessary because usually the \tableofcontents % command does BOTH jobs: the display and the generation. And % therefore, it must only be called once in a normal LaTeX % document. % But for a panel TOC (i.e. a TOC an EVERY page) we have to separate % both tasks. % % The original \tableofcontents is (in article class): % \newcommand\tableofcontents{% % \section*{\contentsname\@mkboth{\MakeUppercase\contentsname}% % {\MakeUppercase\contentsname}}\@starttoc{toc}% % } % and \@starttoc does (latex base): % \def\@starttoc#1{% % \begingroup % \makeatletter % \@input{\jobname.#1}% % \if@filesw % \expandafter\newwrite\csname tf@#1\endcsname % \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax % \fi % \@nobreakfalse % \endgroup} % % We separate this in two parts: \tableofcontents is redefined to % only SHOW the toc and the WRITE command is given at the end of % the document. % NOTE: \makeatletter is necessary if e.g. the babel package is used: % this package writes a \select@language command via the *.aux file % of the last LaTeX run. Without \makeatletter, a "undefined command" % would result because '@' is no letter anymore. \renewcommand{\tableofcontents}{% \section*{\contentsname\@mkboth{\MakeUppercase\contentsname}% {\MakeUppercase\contentsname}}% \begingroup% \makeatletter% \@input{\jobname.toc}% \endgroup% } % \AtEndDocument{% \if@filesw% \clearpage% <-- otherwise the panel toc on the last page would be lost \newwrite\tf@toc% \immediate\openout\tf@toc\jobname.toc\relax% \fi } % On reading the *.toc file for the panel TOC, we must modify the % display (locally, of course!): % - disable \numberline which would produce a dotted line with % the page number at the end. % - count the sections in order to switch between normal and % highlighted display \def\@panel@toc{% \IfFileExists{\jobname.toc}{\vbox% \bgroup% \rightskip0pt plus 1fill% \hbadness=10000% \let\numberline\@gobble% \let\contentsline\PanelTOC@ContentsLine% \let\PTocEntry\PanelTOC@PTocEntry% \makeatletter% \@input{\jobname.toc}% \PDFWIN@Info{TOC file read}% \egroup}% % ELSE (file does not exist) {\PDFWIN@Warning{TOC file not available}}% } % \long\def\PanelTOC@ContentsLine#1#2#3#4{% \edef\temp{#1}% \ifx\temp\chapterstring% \stepcounter{TocChapterCount}% \fi% \ifnum\c@TocChapterCount=\c@chapter% \ifx\temp\sectionstring% \stepcounter{PanelTocLine}% \@tempcnta=\c@section% \advance\@tempcnta by \c@ptocsection% \ifnum\@tempcnta=\c@PanelTocLine% \global\@PanelTocHighlighttrue% \else% \global\@PanelTocHighlightfalse% \fi% \hyperlink{#4}{\makebox[\@Panel@DimX]% {\TOC@Button{.97\@Panel@DimX}{\truncate{.96\@Panel@DimX}{#2}}}}% \par% \fi% section entry detected \fi% in actual chapter } % \long\def\PanelTOC@PTocEntry#1#2{% \stepcounter{PanelTocLine}% \@tempcnta=\c@section% \advance\@tempcnta by \c@ptocsection% \ifnum\@tempcnta=\c@PanelTocLine% \global\@PanelTocHighlighttrue% \else% \global\@PanelTocHighlightfalse% \fi% \hyperlink{#2}{\makebox[\@Panel@DimX]% {\TOC@Button{.97\@Panel@DimX}{\truncate{.96\@Panel@DimX}{#1}}}}% \par% } % % displaying the panel TOC buttons \def\TOC@Button#1#2{\begingroup% \fboxsep0pt \fboxrule0pt% \if@PanelTocHighlight% \if@PTocHTransparent% {\hbox to #1{\color{PanelTocHighlightedTextColor}% \SetTocHTextStyle\hfill#2\hfill}}% \else% {\colorbox{PanelTocHighlightedBackgroundColor}{\hbox to #1% {\color{PanelTocHighlightedTextColor}\SetTocHTextStyle\hfill#2\hfill}}}% \fi% \else% \if@PTocNTransparent% {\hbox to #1{\color{PanelTocNormalTextColor}% \SetTocNTextStyle\hfill#2\hfill}}% \else% {\colorbox{PanelTocNormalBackgroundColor}{\hbox to #1% {\color{PanelTocNormalTextColor}\SetTocNTextStyle\hfill#2\hfill}}}% \fi% \fi% \endgroup} % -------------------------------------------------------------- % CHAPTER PANEL MACROS % % (!!!) einige Sachen noch fest verdrahtet! % \newcommand{\ChapterBox}{% \normalfont\normalsize% \bgroup% \fboxrule1pt% \@tempcnta=0% \@tempcntb=\number\ChapterNumber% \advance\@tempcntb by 1% \loop% \ifnum\@tempcnta<\@tempcntb% \ifnum\c@chapter=\@tempcnta% \ifnum\@tempcnta=0% \Acrobatmenu{FirstPage}{\Big@NoChapterButton{\@Paneltitlepagename}} \else \ifnum\@tempcnta=16% \hyperlink{index}{\Big@NoChapterButton{\@Panelindexname}} \else% \hyperlink{chapter.\number\@tempcnta}{\Big@ChapterButton{\chaptertitle}} \fi\fi% \else % chapter not selected \ifnum\@tempcnta=0% \Acrobatmenu{FirstPage}{\Small@NoChapterButton{T}} \else\ifnum\@tempcnta=16% \hyperlink{index}{\Small@NoChapterButton{I}} \else% \hyperlink{chapter.\number\@tempcnta}{\Small@ChapterButton} \fi\fi \fi % chapter selected? \advance\@tempcnta by 1% \repeat \egroup } % \newcommand{\Big@NoChapterButton}[1]{% \ThreeDimBox{\colorbox{ChapterPanelColor0a}{% \begin{minipage}[c][5mm]{22mm}% \centering\SetChapterTextStyle\color{ChapterPanelColor0b}#1% \end{minipage}% }}{ChapterPanelColor0c}{ChapterPanelColor0d}% } \newcommand{\Big@ChapterButton}[1]{% \ThreeDimBox{\colorbox{ChapterPanelColor1a}{% \begin{minipage}[c][5mm]{22mm}% \offinterlineskip\centering\SetChapterTextStyle\color{ChapterPanelColor1b}% \@chapapp\space\@Roman\@tempcnta\\ \SetChapterTitelStyle #1\\ % \end{minipage}% }}{ChapterPanelColor1c}{ChapterPanelColor1d}% } \newcommand{\Small@NoChapterButton}[1]{% \ThreeDimBox{\colorbox{ChapterPanelColor0a}{% \begin{minipage}[c][3mm]{3mm}% \centering\SetChapterTextStyle\color{ChapterPanelColor0b}#1% \end{minipage}% }}{ChapterPanelColor0c}{ChapterPanelColor0d}% } \newcommand{\Small@ChapterButton}{% \ThreeDimBox{\colorbox{ChapterPanelColor1a}{% \begin{minipage}[c][3mm]{3mm}% \centering\SetChapterTextStyle\color{ChapterPanelColor1b}% \@Roman\@tempcnta% \end{minipage}% }}{ChapterPanelColor1c}{ChapterPanelColor1d}% } % \if@chapterpanel\SetUserContents{\ChapterBox}\fi % -------------------------------------------------------------- % OVERLAY MACROS % % TeX assembles a page and calls \shipout{...} then. % Therefore, we have to interrupt \shipout \AtBeginDocument{% \let\org@shipout\shipout \let\shipout\my@shipout } % % now we have to steal shipout's argument in order % to modify it as we like \def\my@shipout{% \afterassignment\Test@OutBox% \global\setbox\@cclv= % } \newcommand{\Test@OutBox}{% \ifvoid\@cclv% \relax\aftergroup\My@Output% \else% \My@Output% \fi% } % -------------------------------------------------------------- % PAGE COMPOSITION % (original page is in box 255 [or \box\@cclv]) % \newcommand{\My@Output}{% \bgroup% \@tempdima=1in% \@tempcnta=\@tempdima% % => unit: scaled points \@tempcntb=\paperheight% \advance\@tempcntb by -\@tempdima% \global\setbox\@cclv\vbox{% \offinterlineskip% \vbox{% \let\protect\relax% \unitlength=1sp% \pictur@(0,0)(\@tempcnta,\@tempcntb)% {\bgroup% \setlength{\unitlength}{1pt}% % draw background \Draw@ScreenBackground% % draw other windows \Draw@PDFWinWindows% \egroup}% \endpicture% }% \vbox to 0mm{\hbox to 0mm{\box\@cclv\hss}\vss}% \vbox{% \let\protect\relax% \unitlength=1sp% \pictur@(0,0)(\@tempcnta,\@tempcntb)% {\bgroup% \setlength{\unitlength}{1pt} \Draw@TopTextWindow% \egroup}% \endpicture% }% }% \egroup% \addtocounter{RealPage}{1}% \org@shipout\box\@cclv% } % -------------------------------------------------------------- % WINDOW DRAWING % \def\Draw@PDFWinWindows{% \normalcolor% \normalfont% \@ShowWindow{Text}% \@ShowWindow{Panel}% \@ShowWindow{User}% } \def\Draw@ScreenBackground{% \ifcase\@Screen@Type% \or% \or% % 2 = colored \put(0,0){\bgroup\color{ScreenBackgroundColor}\vrule% height\paperheight depth0pt width\paperwidth\egroup}% \or% % 3 = graphics \put(0,0){\includegraphics[width=\paperwidth,height=\paperheight]% {\@Screen@Overlay}}% \or% % 4 = extended \put(0,0){\bgroup\color{ScreenBackgroundColor}\vrule% height\paperheight depth0pt width\paperwidth\egroup}% \put(0,0){\includegraphics[width=\paperwidth,height=\paperheight]% {\@Screen@Overlay}}% \or% % 5 = wallpaper \bgroup% \setbox0=\hbox{\includegraphics{\@Screen@Overlay}}% \setlength{\unitlength}{1sp}% \@tempcnta=\paperwidth% \count255=\wd0% \divide\@tempcnta by \count255% \setbox2=\hbox{\count255=-1% \loop\ifnum\count255<\@tempcnta\advance\count255 by 1\copy0\repeat\hss} \@tempcntb=\paperheight% \count255=\ht0% \divide\@tempcntb by \count255% \advance\@tempcntb by 1% \multiput(0,0)(0,\count255){\@tempcntb}{\copy2}% \egroup% \fi% } % % show window procedure \def\@ShowWindow#1{% \expandafter\Win@DimX\csname @#1@DimX\endcsname% \expandafter\Win@DimY\csname @#1@DimY\endcsname% \expandafter\Win@LLX\csname @#1@LLX\endcsname% \expandafter\Win@LLY\csname @#1@LLY\endcsname% \expandafter\Win@BT\csname @#1@BorderThickness\endcsname% \expandafter\Win@BR\csname @#1@BorderArcRadius\endcsname% \ifcase\csname @#1@WinType\endcsname% % 0 = disabled \relax% \or% % 1 = transparent => frame+contents \ShowWindow@Frame{#1}% \ShowWindow@Contents{#1}% \or% % 2 = colored => frame+box+contents \ShowWindow@FrameBox{#1}% \ShowWindow@Contents{#1}% \or% % 3 = graphics => graphics+contents \ShowWindow@Frame{#1}% \ShowWindow@Graphics{#1}% \ShowWindow@Contents{#1}% \or% % 4 = extended => frame+box+graphics+contents \ShowWindow@FrameBox{#1}% \ShowWindow@Graphics{#1}% \ShowWindow@Contents{#1}% \fi% } % \def\ShowWindow@Frame#1{% \bgroup \color{#1BorderColor}% \@tempdimb=\Win@DimY \advance\@tempdimb by \Win@BT% \put(\strip@pt\Win@LLX,\strip@pt\Win@LLY)% {\vrule width\Win@DimX height\@tempdimb depth-\Win@DimY}% \put(\strip@pt\Win@LLX,\strip@pt\Win@LLY)% {\vrule width\Win@DimX height0pt depth\Win@BT}% \@tempdima=\Win@LLX \advance\@tempdima by -\Win@BT% \@tempdimc=\Win@LLX \advance\@tempdimc by \Win@DimX% \put(\strip@pt\@tempdima,\strip@pt\Win@LLY)% {\vrule width\Win@BT height\@tempdimb depth\Win@BT}% \put(\strip@pt\@tempdimc,\strip@pt\Win@LLY)% {\vrule width\Win@BT height\@tempdimb depth\Win@BT}% \egroup } \def\ShowWindow@FrameBox#1{% \ifdim\Win@BR=0pt% \ShowWindow@Frame{#1}% \put(\strip@pt\Win@LLX,\strip@pt\Win@LLY)% {\color{#1BackgroundColor}\vrule height\Win@DimY% depth0pt width\Win@DimX}% \else \@tempdima=\Win@LLX \advance\@tempdima by -\Win@BT% \@tempdimb=\Win@LLY \advance\@tempdimb by \Win@BR% \@tempdimc=\Win@DimX \advance\@tempdimc by -2.0\Win@BR% % bottom line: corners and bottom border \dimen0\Win@BR \advance\dimen0\Win@BT % big radius \put(\strip@pt\@tempdima,\strip@pt\@tempdimb){% \color{#1BorderColor}% \Left@Corner{\@height}{\@depth}% \vrule width\@tempdimc height0pt depth\dimen0% \Right@Corner{\@height}{\@depth}% }% \dimen0\Win@BR \advance\dimen0 by -0.3pt% \put(\strip@pt\Win@LLX,\strip@pt\@tempdimb){% \color{#1BackgroundColor}% \Left@Corner{\@height}{\@depth}% \vrule width\@tempdimc height0pt depth\dimen0% \Right@Corner{\@height}{\@depth}% }% % top line: corners and top border \@tempdimb=\Win@LLY \advance\@tempdimb by -\Win@BR% \advance\@tempdimb by \Win@DimY% \dimen0\Win@BR \advance\dimen0\Win@BT % big radius \put(\strip@pt\@tempdima,\strip@pt\@tempdimb){% \color{#1BorderColor}% \Left@Corner{\@depth}{\@height}% \vrule width\@tempdimc height\dimen0 depth0pt% \Right@Corner{\@depth}{\@height}% }% \dimen0\Win@BR% \dimen0\Win@BR \advance\dimen0 by -0.3pt% \put(\strip@pt\Win@LLX,\strip@pt\@tempdimb){% \color{#1BackgroundColor}% \Left@Corner{\@depth}{\@height}% \vrule width\@tempdimc height\dimen0 depth0pt% \Right@Corner{\@depth}{\@height}% }% % middle line: side borders and center \@tempdimb=\Win@LLY \advance\@tempdimb by .93\Win@BR% \@tempdimc=\Win@DimY \advance\@tempdimc by -1.86\Win@BR% \put(\strip@pt\@tempdima,\strip@pt\@tempdimb){% \color{#1BorderColor}% \vrule width\Win@BT height\@tempdimc depth0pt% \color{#1BackgroundColor}% \vrule width\Win@DimX height\@tempdimc depth0pt% \color{#1BorderColor}% \vrule width\Win@BT height\@tempdimc depth0pt% }% \fi% } \def\ShowWindow@Graphics#1{% \edef\tempFileName{\csname @#1@Overlay\endcsname}% \put(\strip@pt\Win@LLX,\strip@pt\Win@LLY)% {\includegraphics[width=\Win@DimX,height=\Win@DimY]{\tempFileName}}% } \def\ShowWindow@Contents#1{% \put(\strip@pt\Win@LLX,\strip@pt\Win@LLY)% {\makebox(\strip@pt\Win@DimX,\strip@pt\Win@DimY)% {\csname @#1@\endcsname}}% } % \def\Draw@TopTextWindow{% \put(\strip@pt\@Text@LLX,\strip@pt\@Text@LLY)% {\makebox(\strip@pt\@Text@DimX,\strip@pt\@Text@DimY)% {\Top@Text@}}% } % -------------------------------------------------------------- % CORNER DRAWING: drawing a few black rectangles, because % (La)TeX's graphical features are very limited... % % NOTE: overlap of bars is necessary to avoid white % lines due to alialising effects. % The straight forward method, namely putting together simple % adjacent bars, does not work properly. % NOTE: \p@ means 0pt. \@width, \@height, \@depth are macros for % the strings width, height, depth. 120 calls save enough memory % space to justify that in this section. \def\Right@Corner#1#2{ \vrule \@width.070\dimen0 #1 \p@ #2 1.0\dimen0 \kern-.070\dimen0% \vrule \@width.170\dimen0 #1 \p@ #2 .99\dimen0 \kern-.170\dimen0% \vrule \@width.221\dimen0 #1 \p@ #2 .98\dimen0 \kern-.221\dimen0% \vrule \@width.262\dimen0 #1 \p@ #2 .97\dimen0 \kern-.262\dimen0% \vrule \@width.296\dimen0 #1 \p@ #2 .96\dimen0 \kern-.296\dimen0% \vrule \@width.327\dimen0 #1 \p@ #2 .95\dimen0 \kern-.327\dimen0% \vrule \@width.354\dimen0 #1 \p@ #2 .94\dimen0 \kern-.354\dimen0% \vrule \@width.380\dimen0 #1 \p@ #2 .93\dimen0 \kern-.380\dimen0% \vrule \@width.403\dimen0 #1 \p@ #2 .92\dimen0 \kern-.403\dimen0% \vrule \@width.425\dimen0 #1 \p@ #2 .91\dimen0 \kern-.425\dimen0% \vrule \@width.446\dimen0 #1 \p@ #2 .90\dimen0 \kern-.446\dimen0% \vrule \@width.465\dimen0 #1 \p@ #2 .89\dimen0 \kern-.465\dimen0% \vrule \@width.484\dimen0 #1 \p@ #2 .88\dimen0 \kern-.484\dimen0% \vrule \@width.502\dimen0 #1 \p@ #2 .87\dimen0 \kern-.502\dimen0% \vrule \@width.519\dimen0 #1 \p@ #2 .86\dimen0 \kern-.519\dimen0% \vrule \@width.535\dimen0 #1 \p@ #2 .85\dimen0 \kern-.535\dimen0% \vrule \@width.550\dimen0 #1 \p@ #2 .84\dimen0 \kern-.550\dimen0% \vrule \@width.565\dimen0 #1 \p@ #2 .83\dimen0 \kern-.565\dimen0% \vrule \@width.579\dimen0 #1 \p@ #2 .82\dimen0 \kern-.579\dimen0% \vrule \@width.593\dimen0 #1 \p@ #2 .81\dimen0 \kern-.593\dimen0% \vrule \@width.606\dimen0 #1 \p@ #2 .80\dimen0 \kern-.606\dimen0% \vrule \@width.619\dimen0 #1 \p@ #2 .79\dimen0 \kern-.619\dimen0% \vrule \@width.632\dimen0 #1 \p@ #2 .78\dimen0 \kern-.632\dimen0% \vrule \@width.644\dimen0 #1 \p@ #2 .77\dimen0 \kern-.644\dimen0% \vrule \@width.656\dimen0 #1 \p@ #2 .76\dimen0 \kern-.656\dimen0% \vrule \@width.668\dimen0 #1 \p@ #2 .75\dimen0 \kern-.668\dimen0% \vrule \@width.679\dimen0 #1 \p@ #2 .74\dimen0 \kern-.679\dimen0% \vrule \@width.689\dimen0 #1 \p@ #2 .73\dimen0 \kern-.689\dimen0% \vrule \@width.699\dimen0 #1 \p@ #2 .72\dimen0 \kern-.699\dimen0% \vrule \@width.709\dimen0 #1 \p@ #2 .71\dimen0 \kern-.709\dimen0% % \vrule #2 .070\dimen0 #1 \p@ \@width1.0\dimen0 \kern-1.0\dimen0% \vrule #2 .170\dimen0 #1 \p@ \@width.99\dimen0 \kern-.99\dimen0% \vrule #2 .221\dimen0 #1 \p@ \@width.98\dimen0 \kern-.98\dimen0% \vrule #2 .262\dimen0 #1 \p@ \@width.97\dimen0 \kern-.97\dimen0% \vrule #2 .296\dimen0 #1 \p@ \@width.96\dimen0 \kern-.96\dimen0% \vrule #2 .327\dimen0 #1 \p@ \@width.95\dimen0 \kern-.95\dimen0% \vrule #2 .354\dimen0 #1 \p@ \@width.94\dimen0 \kern-.94\dimen0% \vrule #2 .380\dimen0 #1 \p@ \@width.93\dimen0 \kern-.93\dimen0% \vrule #2 .403\dimen0 #1 \p@ \@width.92\dimen0 \kern-.92\dimen0% \vrule #2 .425\dimen0 #1 \p@ \@width.91\dimen0 \kern-.91\dimen0% \vrule #2 .446\dimen0 #1 \p@ \@width.90\dimen0 \kern-.90\dimen0% \vrule #2 .465\dimen0 #1 \p@ \@width.89\dimen0 \kern-.89\dimen0% \vrule #2 .484\dimen0 #1 \p@ \@width.88\dimen0 \kern-.88\dimen0% \vrule #2 .502\dimen0 #1 \p@ \@width.87\dimen0 \kern-.87\dimen0% \vrule #2 .519\dimen0 #1 \p@ \@width.86\dimen0 \kern-.86\dimen0% \vrule #2 .535\dimen0 #1 \p@ \@width.85\dimen0 \kern-.85\dimen0% \vrule #2 .550\dimen0 #1 \p@ \@width.84\dimen0 \kern-.84\dimen0% \vrule #2 .565\dimen0 #1 \p@ \@width.83\dimen0 \kern-.83\dimen0% \vrule #2 .579\dimen0 #1 \p@ \@width.82\dimen0 \kern-.82\dimen0% \vrule #2 .593\dimen0 #1 \p@ \@width.81\dimen0 \kern-.81\dimen0% \vrule #2 .606\dimen0 #1 \p@ \@width.80\dimen0 \kern-.80\dimen0% \vrule #2 .619\dimen0 #1 \p@ \@width.79\dimen0 \kern-.79\dimen0% \vrule #2 .632\dimen0 #1 \p@ \@width.78\dimen0 \kern-.78\dimen0% \vrule #2 .644\dimen0 #1 \p@ \@width.77\dimen0 \kern-.77\dimen0% \vrule #2 .656\dimen0 #1 \p@ \@width.76\dimen0 \kern-.76\dimen0% \vrule #2 .668\dimen0 #1 \p@ \@width.75\dimen0 \kern-.75\dimen0% \vrule #2 .679\dimen0 #1 \p@ \@width.74\dimen0 \kern-.74\dimen0% \vrule #2 .689\dimen0 #1 \p@ \@width.73\dimen0 \kern-.73\dimen0% \vrule #2 .699\dimen0 #1 \p@ \@width.72\dimen0 \kern-.72\dimen0% \vrule #2 .709\dimen0 #1 \p@ \@width.71\dimen0 \kern-.71\dimen0% } \def\Left@Corner#1#2{ \vrule #2 .070\dimen0 #1 \p@ \@width1.0\dimen0 \kern-.99\dimen0% \vrule #2 .170\dimen0 #1 \p@ \@width.99\dimen0 \kern-.98\dimen0% \vrule #2 .221\dimen0 #1 \p@ \@width.98\dimen0 \kern-.97\dimen0% \vrule #2 .262\dimen0 #1 \p@ \@width.97\dimen0 \kern-.96\dimen0% \vrule #2 .296\dimen0 #1 \p@ \@width.96\dimen0 \kern-.95\dimen0% \vrule #2 .327\dimen0 #1 \p@ \@width.95\dimen0 \kern-.94\dimen0% \vrule #2 .354\dimen0 #1 \p@ \@width.94\dimen0 \kern-.93\dimen0% \vrule #2 .380\dimen0 #1 \p@ \@width.93\dimen0 \kern-.92\dimen0% \vrule #2 .403\dimen0 #1 \p@ \@width.92\dimen0 \kern-.91\dimen0% \vrule #2 .425\dimen0 #1 \p@ \@width.91\dimen0 \kern-.90\dimen0% \vrule #2 .446\dimen0 #1 \p@ \@width.90\dimen0 \kern-.89\dimen0% \vrule #2 .465\dimen0 #1 \p@ \@width.89\dimen0 \kern-.88\dimen0% \vrule #2 .484\dimen0 #1 \p@ \@width.88\dimen0 \kern-.87\dimen0% \vrule #2 .502\dimen0 #1 \p@ \@width.87\dimen0 \kern-.86\dimen0% \vrule #2 .519\dimen0 #1 \p@ \@width.86\dimen0 \kern-.85\dimen0% \vrule #2 .535\dimen0 #1 \p@ \@width.85\dimen0 \kern-.84\dimen0% \vrule #2 .550\dimen0 #1 \p@ \@width.84\dimen0 \kern-.83\dimen0% \vrule #2 .565\dimen0 #1 \p@ \@width.83\dimen0 \kern-.82\dimen0% \vrule #2 .579\dimen0 #1 \p@ \@width.82\dimen0 \kern-.81\dimen0% \vrule #2 .593\dimen0 #1 \p@ \@width.81\dimen0 \kern-.80\dimen0% \vrule #2 .606\dimen0 #1 \p@ \@width.80\dimen0 \kern-.79\dimen0% \vrule #2 .619\dimen0 #1 \p@ \@width.79\dimen0 \kern-.78\dimen0% \vrule #2 .632\dimen0 #1 \p@ \@width.78\dimen0 \kern-.77\dimen0% \vrule #2 .644\dimen0 #1 \p@ \@width.77\dimen0 \kern-.76\dimen0% \vrule #2 .656\dimen0 #1 \p@ \@width.76\dimen0 \kern-.75\dimen0% \vrule #2 .668\dimen0 #1 \p@ \@width.75\dimen0 \kern-.74\dimen0% \vrule #2 .679\dimen0 #1 \p@ \@width.74\dimen0 \kern-.73\dimen0% \vrule #2 .689\dimen0 #1 \p@ \@width.73\dimen0 \kern-.72\dimen0% \vrule #2 .699\dimen0 #1 \p@ \@width.72\dimen0 \kern-.71\dimen0% \vrule #2 .709\dimen0 #1 \p@ \@width.71\dimen0 \kern-.709\dimen0% % \vrule \@width.709\dimen0 #1 \p@ #2 .71\dimen0 \kern-.699\dimen0% \vrule \@width.699\dimen0 #1 \p@ #2 .72\dimen0 \kern-.689\dimen0% \vrule \@width.689\dimen0 #1 \p@ #2 .73\dimen0 \kern-.679\dimen0% \vrule \@width.679\dimen0 #1 \p@ #2 .74\dimen0 \kern-.668\dimen0% \vrule \@width.668\dimen0 #1 \p@ #2 .75\dimen0 \kern-.656\dimen0% \vrule \@width.656\dimen0 #1 \p@ #2 .76\dimen0 \kern-.644\dimen0% \vrule \@width.644\dimen0 #1 \p@ #2 .77\dimen0 \kern-.632\dimen0% \vrule \@width.632\dimen0 #1 \p@ #2 .78\dimen0 \kern-.619\dimen0% \vrule \@width.619\dimen0 #1 \p@ #2 .79\dimen0 \kern-.606\dimen0% \vrule \@width.606\dimen0 #1 \p@ #2 .80\dimen0 \kern-.593\dimen0% \vrule \@width.593\dimen0 #1 \p@ #2 .81\dimen0 \kern-.579\dimen0% \vrule \@width.579\dimen0 #1 \p@ #2 .82\dimen0 \kern-.565\dimen0% \vrule \@width.565\dimen0 #1 \p@ #2 .83\dimen0 \kern-.550\dimen0% \vrule \@width.550\dimen0 #1 \p@ #2 .84\dimen0 \kern-.535\dimen0% \vrule \@width.535\dimen0 #1 \p@ #2 .85\dimen0 \kern-.519\dimen0% \vrule \@width.519\dimen0 #1 \p@ #2 .86\dimen0 \kern-.502\dimen0% \vrule \@width.502\dimen0 #1 \p@ #2 .87\dimen0 \kern-.484\dimen0% \vrule \@width.484\dimen0 #1 \p@ #2 .88\dimen0 \kern-.465\dimen0% \vrule \@width.465\dimen0 #1 \p@ #2 .89\dimen0 \kern-.446\dimen0% \vrule \@width.446\dimen0 #1 \p@ #2 .90\dimen0 \kern-.425\dimen0% \vrule \@width.425\dimen0 #1 \p@ #2 .91\dimen0 \kern-.403\dimen0% \vrule \@width.403\dimen0 #1 \p@ #2 .92\dimen0 \kern-.380\dimen0% \vrule \@width.380\dimen0 #1 \p@ #2 .93\dimen0 \kern-.354\dimen0% \vrule \@width.354\dimen0 #1 \p@ #2 .94\dimen0 \kern-.327\dimen0% \vrule \@width.327\dimen0 #1 \p@ #2 .95\dimen0 \kern-.296\dimen0% \vrule \@width.296\dimen0 #1 \p@ #2 .96\dimen0 \kern-.262\dimen0% \vrule \@width.262\dimen0 #1 \p@ #2 .97\dimen0 \kern-.221\dimen0% \vrule \@width.221\dimen0 #1 \p@ #2 .98\dimen0 \kern-.170\dimen0% \vrule \@width.170\dimen0 #1 \p@ #2 .99\dimen0 \kern-.070\dimen0% \vrule \@width.070\dimen0 #1 \p@ #2 1.0\dimen0% } %-------------- Verbatim fix ------------- % This code is provided by DP Story \newdimen\@PDFspaceleft \def\@PDFpagespace{% \ifdim\pagetotal=0pt \@PDFspaceleft=\vsize \else \@PDFspaceleft=\pagegoal \advance\@PDFspaceleft by-\pagetotal \fi} \let\@PDFverbatim\verbatim \let\@PDFendverbatim\endverbatim \AtBeginDocument{% \def\verbatim{\begingroup\setbox0=\vbox\bgroup \hsize=\linewidth% \@PDFverbatim\verbatim@font} \def\endverbatim{\@PDFendverbatim\egroup \@PDFpagespace\ifdim\@PDFspaceleft>\ht0 \else \setbox1=\vsplit0 to\@PDFspaceleft \verbatim@font\unvbox1 \penalty\@M \fi \ifvoid0\relax\else\verbatim@font\unvbox0\fi \endgroup} \def\@verb{\@vobeyspaces \frenchspacing\@sverb} } % end of DPS' code %-------------- end of Verbatim fix ------------- % -------------------------------------------------------------- % FINAL STUFF: \AtEndDocument settings and config file input % \AtEndDocument{% \clearpage% \addtocounter{page}{-1}% \addtocounter{RealPage}{-1}% \immediate\write\@auxout{\string\gdef\string\LastPageString{\thepage}}% \immediate\write\@auxout{\string\expandafter\string\gdef% \string\csname\space LastPageC\arabic{chapter}String\string\endcsname{\thepage}}% \immediate\write\@auxout{\string\gdef\string\LastPage{\arabic{RealPage}}}% \immediate\write\@auxout{\string\gdef\string\ChapterNumber{\arabic{chapter}}}% \addtocounter{page}{1}% } \if@nocfg% \relax% \else% \IfFileExists{pdfwin.cfg}{\input pdfwin.cfg}% {\PDFWIN@Warning{pdfwin.cfg does not exist!}}% \fi \endinput %%%%%%%%%%%%%%%%%%% EOF