%% %% This is file `breakurl.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% breakurl.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2005 by Vilar Camara Neto. %% %% This file may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.2 of this license or (at your option) any later %% version. The latest version of this license is in: %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.2 or later is part of all distributions of %% LaTeX version 1999/12/01 or later. %% %% Currently this work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is Vilar Camara Neto. %% %% This work consists of the files breakurl.dtx and %% breakurl.ins and the derived file breakurl.sty. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{breakurl} [2013/04/10 v1.40 Breakable hyperref URLs] \RequirePackage{xkeyval} \RequirePackage{ifpdf} \ifpdf % Dummy package options \DeclareOptionX{preserveurlmacro}{} \DeclareOptionX{hyphenbreaks}{} \DeclareOptionX{anythingbreaks}{} \DeclareOptionX{vertfit}{} \ProcessOptionsX\relax \PackageWarning{breakurl}{% You are using breakurl while processing via pdflatex.\MessageBreak \string\burl\space will be just a synonym of \string\url.\MessageBreak} \DeclareRobustCommand{\burl}{\url} \DeclareRobustCommand*{\burlalt}{\hyper@normalise\burl@alt} \def\burl@alt#1#2{\hyper@linkurl{\Hurl{#1}}{#2}} \expandafter\endinput \fi \@ifpackageloaded{hyperref}{}{% \PackageError{breakurl}{The breakurl depends on hyperref package}% {I can't do anything. Please type X , edit the source file% \MessageBreak and add \string\usepackage\string{hyperref\string} before \string\usepackage\string{breakurl\string}.} \endinput } \newif\if@preserveurlmacro\@preserveurlmacrofalse \newif\if@burl@fitstrut\@burl@fitstrutfalse \newif\if@burl@fitglobal\@burl@fitglobalfalse \newif\if@burl@anythingbreaks\@burl@anythingbreaksfalse \newtoks\burl@toks \let\burl@charlistbefore\empty \let\burl@charlistafter\empty \def\burl@addtocharlistbefore{\g@addto@macro\burl@charlistbefore} \def\burl@addtocharlistafter{\g@addto@macro\burl@charlistafter} \bgroup \catcode`\&=12\relax \hyper@normalise\burl@addtocharlistbefore{%} \hyper@normalise\burl@addtocharlistafter{:/.?#&_,;!} \egroup \def\burl@growmif#1#2{% \g@addto@macro\burl@mif{\def\burl@ttt{#1}\ifx\burl@ttt\@nextchar#2\else}% } \def\burl@growmfi{% \g@addto@macro\burl@mfi{\fi}% } \def\burl@defifstructure{% \let\burl@mif\empty \let\burl@mfi\empty \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=% \burl@charlistbefore\do{% \expandafter\burl@growmif\@nextchar\@burl@breakbeforetrue \burl@growmfi }% \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=% \burl@charlistafter\do{% \expandafter\burl@growmif\@nextchar\@burl@breakaftertrue \burl@growmfi }% } \AtEndOfPackage{\burl@defifstructure} \def\burl@setvertfit#1{% \lowercase{\def\burl@temp{#1}}% \def\burl@opt{local}\ifx\burl@temp\burl@opt \@burl@fitstrutfalse\@burl@fitglobalfalse \else\def\burl@opt{strut}\ifx\burl@temp\burl@opt \@burl@fitstruttrue\@burl@fitglobalfalse \else\def\burl@opt{global}\ifx\burl@temp\burl@opt \@burl@fitstrutfalse\@burl@fitglobaltrue \else \PackageWarning{breakurl}{Unrecognized vertfit option `\burl@temp'.% \MessageBreak Adopting default `local'} \@burl@fitstrutfalse\@burl@fitglobalfalse \fi\fi\fi } \DeclareOptionX{preserveurlmacro}{\@preserveurlmacrotrue} \DeclareOptionX{hyphenbreaks}{% \bgroup \catcode`\&=12\relax \hyper@normalise\burl@addtocharlistafter{-}% \egroup } \DeclareOptionX{anythingbreaks}{% \@burl@anythingbreakstrue } \DeclareOptionX{vertfit}[local]{\burl@setvertfit{#1}} \ProcessOptionsX\relax \def\burl@hyper@linkurl#1#2{% \begingroup \hyper@chars \burl@condpdflink{#1}% \endgroup } \def\burl@condpdflink#1{% \literalps@out{ /burl@bordercolor {\@urlbordercolor} def /burl@border {\@pdfborder} def }% \if@burl@fitstrut \sbox\pdf@box{#1\strut}% \else\if@burl@fitglobal \sbox\pdf@box{\burl@url}% \else \sbox\pdf@box{#1}% \fi\fi \dimen@\ht\pdf@box\dimen@ii\dp\pdf@box \sbox\pdf@box{#1}% \ifdim\dimen@ii=\z@ \literalps@out{BU.SS}% \else \lower\dimen@ii\hbox{\literalps@out{BU.SS}}% \fi \ifHy@breaklinks\unhbox\else\box\fi\pdf@box \ifdim\dimen@=\z@ \literalps@out{BU.SE}% \else \raise\dimen@\hbox{\literalps@out{BU.SE}}% \fi \pdf@addtoksx{H.B}% } \DeclareRobustCommand*{\burl}{% \leavevmode \begingroup \let\hyper@linkurl=\burl@hyper@linkurl \catcode`\&=12\relax \hyper@normalise\burl@ } \DeclareRobustCommand*{\burlalt}{% \begingroup \let\hyper@linkurl=\burl@hyper@linkurl \catcode`\&=12\relax \hyper@normalise\burl@alt } \newif\if@burl@breakbefore \newif\if@burl@breakafter \newif\if@burl@prevbreakafter \bgroup \catcode`\&=12\relax \gdef\burl@#1{% \def\burl@url{#1}% \def\burl@urltext{#1}% \burl@doit } \gdef\burl@alt#1{% \def\burl@url{#1}% \hyper@normalise\burl@@alt } \gdef\burl@@alt#1{% \def\burl@urltext{#1}% \burl@doit } \gdef\burl@doit{% \burl@toks{}% \let\burl@UrlRight\UrlRight \let\UrlRight\empty \@burl@prevbreakafterfalse \@ifundefined{@urlcolor}{\Hy@colorlink\@linkcolor}{\Hy@colorlink\@urlcolor}% \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=% \burl@urltext\do{% \if@burl@breakafter\@burl@prevbreakaftertrue \else\@burl@prevbreakafterfalse\fi \if@burl@anythingbreaks\@burl@breakbeforetrue\else\@burl@breakbeforefalse\fi \@burl@breakafterfalse \expandafter\burl@mif\burl@mfi \if@burl@breakbefore % Breakable if the current char is in the `can break before' list \burl@flush\linebreak[0]% \else \if@burl@prevbreakafter \if@burl@breakafter\else % Breakable if the current char is not in any of the `can break' % lists, but the previous is in the `can break after' list. % This mechanism accounts for sequences of `break after' characters, % where a break is allowed only after the last one \burl@flush\linebreak[0]% \fi \fi \fi \expandafter\expandafter\expandafter\burl@toks \expandafter\expandafter\expandafter{% \expandafter\the\expandafter\burl@toks\@nextchar}% }% \let\UrlRight\burl@UrlRight \burl@flush \literalps@out{BU.E}% \Hy@endcolorlink \endgroup } \egroup \def\the@burl@toks{\the\burl@toks} \def\burl@flush{% \expandafter\def\expandafter\burl@toks@def\expandafter{\the\burl@toks}% \literalps@out{/BU.L (\burl@url) def}% \hyper@linkurl{\expandafter\Hurl\expandafter{\burl@toks@def}}{\burl@url}% \global\burl@toks{}% \let\UrlLeft\empty }% \if@preserveurlmacro\else\let\url\burl\let\urlalt\burlalt\fi \AtBeginDvi{% \headerps@out{% /burl@stx null def /BU.S { /burl@stx null def } def /BU.SS { currentpoint /burl@lly exch def /burl@llx exch def burl@stx null ne {burl@endx burl@llx ne {BU.FL BU.S} if} if burl@stx null eq { burl@llx dup /burl@stx exch def /burl@endx exch def burl@lly dup /burl@boty exch def /burl@topy exch def } if burl@lly burl@boty gt {/burl@boty burl@lly def} if } def /BU.SE { currentpoint /burl@ury exch def dup /burl@urx exch def /burl@endx exch def burl@ury burl@topy lt {/burl@topy burl@ury def} if } def /BU.E { BU.FL } def /BU.FL { burl@stx null ne {BU.DF} if } def /BU.DF { BU.BB [ /H /I /Border [burl@border] /Color [burl@bordercolor] /Action << /Subtype /URI /URI BU.L >> /Subtype /Link BU.B /ANN pdfmark /burl@stx null def } def /BU.BB { burl@stx HyperBorder sub /burl@stx exch def burl@endx HyperBorder add /burl@endx exch def burl@boty HyperBorder add /burl@boty exch def burl@topy HyperBorder sub /burl@topy exch def } def /BU.B { /Rect[burl@stx burl@boty burl@endx burl@topy] } def /eop where { begin /@ldeopburl /eop load def /eop { SDict begin BU.FL end @ldeopburl } def end } { /eop { SDict begin BU.FL end } def } ifelse }% } \endinput %% %% End of file `breakurl.sty'.