diff options
author | Fred Drake <fdrake@acm.org> | 1998-04-15 17:50:01 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1998-04-15 17:50:01 (GMT) |
commit | a2c2a836d7b82bc12f47b8af66ed70d202a34cf2 (patch) | |
tree | e5814087334b9d2471ef8ae9d22be27b64722ea9 | |
parent | a88d681255b8f4d5883e9ad245f00dae15c5c473 (diff) | |
download | cpython-a2c2a836d7b82bc12f47b8af66ed70d202a34cf2.zip cpython-a2c2a836d7b82bc12f47b8af66ed70d202a34cf2.tar.gz cpython-a2c2a836d7b82bc12f47b8af66ed70d202a34cf2.tar.bz2 |
Fix the broken PDF links, really this time!
"." cannot be part of the target names either.
Appending a junk char to the end doesn't quite do it, or doesn't seem to at
any rate. Instead, pad the page numbers to always be 3 charaters wide, with
leading zeros.
-rw-r--r-- | Doc/texinputs/python.sty | 58 |
1 files changed, 36 insertions, 22 deletions
diff --git a/Doc/texinputs/python.sty b/Doc/texinputs/python.sty index 4c38774..e634ce7 100644 --- a/Doc/texinputs/python.sty +++ b/Doc/texinputs/python.sty @@ -27,13 +27,22 @@ \let\NormalColor=\Black \pdfcompresslevel=9 % + % Pad the number with '0' to 3 digits wide so no page name is a prefix + % of any other. + % + \def\py@targetno#1{\ifnum#1<100 0\fi\ifnum#1<10 0\fi#1} + \def\py@pageno{\py@targetno\thepage} + % % This definition allows the entries in the page-view of the ToC to be % active links. Some work, some don't. % \let\OldContentsline=\contentsline + % Compute the padded page number separately since we end up with a pair of + % \relax tokens; this gets the right string computed and works. \renewcommand{\contentsline}[3]{% + \def\my@pageno{\py@targetno{#3}}% \OldContentsline{#1}{% - \pdfannotlink attr{/Border [0 0 0]} goto name{page.#3}% + \pdfannotlink attr{/Border [0 0 0]} goto name{page\my@pageno}% \LinkColor#2\NormalColor% \pdfendlink% }{#3}% @@ -45,12 +54,17 @@ \AtEndDocument{ \InputIfFileExists{\jobname.bkm}{\pdfcatalog{/PageMode /UseOutlines}}{} } + \newcommand{\py@target}[1]{% + \if@doing@page@targets% + {\pdfdest name{#1} fit}% + \fi% + } \let\OldLabel=\label \renewcommand{\label}[1]{% \OldLabel{#1}% - {\pdfdest name{label.#1} fit}% + \py@target{label-#1}% } - % This stuff adds a page.# destination to every PDF page, where # has + % This stuff adds a page# destination to every PDF page, where # has % the same formatting as the displayed page number. This doesn't really % help with the frontmatter, but does fine with the body. % @@ -62,7 +76,7 @@ } \def\@hyperfixhead{% \let\H@old@thehead\@thehead - \gdef\@foo{\if@doing@page@targets\pdfdest name{page.\thepage x} fit\fi}% + \global\def\@foo{\py@target{page\py@pageno}}% \expandafter\ifx\expandafter\@empty\H@old@thehead \def\H@old@thehead{\hfil}\fi \def\@thehead{\@foo\relax\H@old@thehead}% @@ -191,26 +205,26 @@ % Augment the sectioning commands used to get our own font family in place, % and reset some internal data items: \renewcommand{\section}{\reset@python% - \@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\reset@font\Large\HeaderFamily}} + \@startsection{section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\reset@font\Large\HeaderFamily}} \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\reset@font\large\HeaderFamily}} + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\reset@font\large\HeaderFamily}} \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\reset@font\normalsize\HeaderFamily}} + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\reset@font\normalsize\HeaderFamily}} \renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - {\reset@font\normalsize\HeaderFamily}} + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\reset@font\normalsize\HeaderFamily}} \renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\parindent}% {3.25ex \@plus1ex \@minus .2ex}% {-1em}% - {\reset@font\normalsize\HeaderFamily}} + {\reset@font\normalsize\HeaderFamily}} % Underscore hack (only act like subscript operator if in math mode) @@ -518,9 +532,9 @@ % Use this def/redef approach for \url{} since hyperref defined this already, % but only if we actually used hyperref: \@ifundefined{pdfannotlink}{ - \newcommand{\pythonurl}[1]{\mbox{\small\textsf{#1}}} + \newcommand{\py@url}[1]{\mbox{\small\textsf{#1}}} }{ - \newcommand{\pythonurl}[1]{{% + \newcommand{\py@url}[1]{{% \pdfannotlink attr{/Border [0 0 0]} user{/S /URI /URI (#1)}% \LinkColor% color of the link text {\small\textsf{#1}}% @@ -528,7 +542,7 @@ \pdfendlink}% and don't appear bound to the current }% formatting "box". } -\let\url=\pythonurl +\let\url=\py@url \newcommand{\email}[1]{{\small\textsf{#1}}} \newcommand{\newsgroup}[1]{{\small\textsf{#1}}} @@ -643,7 +657,7 @@ }{\newcommand{\seemodule}[3][\@modulebadkey]{% \ifx\@modulebadkey#1\def\@modulekey{#2}\else\def\@modulekey{#1}\fi% \ref{module-\@modulekey}:\quad % - {\pdfannotlink attr{/Border [0 0 0]} goto name{label.module-\@modulekey}% + {\pdfannotlink attr{/Border [0 0 0]} goto name{label-module-\@modulekey}% \LinkColor Module \module{#2} \NormalColor% \pdfendlink% }% |