From 4fdd092d9102b994eea81fca6419877477b75e84 Mon Sep 17 00:00:00 2001 From: smerten Date: Wed, 26 Nov 2008 22:59:52 +0000 Subject: [PATCH] Class `handout` is removed. git-svn-id: https://docutils.svn.sourceforge.net/svnroot/docutils/trunk@5735 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- sandbox/rst2beamer/latexbeamer/__init__.py | 31 +++++++++++++++++++++++++++++- sandbox/rst2beamer/tools/rst2beamer.py | 5 ++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/sandbox/rst2beamer/latexbeamer/__init__.py b/sandbox/rst2beamer/latexbeamer/__init__.py index b006c1b43..c7773afa5 100644 --- a/sandbox/rst2beamer/latexbeamer/__init__.py +++ b/sandbox/rst2beamer/latexbeamer/__init__.py @@ -6,6 +6,8 @@ __docformat__ = 'reStructuredText' from docutils import frontend, nodes from docutils.writers import latex2e +from docutils.readers import standalone +from docutils.transforms import references, Transform, TransformError class Writer(latex2e.Writer): @@ -253,4 +255,31 @@ class BeamerTranslator(latex2e.LaTeXTranslator): return ''.join(self.head_prefix + [head] + self.head + [pdfinfo] + self.body_prefix + self.body + self.body_suffix) -# TODO Class `handout` must be suppressed - may be by a preprocessor +# Use an own reader to modify transformations done. +class Reader(standalone.Reader): + + def get_transforms(self): + default = standalone.Reader.get_transforms(self) + return ([ i + for i in default + if i is not references.DanglingReferences ] + + [ RemoveClassHandout, ]) + +class RemoveClassHandout(Transform): + + """ + Remove all elements with a given class attribute. + """ + + classToRemove = 'handout' + + # Must be less than + # docutils.transforms.misc.ClassAttribute.default_priority + default_priority = 120 + + def apply(self): + for node in self.document.traverse(nodes.Element): + if node.has_key('classes'): + if self.classToRemove in node['classes']: + if node.parent: + node.parent.remove(node) diff --git a/sandbox/rst2beamer/tools/rst2beamer.py b/sandbox/rst2beamer/tools/rst2beamer.py index dc461f063..c322c5d31 100755 --- a/sandbox/rst2beamer/tools/rst2beamer.py +++ b/sandbox/rst2beamer/tools/rst2beamer.py @@ -18,8 +18,11 @@ except: from docutils.core import publish_cmdline, default_description +from docutils.writers.latexbeamer import Writer, Reader description = ('Generates LaTeX Beamer documents from standalone reStructuredText ' 'sources. ' + default_description) -publish_cmdline(writer_name='latexbeamer', description=description) +writer = Writer() +reader = Reader() +publish_cmdline(reader=reader, writer=writer, description=description) -- 2.11.4.GIT