X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw-ref.tex;h=86d41a19c3dc67d14a68ef7dc9c231ec1012e952;hb=refs%2Ftags%2Fv2.0.1;hp=e90b642e4b81120883177309e03dce7ea0e43792;hpb=c37b82efe4402399da2daa4fba24415f5066b515;p=ucwmac.git diff --git a/ucw-ref.tex b/ucw-ref.tex index e90b642..86d41a1 100644 --- a/ucw-ref.tex +++ b/ucw-ref.tex @@ -2,9 +2,8 @@ % Written by Martin Mares in 2018 and placed into public domain % ------------------------------------------------------------------------- -% Should clickable links be produced? -\newif\ifclickable -\clickabletrue +\ucwdefmodule{ref} +\ucwmodule{link} % We maintain a collection of objects. Each object has: % - type (namespace -- e.g., chapter) @@ -45,56 +44,26 @@ \ifx\optarg\relax \let\currentid\relax \else - \edef\currentid{#1\optarg}% + \edef\currentid{#1:\optarg}% \writeid{\currentid}{#2}% - \ifclickable - \pdfdest name {\currentid} xyz\relax - \fi + \destpos{\currentid}% \fi } % A low-level interface for typesetting references: produces a clickable link % to the identifier #2 of type #1 with a label translated by macro #3 (use \relax % for no translation). -\def\reflink#1#2#3{\expandafter\ifx\csname id:#1#2\endcsname\relax +\def\reflink#1#2#3{\expandafter\ifx\csname id:#1:#2\endcsname\relax {\ifx\bo\undefined\bf\else\bo\fi ??}% - \immediate\write16{*** Warning: Reference #1 undefined ***}% + \immediate\write16{*** Warning: Reference #1:#2 undefined ***}% \else - \ifclickable - \pdfstartlink\commonlinkargs goto name {#1#2}\relax - \fi - #3{\csname id:#1#2\endcsname}% - \ifclickable - \pdfendlink\relax - \fi + \link{#1:#2}{#3{\csname id:#1:#2\endcsname}}% \fi } -% Common style of all clickable links -\pdflinkmargin=1pt -\def\commonlinkargs{height \the\dimexpr\ht\strutbox-0.5pt\relax depth \the\dimexpr\dp\strutbox-0.5pt\relax attr {/C [0 0 0.5] /Border [0 0 2]}} - % Typeset a link to identifier #2 of type #1 \def\ref#1#2{\reflink{#1}{#2}\relax} % Define an identifier of type page pointing to the current page -\def\pageid#1{\delayedwriteid{page#1}{\the\count0}\ifclickable\pdfdest name {page#1} fit\relax\fi} +\def\pageid#1{\delayedwriteid{page#1}{\the\count0}\destpage{page#1}} \def\pageref{\ref{page}} - -% Typeset a reference to the given page number (used in tables of contents and indices, -% where we know the page number from other sources). -\def\pagelink#1{\ifclickable\pdfstartlink\commonlinkargs goto page #1 {/Fit}\relax #1\pdfendlink\else #1\fi} - -% Typeset a clickable URL -% Currently, all weird characters must be properly escaped. -\def\url#1{% - \leavevmode - \ifclickable - \pdfstartlink\commonlinkargs user {/Subtype/Link /A << /Type/Action /S/URI /URI(#1) >>}\relax - \fi - \xurl #1^^X% - \ifclickable - \pdfendlink\relax - \fi -} -\def\xurl#1:#2#3^^X{{\I #1:#2\ifx#2/\kern-0.1em\fi#3}}