[Lxml-checkins] r53874 - in lxml/trunk: . doc

scoder at codespeak.net scoder at codespeak.net
Sat Apr 19 16:47:04 CEST 2008


Author: scoder
Date: Sat Apr 19 16:47:03 2008
New Revision: 53874

Modified:
   lxml/trunk/   (props changed)
   lxml/trunk/doc/mklatex.py
Log:
 r4011 at delle:  sbehnel | 2008-04-19 16:45:18 +0200
 fix relative hyperrefs in doc PDF


Modified: lxml/trunk/doc/mklatex.py
==============================================================================
--- lxml/trunk/doc/mklatex.py	(original)
+++ lxml/trunk/doc/mklatex.py	Sat Apr 19 16:47:03 2008
@@ -112,12 +112,17 @@
     header = []
     titles = {}
 
-    replace_relative_hyperrefs = re.compile(
-        r'\\href\{([^/}]+)[.]([^.]+)\}\{([^}]+)\}').sub
+    replace_interdoc_hyperrefs = re.compile(
+        r'\\href\{([^/}]+)[.]([^./}]+)\}\{([^}]+)\}').sub
+    replace_docinternal_hyperrefs = re.compile(
+        r'\\href\{\\#([^}]+)\}').sub
     def build_hyperref(match):
         basename, extension, linktext = match.groups()
         outname = BASENAME_MAP.get(basename, basename)
-        if '#' in basename or extension != 'html':
+        if '#' in extension:
+            anchor = extension.split('#')[-1]
+            return r"\hyperref[%s]{%s}" % (anchor, linktext)
+        elif extension != 'html':
             return r'\href{http://codespeak.net/lxml/%s.%s}{%s}' % (
                 outname, extension, linktext)
         else:
@@ -125,7 +130,8 @@
     def fix_relative_hyperrefs(line):
         if r'\href' not in line:
             return line
-        return replace_relative_hyperrefs(build_hyperref, line)
+        line = replace_interdoc_hyperrefs(build_hyperref, line)
+        return replace_docinternal_hyperrefs(r'\hyperref[\1]', line)
 
     # Building pages
     for section, text_files in SITE_STRUCTURE:


More information about the lxml-checkins mailing list