From b9f872020f9b231de20afe30533a2c8b8c8dff29 Mon Sep 17 00:00:00 2001 From: Manuel Pégourié-Gonnard Date: Wed, 3 Aug 2011 13:02:30 +0000 Subject: hypdvips 2011/06/07 v2.03 git-svn-id: svn://tug.org/texlive/trunk@23377 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/hypdvips/README | 5 +- Master/texmf-dist/doc/latex/hypdvips/hypdvips.pdf | Bin 956869 -> 1026306 bytes Master/texmf-dist/tex/latex/hypdvips/hypdvips.sty | 300 ++++++++++++++-------- 3 files changed, 203 insertions(+), 102 deletions(-) diff --git a/Master/texmf-dist/doc/latex/hypdvips/README b/Master/texmf-dist/doc/latex/hypdvips/README index e81e0f781b0..36d2e62b954 100644 --- a/Master/texmf-dist/doc/latex/hypdvips/README +++ b/Master/texmf-dist/doc/latex/hypdvips/README @@ -1,4 +1,4 @@ -LaTeX package hypdvips 2010/09/08 v2.02 +LaTeX package hypdvips 2011/06/07 v2.03 The hypdvips package is a collection of add-ons and fixes for problems when using hyperref with dvips. It adds support for breaking links, hyperlinked @@ -8,6 +8,9 @@ allows an enhanced back-referencing system. History: +v2.03 - fixes broken links within cleveref references + - breaks up links between pages and columns into individual links + v2.02 - improves compatibility with package caption (thanks to Benedikt Leinss for the bug-report) - fixes the \bmstyle command to work with chapters (thanks to Benedikt diff --git a/Master/texmf-dist/doc/latex/hypdvips/hypdvips.pdf b/Master/texmf-dist/doc/latex/hypdvips/hypdvips.pdf index 2fa9b4f2e0e..303dd30a1e4 100644 Binary files a/Master/texmf-dist/doc/latex/hypdvips/hypdvips.pdf and b/Master/texmf-dist/doc/latex/hypdvips/hypdvips.pdf differ diff --git a/Master/texmf-dist/tex/latex/hypdvips/hypdvips.sty b/Master/texmf-dist/tex/latex/hypdvips/hypdvips.sty index 8268b54b4d8..639b103d259 100644 --- a/Master/texmf-dist/tex/latex/hypdvips/hypdvips.sty +++ b/Master/texmf-dist/tex/latex/hypdvips/hypdvips.sty @@ -1,10 +1,10 @@ %% %% This is file `hypdvips.sty', -%% Copyright 2008-2010 Raimund Niedrist +%% Copyright 2008-2011 Raimund Niedrist %% %% With portions written by Donald Arsenau, David Carlisle, Steven %% Douglas Cochran, Toby Cubitt, Geoffrey Keating, Heiko Oberdiek, -%% Sebastian Rahtz, and the Latex3 Project 1986-2010 +%% Sebastian Rahtz, and the Latex3 Project 1986-2011 %% %% This work may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3 of this @@ -22,7 +22,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{hypdvips} - [2010/09/08 v2.02 + [2011/06/07 v2.03 Hyperref extensions for use with dvips] \@ifpackageloaded{hyperref} { @@ -98,7 +98,7 @@ \newlength{\pp@linewidth} \newcommand{\pp@drawcurrentpoint}[1]{% \setlength{\pp@linewidth}{#1}% - \pp@SDictPS{1 0 0 \strip@pt\pp@linewidth\space pp.BPToPDF pp.drawcurrentpoint}% + \pp@SDictPS{1 0 0 \strip@pt\pp@linewidth\space pp.ptToBP pp.drawcurrentpoint}% } \providecommand{\point}{\pp@drawcurrentpoint{1mm}} \providecommand{\currentpoint}[1]{\pp@drawcurrentpoint{#1}}% arguments: {linewidth} @@ -182,6 +182,7 @@ } \pp@TeXcatcodes \def\pp@language@english{% + \def\@pdflang{en} \pp@pdfstrings@english \def\pp@loastring{List of File Attachments} \def\pp@optionsstring{\\\tiny\textbf{Options: }\sc} @@ -230,6 +231,7 @@ \pp@languagesettrue } \def\pp@language@german{% + \def\@pdflang{de} \pp@pdfstrings@german \def\pp@loastring{Dateianlagenverzeichnis} \def\pp@optionsstring{\\\tiny\textbf{Optionen: }\sc} @@ -429,7 +431,7 @@ \pp@PScatcodes \pp@HeaderPS{ true setglobal - /pp.globaldict 5 dict def + /pp.globaldict 8 dict def pp.globaldict /pp.gsborderwarning true put pp.globaldict /pp.starttime realtime put pp.globaldict /pp.warncount 0 put @@ -1000,8 +1002,10 @@ repeat exch pop } def + /pp.tracing false def /pp.enabletracing { + SDict /pp.tracing true put SDict /pp.leftboundary undef SDict /pp.rightboundary undef /a where @@ -1035,8 +1039,79 @@ /pp.disabletracing { /a where {/a {moveto} put} if + /x where {/x {0 exch rmoveto} put} if SDict /pp.leftboundary known {pp.outerbox 0 pp.leftboundary put} if SDict /pp.rightboundary known {pp.outerbox 2 pp.rightboundary put} if + SDict /pp.tracing false put + } def + /pp.continuetracing + { + /pp.toks pp.globaldict /pp.brokenlinktoks get def + /pp.outerbox pp.globaldict /pp.brokenlinkrect get def + /pp.baselineskip pp.globaldict /pp.brokenlinkskip get def + pp.globaldict dup dup /pp.brokenlinktoks undef /pp.brokenlinkskip undef /pp.brokenlinkrect undef + currentpoint /pp.originy exch def /pp.originx exch def + /a where + { + /a + { + moveto + SDict + begin + currentpoint pp.originy ne exch pp.originx ne or + { + H.S /pdf@lly pdf@lly pp.outerbox 1 get sub def + pp.enabletracing + } + if + end + } + put + } + if + /x where + { + /x + { + 0 exch rmoveto + SDict + begin + currentpoint pp.originy ne exch pp.originx ne or + { + H.S /pdf@lly pdf@lly pp.outerbox 1 get sub def + pp.enabletracing + } + if + end + } + put + } + if + } def + /pp.eop + { + pp.tracing + { + pp.disabletracing + true setglobal + pp.globaldict /pp.brokenlinkrect [pp.outerbox aload pop] put + pp.globaldict /pp.brokenlinkskip pp.baselineskip put + pp.globaldict /pp.brokenlinktoks pp.toks pp.cvs put + false setglobal + mark pp.toks cvx exec /Rect + [ + pdf@llx + pdf@lly + pp.outerbox 2 get HyperBorder add + currentpoint exch pop pp.outerbox pp.getheight sub HyperBorder sub + ] + /ANN pdfmark + } + if + } def + /pp.getheight % argument: rectangle (array); returns: height of rectangle + { + dup 1 get neg exch 3 get add } def /pp.addtoquadpoints { @@ -1072,9 +1147,9 @@ 1 index /Rect eq { dup 4 array copy - dup dup 1 get pp.outerbox 3 get HyperBorder 2 mul add sub 3 exch put + dup dup 1 get pp.outerbox pp.getheight HyperBorder 2 mul add sub 3 exch put dup 2 pp.outerbox 2 get HyperBorder add put - dup dup 3 get pp.outerbox 3 get HyperBorder 2 mul add add 1 exch put + dup dup 3 get pp.outerbox pp.getheight HyperBorder 2 mul add add 1 exch put /pp.currentrect exch def SDict /pp.quadpoints known {pp.addtoquadpoints} @@ -1092,7 +1167,7 @@ {pp.writebrokenlink} ifelse } - 1 index 3 get HyperBorder 2 mul add pp.outerbox 3 get add 2 index 1 get sub pp.baselineskip div round cvi 1 sub exch repeat + 1 index 3 get HyperBorder 2 mul add pp.outerbox pp.getheight add 2 index 1 get sub pp.baselineskip div round cvi 1 sub exch repeat pp.currentrect dup 0 pp.outerbox 0 get HyperBorder sub put dup dup 1 get pp.baselineskip add 1 exch put @@ -1103,7 +1178,7 @@ { pp.addtoquadpoints dup 2 pp.outerbox 0 get HyperBorder sub 1 PDFToDvips sub put - dup dup 1 get pp.outerbox 3 get HyperBorder 2 mul add sub 1 PDFToDvips sub 3 exch put + dup dup 1 get pp.outerbox pp.getheight HyperBorder 2 mul add sub 1 PDFToDvips sub 3 exch put dup 0 pp.outerbox 2 get HyperBorder add 1 PDFToDvips add put dup 1 pp.currentrect 1 get 1 PDFToDvips add put /QuadPoints pp.qp pp.DvipsArrayToPDF @@ -1189,7 +1264,7 @@ currentdict /Rect known and SDict /pp.outerbox known and SDict /pp.baselineskip known and - {Rect 1 get Rect 3 get sub pp.outerbox 3 get lt {pp.breaklink} if} + {Rect 1 get Rect 3 get sub pp.outerbox pp.getheight lt {pp.breaklink} if} if end SDict /pp.outerbox undef @@ -1218,7 +1293,7 @@ /H.R {pp.H.R} def /pdfmark {pp.pdfmark} def } def - /pp.BPToPDF + /pp.ptToBP { 72 mul 72.27 div } def @@ -1849,7 +1924,7 @@ if << /DeferredMediaSelection true - /PageSize [\strip@pt\paperwidth\space pp.BPToPDF \strip@pt\paperheight\space pp.BPToPDF] + /PageSize [\strip@pt\paperwidth\space pp.ptToBP \strip@pt\paperheight\space pp.ptToBP] /ImagingBBox null \ifpp@twoside /Duplex true @@ -1937,7 +2012,7 @@ \fi \leavevmode \ifpp@subfigure% - \pp@SDictPS{/pdf@hoff -5 /pdf@voff \strip@pt\Gin@req@height\space pp.BPToPDF 5 add pp.savecurrentpoint}% + \pp@SDictPS{/pdf@hoff -5 /pdf@voff \strip@pt\Gin@req@height\space pp.ptToBP 5 add pp.savecurrentpoint}% \pp@SDictPS{/pp.goodfiguredest true def}% \ifHy@draft% \else% @@ -1984,32 +2059,49 @@ \def\pp@activerect{false} \def\pdf@rect#1{% \def\pp@activerect{true}% - \begingroup% + \begingroup \chardef\x=1 % \def\Hy@temp{#1}% - \ifx\Hy@temp\ltx@empty% + \ifx\Hy@temp\ltx@empty \chardef\x=0 % - \else% + \else \def\y{\anchor@spot}% - \ifx\Hy@temp\y% + \ifx\Hy@temp\y \def\y{\relax}% - \ifx\anchor@spot\y% + \ifx\anchor@spot\y \chardef\x=0 % - \fi% - \fi% - \fi% - \expandafter\endgroup% - \ifcase\x% + \fi + \fi + \fi + \expandafter\endgroup + \ifcase\x \literalps@out{H.S}% \literalps@out{H.R}% - \else% - \leavevmode% - \ifHy@breaklinks% - \Hy@setouterhbox\pdf@box{\Hy@AllowHyphens#1}% - \else% - \sbox\pdf@box{#1}% - \fi% - \dimen@\ht\pdf@box% + \else + \leavevmode + \Hy@SaveSpaceFactor + \ifmmode + \def\Hy@LinkMath{$}% + \else + \let\Hy@LinkMath\ltx@empty + \fi + \ifHy@breaklinks + \Hy@setouterhbox\pdf@box{% + \Hy@RestoreSpaceFactor + \Hy@LinkMath + \Hy@AllowHyphens#1\Hy@xspace@end + \Hy@LinkMath + \Hy@SaveSpaceFactor + }% + \else + \sbox\pdf@box{% + \Hy@RestoreSpaceFactor + \Hy@LinkMath + #1\Hy@xspace@end + \Hy@LinkMath + \Hy@SaveSpaceFactor + }% + \fi \ifpp@evenboxes% \sbox\pp@textbox\pp@ABC% \setlength{\pp@offset}{-\the\dp\pdf@box}% @@ -2027,40 +2119,45 @@ /pp.outerbox [ (\pp@sidemargin) pp.strippt - 0 + (-\the\dp\pp@textbox) pp.strippt (\pp@sidemargin) pp.strippt (\the\textwidth) pp.strippt add - (\the\dp\pp@textbox) pp.strippt (\the\ht\pp@textbox) pp.strippt add + (\the\ht\pp@textbox) pp.strippt ] [ exch {PDFToDvips} forall ] def - /pp.baselineskip (\the\baselineskip) pp.strippt dup 0 gt {BPToDvips def} {pop pop} ifelse + /pp.baselineskip (\the\baselineskip) pp.strippt dup 0 gt {PDFToDvips def} {pop pop} ifelse }% - \ifdim\dp\pdf@box=\z@% + \dimen@\ht\pdf@box + \ifdim\dp\pdf@box=\z@ \literalps@out{H.S}% - \else% + \else \lower\dp\pdf@box\hbox{\literalps@out{H.S}}% - \fi% + \fi \pp@SDictPS{pp.enabletracing}% - \ifHy@breaklinks% - \expandafter\Hy@breaklinksunhbox% - \else% - \expandafter\box% - \fi% - \pdf@box% + \ifHy@breaklinks + \ifhmode + \Hy@breaklinksunhbox\pdf@box + \else + \box\pdf@box + \fi + \else + \expandafter\box\pdf@box + \fi \pp@SDictPS{pp.disabletracing}% \ifpp@evenboxes% \setlength{\pp@offset}{\the\dimen@}% \addtolength{\pp@offset}{-\the\ht\pp@textbox}% \pp@SDictPS{/pp.yoffset \strip@pt\pp@offset\space PDFToDvips def}% \fi% - \ifdim\dimen@=\z@% + \ifdim\dimen@=\z@ \literalps@out{H.R}% - \else% + \else \raise\dimen@\hbox{\literalps@out{H.R}}% - \fi% - \ifx\pdf@type\Hy@DEST% - \else% - \pdf@addtoksx{H.B}% - \fi% - \fi% + \fi + \Hy@RestoreSpaceFactor + \fi + \ifx\pdf@type\Hy@DEST + \else + \pdf@addtoksx{H.B}% + \fi \def\pp@activerect{false}% } @@ -2069,9 +2166,10 @@ \edef\@processme{\noexpand\pdf@toks={\the\pdf@defaulttoks}}% \@processme \let\pdf@type\relax - \setkeys{PDF}{#2}% + \kvsetkeys{PDF}{#2}% \ifHy@pdfmarkerror \else + \pp@SDictPS{/pp.toks (\the\pdf@toks\string) def}% \ifx\pp@activerect\pp@true% \ifpp@nlwarning% \PackageWarning{hypdvips}{Nested link discarded: dest = `\Hy@pstringDest'\MessageBreak}% @@ -2171,7 +2269,7 @@ \let\pp@backup@H@@footnotetext\H@@footnotetext \renewcommand{\H@@footnotetext}[1]{% \pp@backup@H@@footnotetext{% - \pp@SDictPS{/pp.voffset \f@size\space 5 add def}% + \pp@SDictPS{/pp.voffset \f@size\space pp.ptToBP 5 add def}% #1% }% } @@ -2188,11 +2286,11 @@ \setlength{\pp@offset}{-\the\baselineskip}% \def\pp@string{plain}% \ifx\pp@bibstyle\pp@string% - \pp@SDictPS{/pp.voffset \strip@pt\pp@offset\space pp.BPToPDF 5 add def}% + \pp@SDictPS{/pp.voffset \strip@pt\pp@offset\space pp.ptToBP 5 add def}% \fi% \def\pp@string{gerplain}% \ifx\pp@bibstyle\pp@string% - \pp@SDictPS{/pp.voffset \strip@pt\pp@offset\space pp.BPToPDF 5 add def}% + \pp@SDictPS{/pp.voffset \strip@pt\pp@offset\space pp.ptToBP 5 add def}% \fi% \pp@backup@bibitem% } @@ -2236,31 +2334,8 @@ } } -\newcommand{\pp@beforelink}[1]{% arguments: labelname - \ifpp@evenboxes% - \sbox\pp@textbox\pp@ABC% - \else% - \cref@gettype{#1}{\pp@labeltype}% - \cref@getlabel{#1}{\pp@labelcaption}% - \@ifundefined{cref@\pp@labeltype @label}% - {\sbox\pp@textbox{\cref@default@label{\pp@labelcaption}{}{}}}% - {\sbox\pp@textbox{\csname cref@\pp@labeltype @label\endcsname{\pp@labelcaption}{}{}}}% - \fi% - \setlength{\pp@offset}{\the\dp\pp@textbox}% - \pp@SDictPS{/pp.yoffset \strip@pt\pp@offset\space PDFToDvips def}% - \hyper@linkstart{link}{\cref@hyperref{#1}}% -} - -\newcommand{\pp@afterlink}{% - \setlength{\pp@offset}{\the\baselineskip}% - \addtolength{\pp@offset}{-2pt}% - \addtolength{\pp@offset}{-\the\ht\pp@textbox}% - \pp@SDictPS{/pp.yoffset \strip@pt\pp@offset\space PDFToDvips def}% - \hyper@linkend% -} - \renewcommand{\Hy@backout}[1]{% - \@bsphack% + \@bsphack \ifpp@detailedbr% \else% \ifpp@pagebackref% @@ -2276,7 +2351,7 @@ \ifpp@pagebackref% \def\pp@string{\pp@br@pagestring~\thepage}% \else% - \ifx\@currentlabel\@empty% + \ifx\@empty\@currentlabel% \def\pp@string{\pp@br@documentstring}% \else% \def\pp@string{\@currentlabel}% @@ -2287,17 +2362,20 @@ \string\backcite{#1}{{\thepage}{\pp@string}{\pp@br@currentHref}}% }% }% - \@esphack% + \@esphack } \@ifpackageloaded{cleveref} { + \def\pp@link#1\relax#2\relax#3\relax#4{#1\hyper@@link{}{#4}{#2}#3} + \def\pp@rangelink#1\relax#2\relax#3\relax#4\relax#5\relax#6#7{#1\hyper@@link{}{#6}{#2}#3\hyper@@link{}{#7}{#4}#5} \renewcommand{\@@setcref}[2]{% - \cref@getlabel{#2}{\@tmplabel}% + \cref@getlabel{#2}{\@templabel}% \if@crefstarred% - #1{\@tmplabel}{}{}% + #1{\@templabel}{}{}% \else% - #1{\@tmplabel}{\pp@beforelink{#2}}{\pp@afterlink}% + \edef\@templink{\cref@hyperref{#2}}% + \expandafter\pp@link#1{\@templabel}{\relax}{\relax}\relax{\@templink}% \fi% } \renewcommand{\@@setcrefrange}[3]{% @@ -2306,9 +2384,9 @@ \if@crefstarred% #1{\@labela}{\@labelb}{}{}{}{}% \else% - #1{\@labela}{\@labelb}% - {\pp@beforelink{#2}}{\pp@afterlink}% - {\pp@beforelink{#3}}{\pp@afterlink}% + \edef\@linka{\cref@hyperref{#2}}% + \edef\@linkb{\cref@hyperref{#3}}% + \expandafter\pp@rangelink#1{\@labela}{\@labelb}{\relax}{\relax}{\relax}{\relax}\relax{\@linka}{\@linkb}% \fi% } \renewcommand{\Hy@backout}[1]{% @@ -2548,9 +2626,9 @@ /pp.attachmentrect [ -1 - -\strip@pt\dp\pp@textbox\space pp.BPToPDF 1 sub - \strip@pt\wd\pp@textbox\space pp.BPToPDF 1 add - \strip@pt\ht\pp@textbox\space pp.BPToPDF 1 add + -\strip@pt\dp\pp@textbox\space pp.ptToBP 1 sub + \strip@pt\wd\pp@textbox\space pp.ptToBP 1 add + \strip@pt\ht\pp@textbox\space pp.ptToBP 1 add ] def /pp.bbox pp.attachmentrect 4 array copy def @@ -2943,17 +3021,25 @@ \renewcommand{\contentsline}[4]{% \ifx\\#4\\% \csname l@#1\endcsname{#2}{#3}% - \else% - \ifcase\Hy@linktoc% none + \else + \ifcase\Hy@linktoc % none \csname l@#1\endcsname{#2}{#3}% - \or% section - \csname l@#1\endcsname{\hyper@@link{}{#4}{#2}}{#3}% - \or% page - \csname l@#1\endcsname{{#2}}{\hyper@@link{}{#4}{#3}}% - \else% all - \csname l@#1\endcsname{\hyper@@link{}{#4}{#2}}{\hyper@@link{}{#4}{#3}}% - \fi% - \fi% + \or % section + \csname l@#1\endcsname{% + \hyper@@link{}{#4}{#2} + }{#3}% + \or % page + \csname l@#1\endcsname{{#2}}{% + \hyper@@link{}{#4}{#3} + }% + \else % all + \csname l@#1\endcsname{% + \hyper@@link{}{#4}{#2} + }{% + \hyper@@link{}{#4}{#3} + }% + \fi + \fi } \edef\@backrefcolor{\@citecolor} @@ -3009,7 +3095,7 @@ \ifHy@draft% \else% \setlength{\pp@offset}{\the\baselineskip}% - \pp@SDictPS{/pdf@hoff -2 /pdf@voff \strip@pt\pp@offset\space pp.BPToPDF pp.savecurrentpoint}% + \pp@SDictPS{/pdf@hoff -2 /pdf@voff \strip@pt\pp@offset\space pp.ptToBP pp.savecurrentpoint}% \pp@SDictPS{mark /Dest (backref.\arabic{pp@backrefID}) cvn /View [/\@pdfview \@pdfviewparams] /DEST pdfmark}% \fi% \edef\pp@br@currentHref{backref.\arabic{pp@backrefID}}% @@ -3533,6 +3619,18 @@ \fi }{} +\global\let\pp@backup@@makecol\@makecol +\gdef\@makecol{% + \setbox\@cclv\vbox{\unvbox\@cclv\pp@SDictPS{pp.eop}}% + \pp@backup@@makecol% + } + +\global\let\pp@backup@@startcolumn\@startcolumn +\gdef\@startcolumn{% + \pp@SDictPS{pp.globaldict /pp.brokenlinkrect known \string{pp.continuetracing\string} if}% + \pp@backup@@startcolumn% + } + %% %% Exported commands: %% -- cgit v1.2.3