summaryrefslogtreecommitdiff
path: root/doc/mklatex.py
diff options
context:
space:
mode:
authorscoder <none@none>2008-04-19 16:10:12 +0200
committerscoder <none@none>2008-04-19 16:10:12 +0200
commit3a94a2ef05e37a184ed3b4e23bfd667f4832ef2a (patch)
tree2a837eacb2d5d47b7787e0206dd607b820d4e2a5 /doc/mklatex.py
parente4576f9c8e5d57b81169e1336c5194db347d84c0 (diff)
downloadpython-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.py30
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")