|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
from plugins import TexModule
|
|
Packit Service |
76cb02 |
from bibtex import BibTex
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
class BibSect(BibTex):
|
|
Packit Service |
76cb02 |
def __init__(self, doc, bibaux, bibfiles, bibstyle):
|
|
Packit Service |
76cb02 |
self.bibfiles = bibfiles.split(",")
|
|
Packit Service |
76cb02 |
self.bibstyle = bibstyle
|
|
Packit Service |
76cb02 |
self.bibaux = bibaux
|
|
Packit Service |
76cb02 |
BibTex.__init__(self, doc, {}, bibaux)
|
|
Packit Service |
76cb02 |
for bib in self.bibfiles:
|
|
Packit Service |
76cb02 |
self.add_db(bib)
|
|
Packit Service |
76cb02 |
if self.bibstyle:
|
|
Packit Service |
76cb02 |
self.set_style(self.bibstyle)
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
class BibNull(BibSect):
|
|
Packit Service |
76cb02 |
"""
|
|
Packit Service |
76cb02 |
Null biblio section having no bibfile
|
|
Packit Service |
76cb02 |
"""
|
|
Packit Service |
76cb02 |
def __init__(self, doc, bibaux):
|
|
Packit Service |
76cb02 |
pass
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
def pre_compile(self):
|
|
Packit Service |
76cb02 |
return 0
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
def post_compile(self):
|
|
Packit Service |
76cb02 |
return 0
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
class Bibtopic(TexModule):
|
|
Packit Service |
76cb02 |
def __init__(self, doc, dict):
|
|
Packit Service |
76cb02 |
self.doc = doc
|
|
Packit Service |
76cb02 |
self.btsects = []
|
|
Packit Service |
76cb02 |
doc.parser.add_hook("begin{btSect}", self.add_sect)
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
# If loaded from a sect, register this sect too
|
|
Packit Service |
76cb02 |
if dict["name"] == "begin{btSect}":
|
|
Packit Service |
76cb02 |
self.add_sect(dict)
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
def add_sect(self, dict):
|
|
Packit Service |
76cb02 |
bibaux = "%s%d" % (self.doc.src_base, len(self.btsects) + 1)
|
|
Packit Service |
76cb02 |
if dict["arg"]:
|
|
Packit Service |
76cb02 |
btsect = BibSect(self.doc, bibaux, dict["arg"], dict["opt"])
|
|
Packit Service |
76cb02 |
else:
|
|
Packit Service |
76cb02 |
btsect = BibNull(self.doc, bibaux)
|
|
Packit Service |
76cb02 |
self.btsects.append(btsect)
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
def pre_compile(self):
|
|
Packit Service |
76cb02 |
rc = 0
|
|
Packit Service |
76cb02 |
for bib in self.btsects:
|
|
Packit Service |
76cb02 |
rc += bib.pre_compile()
|
|
Packit Service |
76cb02 |
return rc
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
def post_compile(self):
|
|
Packit Service |
76cb02 |
rc = 0
|
|
Packit Service |
76cb02 |
for bib in self.btsects:
|
|
Packit Service |
76cb02 |
rc += bib.post_compile()
|
|
Packit Service |
76cb02 |
return rc
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
|
|
Packit Service |
76cb02 |
class Module(Bibtopic):
|
|
Packit Service |
76cb02 |
"""
|
|
Packit Service |
76cb02 |
Module to load to handle bibtopic
|
|
Packit Service |
76cb02 |
"""
|
|
Packit Service |
76cb02 |
|