[BACK]Return to pdfmacs.tex CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari-2.2 / doc

Annotation of OpenXM_contrib/pari-2.2/doc/pdfmacs.tex, Revision 1.2

1.2     ! noro        1: % $Id: pdfmacs.tex,v 1.5 2002/02/20 17:48:48 karim Exp $
1.1       noro        2: % Copyright (c) 2000  The PARI Group
                      3: %
                      4: % This file is part of the PARI/GP documentation
                      5: %
                      6: % Permission is granted to copy, distribute and/or modify this document
                      7: % under the terms of the GNU Free Documentation License
                      8:
                      9: %% Modifications to parimacro.tex to be run through pdftex instead of
                     10: %% tex. Code now includes some pdf-specific code for hyperlinks.
                     11: %%
                     12: %% Cliff Bergman (cbergman@iastate.edu) Jan. 2000.
                     13: %%
                     14: %
                     15: %% Set the document info
                     16: \pdfoutput = 1
                     17: \pdfinfo {
                     18:   /Title    (\TITLE)
                     19:   /Creator  (pdfTeX)
                     20:   /Producer (PARI, pari@math.u-bordeaux.fr)
                     21:   /Author   (C. Batut, K. Belabas, D. Bernardi, H. Cohen, M. Olivier)
                     22:   /Subject  (Number Theory) }
                     23: %
                     24: \pdfcatalog {/PageMode /UseOutlines}
                     25: %
                     26: \catcode`\@=11
                     27: %% Now we redefine several of the macros so as to provide hyperlinks.
                     28: %
                     29: %  Colors
                     30: %
                     31: %% We use TeX's grouping mechanism to make \currentcolor into a  stack.
                     32: %
                     33:  \def\pushcolor#1{\bgroup\pdfsetcolor{#1}}
                     34:  \def\popcolor{\egroup\pdfsetcolor{\currentcolor}}
                     35:  \def\pdfsetcolor#1{\let\currentcolor=#1\pdfliteral{#1 k}}
                     36: % %
                     37: % %  Maybe somebody with a better eye would like to pick nicer ones. See
                     38: % %  the file plain/misc/pdfcolor.tex in the pdftex distribution.
                     39: % %
                     40:  \def\Red{0 1 1 0}
                     41:  \def\Blue{1 1 0 0}
                     42:  \def\Green{1 0 1 0}
                     43:  \def\Black{0 0 0 1}
                     44:  \def\textcolor{\Black}
                     45:  \def\linkcolor{\Red}
                     46:  \def\emacscolor{\Green}
                     47:  \def\unixcolor{\Blue}
                     48:  \let\currentcolor=\textcolor
                     49:  \pdfsetcolor{\textcolor}
                     50: %
                     51: %% Bookmarks.  These turned out to be a pain.  In order to get nested
                     52: %% bookmarks, Acrobat requires that each entry declare the number of
                     53: %% subentries in advance.  We do this by counting the subentries (the
                     54: %% main entries are the chapters, subentries are the sections) during
                     55: %% the first pass and writing them to the aux file as a macro. Then the
                     56: %% bookmark entry is created on the second pass.
                     57:
                     58: % These keep track of the number of sections in each chapter and appendix.
                     59: \newtoks\numsectok    \numsectok={\or}
                     60: \newtoks\numsecapptok \numsecapptok={\or}
                     61:
                     62: % Append #1 to the token list given in #2, separated by \or.  #1 is
                     63: %    expanded first (needed by \numsecs)
                     64: \def\append#1#2{\toks0=\expandafter{#1 \or }%
                     65:   \edef\act{\global\noexpand#2={\the#2 \the\toks0}}\act}
                     66:
                     67: \def\writesecnumbers{
                     68: % Append the number of sections to the last appendix to the toks reg.
                     69:   \append{\the\secno}\numsecapptok
                     70: % Write the definitions of (\numsecs and \numsecapp) to the aux file.
                     71:   \write\aux{
                     72:     \def\string\numsecs\string##1{%
                     73:       \string\ifcase \string##1 \the\numsectok 0 \string\else 0 \string\fi}
                     74:     \def\string\numsecsapp\string##1{%
                     75:       \string\ifcase \string##1 \the\numsecapptok 0 \string\else 0 \string\fi}}}
                     76: %
                     77: % Hyperlink destinations will simply be of the form: pdf@nnn, where nnn
                     78: % is obtained from a new counter.
                     79: \newcount\pdfdestcntr \pdfdestcntr=0
                     80: % \putdest creates a pdf destination. Currently, the destination view
                     81: % is 'xyz' which means no change from the existing zoom factor.
                     82: \def\putdest{\global\advance\pdfdestcntr by 1%
                     83:  \pdfdest name {pdf@\number\pdfdestcntr} xyz }
                     84:
                     85: %% It turns out that I also need a different counter for these
                     86: %% destinations since they are only computed on the second pass.
                     87: \newcount\pdfchapcntr \pdfchapcntr=0
                     88: \def\putchapdest{\global\advance\pdfchapcntr by1%
                     89:  \pdfdest name {pdfchap@\number\pdfchapcntr} fitbh }
                     90:
                     91: \def\chapter#1#2\par{
                     92:   \ifnum\chapno=0 \else \append{\the\secno}\numsectok \fi
                     93:   \secno=0\global\advance\chapno by 1
                     94:   \title{Chapter \number\chapno:}{#1}#2\noindent\ignorespaces
                     95:   \ifsecondpass
                     96:    \pdfoutline goto name {pdfchap@\number\pdfchapcntr} count -\numsecs\chapno
                     97:      {\number\chapno\ #1}
                     98:    \fi
                     99: }
                    100: \def\appendix#1{
                    101:   \ifnum\appno=0 \append{\the\secno}\numsectok
                    102:    \else \append{\the\secno}\numsecapptok \fi
                    103:   \chapno=0
                    104:   \global\secno=0\global\advance\appno by 1
                    105:   \def\applet{\ifcase\appno\or A\or B\or C\or D\or E\or F\or G\fi}
                    106:   \title{Appendix \applet:}{#1}\noindent\ignorespaces
                    107:   \ifsecondpass
                    108:    \pdfoutline goto name {pdfchap@\number\pdfchapcntr}
                    109:     count -\numsecsapp\appno {\applet\ #1}
                    110:    \fi}
                    111: \def\section#1{
                    112:   \subsecno=0\global\advance\secno by 1
                    113:   \gdef\currentlabel{\number\secno}
                    114:   \sectitle{\maketitle{#1}}
                    115:   \ifsecondpass
                    116:    \pdfoutline goto name {pdfchap@\number\pdfchapcntr}
                    117:     {\number\chapno.\number\secno\ #1}
                    118:   \fi
                    119: }
                    120: %
                    121: %% FIXME: should use \[push|pop]color and not use explicitly \textcolor
                    122: %% (cf install() in Chapter 3)
                    123: \def\@restore{\endgraf \global\let\par\endgraf \pdfsetcolor{\textcolor}}
                    124: \def\unix{\global\let\par\@restore\pdfsetcolor{\unixcolor}\annotepar{UNIX}}
                    125: \def\emacs{\global\let\par\@restore\pdfsetcolor{\emacscolor}\annotepar{EMACS}}
                    126:
                    127: %% labels and symbolic cross-refs.  For this we use the parameter to
                    128: %% build the symbolic pdf destination.
1.2     ! noro      129: \@ifundef{pdfstartlink}{\global\let\pdfstartlink\pdfannotlink}{}
1.1       noro      130: \def\label#1{\immediate\write\aux{\string
                    131:    \newlabel{#1}{{\the\chapno}{\currentlabel}}}
                    132:    \pdfdest name {pdf@lab#1} xyz}
                    133: \def\ref#1{\@ifundef{r@#1}
                    134:   {{\bf ??}\@errundef{#1}}
                    135:   {\edef\@temp{\csname r@#1\endcsname}%
                    136:     \def\lbl{\@ref}\def\chp{\@cref}%
                    137:     \pdfjumpref{#1}{\ifx\chp{\the\chapno}\lbl\else\chp.\lbl\fi}}}
1.2     ! noro      138: \def\pdfjumpref#1#2{\pdfstartlink attr {/Border [ 0 0 0 ] /H /O}
1.1       noro      139:   goto name {pdf@lab#1}\pushcolor{\linkcolor}#2\popcolor\pdfendlink}
                    140:
                    141: \catcode`\@=12

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>