From f6712eaaa8e3e14bf8b36a7ab9b83742ffc6d570 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 18 May 2010 19:07:14 +0000 Subject: Another fix to make anonbib.bib into valid bibtex. Apparently, when you have a crossref in a bibtex file, the thing you refer to needs to be defined _after_ you use it. Wild! This patch and the previous one are derived from a patch by Eugene Vasserman. svn:r340 --- BibTeX.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'BibTeX.py') diff --git a/BibTeX.py b/BibTeX.py index c87cb12..51dd5b8 100644 --- a/BibTeX.py +++ b/BibTeX.py @@ -85,6 +85,9 @@ class BibTeX: seen[cr.key] = 1 del ent.entries['crossref'] + if cr.entryLine < ent.entryLine: + print "Warning: crossref %s used after declaration"%cr.key + for k in cr.entries.keys(): if ent.entries.has_key(k): print "ERROR: %s defined both in %s and in %s"%( @@ -273,6 +276,7 @@ class BibTeXEntry: self.type = type # What kind of entry is it? (@book,@injournal,etc) self.key = key # What key does it have? self.entries = entries # Map from key to value. + self.entryLine = 0 # Defined on this line number def get(self, k, v=None): return self.entries.get(k,v) def has_key(self, k): @@ -1158,6 +1162,7 @@ class Parser: for i in xrange(1,len(v),2): d[v[i].lower()] = v[i+1] ent = BibTeXEntry(self.curEntType, key, d) + ent.entryLine = self.entryLine self.result.addEntry(ent) return line -- cgit v1.2.3-70-g09d2