gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/metacode latex2e.py umldoc.py umlrst.py


From: Benja Fallenstein
Subject: [Gzz-commits] gzz/metacode latex2e.py umldoc.py umlrst.py
Date: Sun, 09 Feb 2003 15:02:19 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Benja Fallenstein <address@hidden>      03/02/09 15:02:19

Modified files:
        metacode       : latex2e.py umldoc.py umlrst.py 

Log message:
        More awful hackery, for using bibtex in rst+latex.
        References are [kappe95scalable]_, and at the end you put
        '.. bibliography:: gzigzag' (produces \bibliography{gzigzag}).

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/latex2e.py.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/umldoc.py.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/umlrst.py.diff?tr1=1.30&tr2=1.31&r1=text&r2=text

Patches:
Index: gzz/metacode/latex2e.py
diff -u gzz/metacode/latex2e.py:1.5 gzz/metacode/latex2e.py:1.6
--- gzz/metacode/latex2e.py:1.5 Sun Feb  9 06:58:46 2003
+++ gzz/metacode/latex2e.py     Sun Feb  9 15:02:18 2003
@@ -3,8 +3,8 @@
 """
 :Author: Engelbert Gruber (hacked by the Gzz project)
 :Contact: address@hidden
-:Revision: $Revision: 1.5 $
-:Date: $Date: 2003/02/09 11:58:46 $
+:Revision: $Revision: 1.6 $
+:Date: $Date: 2003/02/09 20:02:18 $
 :Copyright: This module has been placed in the public domain.
 
 LaTeX2e document tree Writer.
@@ -429,21 +429,28 @@
         self.depart_admonition()
 
     def visit_citation(self, node):
-        self.visit_footnote(node)
+        self.body.append([None, 'visit_citation'])
+        #self.visit_footnote(node)
 
     def depart_citation(self, node):
-        self.depart_footnote(node)
+        while self.body.pop() != [None, 'visit_citation']: pass
+        #self.depart_footnote(node)
 
     def visit_citation_reference(self, node):
         href = ''
         if node.has_key('refid'):
             href = node['refid']
-        elif node.has_key('refname'):
-            href = self.document.nameids[node['refname']]
-        self.body.append('[\\hyperlink{%s}{' % href)
+        self.body.append('\\cite{%s}' % href)
+        self.body.append(None)
+
+        ##elif node.has_key('refname'):
+        ##    href = self.document.nameids[node['refname']]
+        ##self.body.append('[\\hyperlink{%s}{' % href)
 
     def depart_citation_reference(self, node):
-        self.body.append('}]')
+        while not (self.body.pop() is None):
+            pass
+        ##self.body.append('}]')
 
     def visit_classifier(self, node):
         self.body.append( '(\\textbf{' )
Index: gzz/metacode/umldoc.py
diff -u gzz/metacode/umldoc.py:1.22 gzz/metacode/umldoc.py:1.23
--- gzz/metacode/umldoc.py:1.22 Sun Feb  9 06:58:46 2003
+++ gzz/metacode/umldoc.py      Sun Feb  9 15:02:19 2003
@@ -58,6 +58,52 @@
 mputils.__rst_init__()
 umlrst.__rst_init__()
 
+
+# ***ugly***
+import docutils.transforms.universal, docutils.nodes
+class FinalCheckVisitor(docutils.transforms.universal.FinalCheckVisitor):
+    def visit_citation_reference(self, node):
+        if node.resolved or not node.hasattr('refname'):
+            return
+        refname = node['refname']
+        id = self.document.nameids.get(refname)
+        if id is None:
+            # Instead of complaining when a reference is not included
+            # (i.e., there's no '.. [gzz] bla' for a '[gzz]_'),
+            # we insert the missing node, empty.
+
+            # Note: I don't really know what I'm doing here,
+            # just poking around and guessing which variables
+            # contain which things...
+
+            id = refname
+            xnode = docutils.nodes.reference(refid=refname)
+            #node += xnode
+            self.document.ids[id] = xnode
+            self.document.nameids[refname] = refname
+
+        del node['refname']
+        node['refid'] = id
+        self.document.ids[id].referenced = 1
+        node.resolved = 1
+            
+        ##    msg = self.document.reporter.error(
+        ##          'Unknown target name: "%s".' % (node['refname']),
+        ##          base_node=node)
+        ##    msgid = self.document.set_id(msg)
+        ##    prb = nodes.problematic(
+        ##          node.rawsource, node.rawsource, refid=msgid)
+        ##    prbid = self.document.set_id(prb)
+        ##    msg.add_backref(prbid)
+        ##    node.parent.replace(node, prb)
+        ##else:
+        ##    del node['refname']
+        ##    node['refid'] = id
+        ##    self.document.ids[id].referenced = 1
+        ##    node.resolved = 1
+
+docutils.transforms.universal.FinalCheckVisitor = FinalCheckVisitor
+
 def _rstFiles(path):
     files = [f for f in os.listdir(mputils._slashify(path)) \
           if os.path.isfile(mputils._slashify(path)+f) and not 
f.startswith('.')
Index: gzz/metacode/umlrst.py
diff -u gzz/metacode/umlrst.py:1.30 gzz/metacode/umlrst.py:1.31
--- gzz/metacode/umlrst.py:1.30 Sun Feb  9 06:58:46 2003
+++ gzz/metacode/umlrst.py      Sun Feb  9 15:02:19 2003
@@ -36,7 +36,19 @@
     uml_refer_directive.content = 0
 
     docutils.parsers.rst.directives._directives['uml-refer'] = 
uml_refer_directive
+
+    bibliography_directive.arguments = (1, 0, 0)
+    bibliography_directive.options = {}
+    bibliography_directive.content = 0
     
+    docutils.parsers.rst.directives._directives['bibliography'] = 
bibliography_directive
+
+def bibliography_directive(name, arguments, options, content, lineno,
+        content_offset, block_text, state, state_machine):
+    return [docutils.nodes.raw(
+        text='\n\\bibliographystyle{abbrv}\n\\bibliography{%s}\n' % 
arguments[0],
+        format='latex')]
+
 def uml_directive(name, arguments, options, content, lineno,
         content_offset, block_text, state, state_machine):
     """




reply via email to

[Prev in Thread] Current Thread [Next in Thread]