Choosing LaTeX as the text formatter and processor, becomes natural the use of BibTeX to manage references and bibliography.
So, in an university, problably there are some hundreds of bib files, and normally some of them are huge. This, sometimes, makes bib files hard to use and manage. The need for some tool or mechanism capable of dealing with the problem arises.
This work is about building such a tool. We built a tool capable of providing means to navigate inside a bib file, in a linear or structural way.
The idea was to use WWW browsers to navigate and thus serving two needs: navigation inside a bib file and making that information available to the comunity. This way, our problem turned to be the development of a bibtex processor, that generates index structures and produces parametrized trees of HTML pages.
The developed tool can produce three different indexes, ordered by author, subject and bibtex, and one individual page for each bibitem in the bibtex file.
Perl was the language chosen to develop the tool, due to its orientations towards text processing, record processing and easy and powerful file manipulation.
To invoke the tool one must respect the following syntax:
dbib [-s] [-a] -[b] [-sdp] thesaurus bibfile [doc_pages_dir] -s generate subject index -a generate author index -b generate bibtex list -sdp single doc page (bibfile.dp.html)
As you may see, you must invoke 'dbib' with two arguments, all the others are optional:
The switches control the index generation and the individual HTML page generation.
Switches -s, -a, and -b work in conjunction. If none of them is supplied all the index files will be generated. If one or two of them are supplied, only the index files bound to those switches will be generated.
Concerning output, we can distinguish two major different ways of functionning:
We can think of two situations to apply these modes. If you have small bib file, let's say, with about 10 to 20 bibitems, you are advised to use the single mode. If you a larger bib file it's advisable to use the multipage mode.
Switch -sdp, selects single mode. Multipage mode is the default mode.
We had to be careful with the names of the files to prevent overwriting, so we use the name of the bibtex file as a prefix which is concatenated with the apropriate string in each case:
Here is a list of fields, that you can add to each bibitem. None of them is needed but if you supply them you'll end up with a richer output:
keyword = "perl, tool, text processing",
url = "http://www.di.uminho.pt/~jj/bib/dbib.ps",
Author index is based in the "author" field of bibtex items. Author field may have:
Names can be introduced in normal order (Ex: J.J. Dias Almeida) or normalized notation (Ex: Almeida, J.J. Dias).
In author index of dbib all names are normalized and sorted; no miracles are made in order to guess that "J. Almeida" is tha same as "J.J. Dias Almeida" so you must be aware of what you are writting
DBIB will give a warning for every keyword not present in the Thesaurus. Although that keyword will show in the index as a top subject.
The generated index contains:
The thesaurus files defines the set of valid keywords (term). A term may be associated to:
A term is valid if:
term * description line (optional) # url (optional) = sinonymos (optional) > specific terms (optional)
The special caracters (\verb"*#=>") must be in the beginnig of the line.
Configuration files are not yet available.
Some tool are planed to improve thesaurus and bibtex construction.
A list of the original files is presented in the following together with some images of the HTML pages generated.
Document Processing > Project, Specification and Programming Language, Paradigms Project * Related Projects > camila, DAVID = project Specification and Programming Language * Languages related to this framework > camila, SGML, Perl, LaTeX, ODA = formal specification Paradigms > Literate Programming LaTeX * text processor and programming tool = latex ODA * Open Document Architecture = oda Literate Programming * Documenting while programming = literate programming Perl * programming language = perl SGML * standard generalized markup language (ISO 8879) = sgml camila * porject and tool - A Platform for Software Mathematical Development # http://www.di.uminho.pt/~lsb/camila.html DAVID * project - document specification and manipulation # http://www.di.uminho.pt/~jcr/projectos/david/princ.html = david
\newpage
@book{barbosa95, author = "Luis Barbosa and J.J. Almeida", title = "System Prototyping in CAMILA", year = 1995, note = "Lecture notes for the system Design Course, Computer System Engineering, University of Bristol", publisher="University of Minho", url="http://www.di.uminho.pt/~lsb/camila.ps.gz", keyword = "camila, formal specification", } @InProceedings{DAVID95, author = "J.C. Ramalho and J.J. Almeida and P.R. Henriques", title = "DAVID - Algebraic Specification of Documents", booktitle = "TWLT10 - Algebraic Methods in Language Processing - AMiLP95", year = "1995", editor = "A.Nijholt & G.Scollo & R.Steetskamp", number = "10", series = "Twente Workshop on Language Technology", address = "Twente University - Holland", month = "Dec.", keyword = "david,camila,sgml,formal specification,perl,project", abstract = "It is becoming normal that a document should serve several purposes. However, the majority of available text processors is purpose-oriented, reducing the necessary flexibility and reusability of documents. Some waste of time arises from adapting the same text to each different purpose, when this task could be done automatically (from the first version of the document) with an appropriate system. ... We intend to build on camila (a specification language and prototyping environment developed at Universidade do Minho, by the Computer Science group) developing the above mentioned system as one of its extensions.", } ...