


bibtex(n)                     bibtex                    bibtex(n)


______________________________________________________________________________

NAME
       bibtex - Parse bibtex files

SYNOPSIS
       package require Tcl  8.4

       package require bibtex  ?0.5?

       ::bibtex::parse ?options? ?text?

       ::bibtex::parse text

       ::bibtex::parse ?-command cmd? -channel chan

       ::bibtex::parse  ?-recordcommand    recordcmd? ?-preamblecommand pream-
       blecmd?  ?-stringcommand    stringcmd?  ?-commentcommand    commentcmd?
       ?-progresscommand progresscmd? (text | -channel chan)

       ::bibtex::wait token

       ::bibtex::destroy token

       ::bibtex::addStrings token stringdict

_________________________________________________________________

DESCRIPTION
       This  package  provides  commands  for the parsing of bibliographies in
       BibTeX format.

       ::bibtex::parse ?options? ?text?
              This is the general form of the command for parsing a bibliogra-
              phy.  Depending  on the options used to invoke it it will either
              return a token for the parser, or  the  parsed  entries  of  the
              input  bibliography.  Instead  of  performing an immediate parse
              returning a predefined format the  command  can  also  enter  an
              event-based  parsing  style  where  all  relevant entries in the
              input are reported through callback commands, in  the  style  of
              SAX.

       ::bibtex::parse text
              In  this form the command will assume that the specified text is
              a bibliography in BibTeX format, parse it,  and  then  return  a
              list  containing  one element per record found in the bibliogra-
              phy. Note that comments,  string  definitions,  preambles,  etc.
              will  not  show  up  in the result.  Each element will be a list
              containing record type, bibliography key  and  record  data,  in
              this  order.  The record data will be a dictionary, its keys the
              keys of the record, with the associated values.

       ::bibtex::parse ?-command cmd? -channel chan
              In this form the command will reads the  bibliography  from  the



bibtex                         0.5                              1





bibtex(n)                     bibtex                    bibtex(n)


              specified Tcl channel chan and then returns the same data struc-
              ture as described above.

              If however the option -command is specified the result will be a
              handle  for the parser instead and all processing will be incre-
              mental and happen in the background. When  the  input  has  been
              exhausted  the  callback  cmd will be invoked with the result of
              the parse. The exact definition for the callback is


              cmd token parseresult
                     The parse result will have the structure explained above,
                     for the simpler forms of the parser.

       Note  that the parser will not close the channel after it has exhausted
       it. This is still the responsibility of the user of the parser.

       ::bibtex::parse ?-recordcommand    recordcmd?  ?-preamblecommand
       preamblecmd?            ?-stringcommand    stringcmd?  ?-commentcommand
       commentcmd? ?-progresscommand progresscmd? (text | -channel chan)
              This is the most low-level form for  the  parser.  The  returned
              result  will  be  a  handle for the parser. During processing it
              will invoke the invoke the specified callback commands for  each
              type of data found in the bibliography.

              The  processing will be incremental and happen in the background
              if, and only if a Tcl channel chan is specified. For a text  the
              processing  will  happen  immediately  and all callbacks will be
              invoked before the command itself returns.

              The callbacks, i.e. *cmd, are all command prefixes and  will  be
              invoked  with additional arguments appended to them. The meaning
              of the arguments depends on the callback and is explained below.
              The  first  argument  will  however  always be the handle of the
              parser invoking the callback.

              recordcmd token type key recorddict
                     This callback is invoked whenever the  parser  detects  a
                     bibliography  record  in the input. Its arguments are the
                     record type, the bibliography key for the record,  and  a
                     dictionary  containing the keys and values describing the
                     record. Any  string  macros  known  to  the  parser  have
                     already been expanded.

              preamblecmd token preambletext
                     This  callback  is invoked whenever the parser detects an
                     @preamble block in the input. The only  additional  argu-
                     ment  is the text found in the preamble block. By default
                     such entries are ignored.

              stringcmd token stringdict
                     This callback is invoked whenever the parser  detects  an
                     @string-based macro definition in the input. The argument
                     is a dictionary with the macro names as  keys  and  their



bibtex                         0.5                              2





bibtex(n)                     bibtex                    bibtex(n)


                     replacement  strings  as  values. By default such defini-
                     tions are added to the parser state  for  use  in  future
                     bibliography records.

              commentcmd token commenttext
                     This  callback  is  invoked whenever the parser detects a
                     comment in the input. The only additional argument is the
                     comment text. By default such entries are ignored.

              progresscmd token percent
                     This  callback  is  invoked during processing to tell the
                     user about the progress which has been made. Its argument
                     is  the  percentage  of data processed, as integer number
                     between 0 and 100.  In the case of incremental processing
                     the  perecentage will always be -1 as the total number of
                     entries is not known beforehand.


       ::bibtex::wait token
              This command waits for the parser represented by  the  token  to
              complete  and  then  returns.  The  returned result is the empty
              string.

       ::bibtex::destroy token
              This command cleans up all internal state  associated  with  the
              parser  represented  by the handle token, effectively destroying
              it. This command can be called from within the parser  callbacks
              to terminate processing.

       ::bibtex::addStrings token stringdict
              This command adds the macro definitions stored in the dictionary
              stringdict to the parser represented by the handle token.

              The dictionary keys are the macro names  and  the  values  their
              replacement  strings. This command has the correct signature for
              use as a -stringcommand callback in an invokation of the command
              ::bibtex::parse.


BUGS, IDEAS, FEEDBACK
       This  document,  and the package it describes, will undoubtedly contain
       bugs and other problems.  Please report such in the category bibtex  of
       the          Tcllib         SF         Trackers         [http://source-
       forge.net/tracker/?group_id=12883].  Please also report any  ideas  for
       enhancements you may have for either package and/or documentation.

KEYWORDS
       bibliography, bibtex, parsing, text processing

CATEGORY
       Text processing

COPYRIGHT
       Copyright (c) 2005 for documentation, Andreas Kupries <andreas_kupries@users.sourceforge.net>



bibtex                         0.5                              3





bibtex(n)                     bibtex                    bibtex(n)



























































bibtex                         0.5                              4


