diff options
| author | scoder <none@none> | 2008-04-19 16:10:12 +0200 |
|---|---|---|
| committer | scoder <none@none> | 2008-04-19 16:10:12 +0200 |
| commit | 3a94a2ef05e37a184ed3b4e23bfd667f4832ef2a (patch) | |
| tree | 2a837eacb2d5d47b7787e0206dd607b820d4e2a5 /doc/mklatex.py | |
| parent | e4576f9c8e5d57b81169e1336c5194db347d84c0 (diff) | |
| download | python-lxml-3a94a2ef05e37a184ed3b4e23bfd667f4832ef2a.tar.gz | |
[svn r3560] r4007@delle: sbehnel | 2008-04-19 16:08:51 +0200
fix inter-document links in doc PDF
--HG--
branch : trunk
Diffstat (limited to 'doc/mklatex.py')
| -rw-r--r-- | doc/mklatex.py | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/doc/mklatex.py b/doc/mklatex.py index 4a88b0fc..a53f9beb 100644 --- a/doc/mklatex.py +++ b/doc/mklatex.py @@ -112,6 +112,21 @@ def publish(dirname, lxml_path, release): header = [] titles = {} + replace_relative_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': + return r'\href{http://codespeak.net/lxml/%s.%s}{%s}' % ( + outname, extension, linktext) + else: + return r"\hyperref[_part_%s.tex]{%s}" % (outname, linktext) + def fix_relative_hyperrefs(line): + if r'\href' not in line: + return line + return replace_relative_hyperrefs(build_hyperref, line) + # Building pages for section, text_files in SITE_STRUCTURE: for filename in text_files: @@ -132,7 +147,8 @@ def publish(dirname, lxml_path, release): final_name = os.path.join(dirname, "_part_%s" % outname) - title, hd = tex_postprocess(outpath, final_name, not header) + title, hd = tex_postprocess(outpath, final_name, not header, + process_line=fix_relative_hyperrefs) if not header: header = hd titles[outname] = title @@ -171,6 +187,11 @@ def publish(dirname, lxml_path, release): master.write("\\tableofcontents\n\n") + def write_chapter(title, outname): + master.write( + "\\chapter{%s}\n\\label{_part_%s}\n\n\\input{_part_%s}\n\n" % ( + title, outname, outname)) + for section, text_files in SITE_STRUCTURE: master.write("\\part{%s}\n\n" % section) for filename in text_files: @@ -184,12 +205,9 @@ def publish(dirname, lxml_path, release): basename = os.path.splitext(os.path.basename(filename))[0] basename = BASENAME_MAP.get(basename, basename) outname = basename + '.tex' - ## TODO: true title - master.write("\\chapter{%s}\n\n" % titles[outname]) - master.write("\\input{_part_%s}\n\n" % outname) + write_chapter(titles[outname], outname) - master.write("\\chapter{Changes}\n\n") - master.write("\\input{_part_%s}\n\n" % chgname) + write_chapter("Changes", chgname) master.write("\end{document}\n") |
