From 012e7f2d79acf4071d2b25a8ba6cf50e98c90857 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 14 Feb 2009 11:38:28 +0100 Subject: [PATCH] Fix handling of "docname" and target names in LaTeX builder. --- sphinx/builders/latex.py | 18 +++++++++++------- sphinx/writers/latex.py | 4 ++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/sphinx/builders/latex.py b/sphinx/builders/latex.py index 3b7b0c196..395ccd9db 100644 --- a/sphinx/builders/latex.py +++ b/sphinx/builders/latex.py @@ -52,6 +52,10 @@ class LaTeXBuilder(Builder): else: return '%' + docname + def get_relative_uri(self, from_, to, typ=None): + # ignore source path + return self.get_target_uri(to, typ) + def init_document_data(self): preliminary_document_data = map(list, self.config.latex_documents) if not preliminary_document_data: @@ -72,11 +76,6 @@ class LaTeXBuilder(Builder): self.titles.append((docname, entry[2])) def write(self, *ignored): - # first, assemble the "appendix" docs that are in every PDF - appendices = [] - for fname in self.config.latex_appendices: - appendices.append(self.env.get_doctree(fname)) - docwriter = LaTeXWriter(self) docsettings = OptionParser( defaults=self.env.settings, @@ -94,7 +93,8 @@ class LaTeXBuilder(Builder): encoding='utf-8') self.info("processing " + targetname + "... ", nonl=1) doctree = self.assemble_doctree(docname, toctree_only, - appendices=(docclass == 'manual') and appendices or []) + appendices=((docclass == 'manual') and + self.config.latex_appendices or [])) self.post_process_images(doctree) self.info("writing... ", nonl=1) doctree.settings = docsettings @@ -140,7 +140,11 @@ class LaTeXBuilder(Builder): new_sect += node tree = new_tree largetree = process_tree(indexfile, tree) - largetree.extend(appendices) + largetree['docname'] = indexfile + for docname in appendices: + appendix = self.env.get_doctree(docname) + appendix['docname'] = docname + largetree.append(appendix) self.info() self.info("resolving references...") self.env.resolve_references(largetree, indexfile, self) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index e1fbea133..057e229b4 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -239,7 +239,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_document(self, node): self.footnotestack.append(self.collect_footnotes(node)) - self.curfilestack.append(node['file']) + self.curfilestack.append(node['docname']) if self.first_document == 1: # the first document is all the regular content ... self.body.append(BEGIN_DOC % self.elements) @@ -274,7 +274,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.footnotestack.append(self.collect_footnotes(node)) # also add a document target self.body.append('\\hypertarget{--doc-%s}{}' % node['docname']) - self.curfilestack.append(node['file']) + self.curfilestack.append(node['docname']) def collect_footnotes(self, node): fnotes = {}