Provided by: html-xml-utils_7.7-1_amd64 bug

NAME

       hxmkbib - create bibliography from a template

SYNOPSIS

       hxmkbib  [  -s  separator  ] [ -a auxfile ] [ -n maxauthors ] [ -r moreauthors ] bibfile [
       templatefile ]

DESCRIPTION

       The hxmkbib commands reads a list of bibliographic keys (labels) from auxfile,  finds  the
       corresponding  entries  in  bibfile  and  creates  a bibliography, using templatefile as a
       model. The auxfile may, e.g., have been created by hxcite(1).  It consists of labels,  one
       per  line.  The bibfile is a refer(1) style database.  hxmkbib looks for entries with a %L
       field equal to a key in the auxfile.

       The templatefile consists of three parts:

       preamble  The preamble is the part up to the first occurrence  of  %{.   The  preamble  is
                 copied to the output unchanged, except for occurrences of %.  To create a single
                 % in the output, there must be two in the preamble (%%). All  other  occurrences
                 of  % followed by another letter are not copied, but are collected into a string
                 called the "sort order." and use to sort the entries, as explained below.

       template  The template starts with %{L: and ends with a matching %}.  The text in  between
                 is copied as often as there are bibliographic entries in bibfile that correspond
                 to keys in auxfile.  Variables in the template are replaced by the corresponding
                 field  in the bibliographic entry: all occurrences of %x will be replaced by the
                 field %x of the entry. Parts of the text may be enclosed in %{x: and  %}.   This
                 means  that the text in between should only be output if the current entry has a
                 field x.  Text that is enclosed in %{!x: and %} will only be output if the entry
                 does not have a field x.  Both kinds of conditional sections may also be nested.

       postamble The text after the %} is copied unchanged to the output, after all bibliographic
                 entries have been processed.

       By default bibliographic entries are copied to the output in the  order  of  the  keys  in
       auxfile,  except  that  keys that occur more than once are only used once. If the preamble
       contains occurrences of %x (where x is neither "%" nor "{") then these together  determine
       the sort order.  E.g., if the preamble contains %A%D then the entries will be sorted first
       on field A (author) and then on field D (date).

       Here is an example of template file that creates a bibliography in HTML format:

           <html>
           <title>Bibliography</title>
           <!--%A%D sorted on author, then date -->
           <dl>
           %{L:
           <dt id="%L">%{A:%A%}%{!A:%{E:%E%}%{!E:%{Q:%Q%}%{!Q:-%}%}%}</dt>
           <dd>%{B:"%T"
             in: %{E:%E (eds)
             %}<cite>%B.</cite>%{V: %V.%}
             %}%{J:"%T"
             in: %{E:%E (eds)
             %}<cite>%J.</cite>%{V: %V.%}%{N: %N.%}%{P: pp. %P.%}
             %}%{!B:%{!J:<cite>%T.</cite>
             %}%}%{I:%I.
             %}%{D:%D.
             %}%{C:%C.
             %}%{R:%R.
             %}%{S:%S.
             %}%{O:%O
             %}%{U:<a href="%U">%U</a>
             %}</dd>
           %}
           </dl>
           </html>

       This template starts with four lines of preamble, including the sort string %A%D  on  line
       3. The sort string itself will not be output, but the rest of the comment will.

       From  the  line  %{L:  to the line %} is the template. E.g., the line that starts with <dt
       id=...  contains a complex conditional text that prints the authors (%A) if there are any,
       otherwise  the editors (%E) if there are any, otherwise the institution that is the author
       (%Q), if any, and a dash otherwise.  Note how the parts are nested, Most of  the  text  is
       inside  %{!A:...%},  meaning  that  that part will only be effective if there is no author
       field (%A).

       The final two lines are the postamble and will simply be copied unchanged.

       A bibliographic entry that looks like this in bibfile:

           %L Java
           %A Gosling, James
           %A Joy, Bill
           %A Steele, Guy
           %T The Java language specification
           %D 1998
           %I Addison-Wesley
           %U http://java.sun.com/docs/books/jls/index.html

       will be printed by the template above as:

           <dt id="Java">Gosling, James; Joy, Bill; Steele, Guy</dt>
           <dd><cite>The Java language specification.</cite>
             Addison-Wesley.
             1998.
             <a href="http://java.sun.com/docs/books/jls/index.html">http://java.sun.com/docs/books/jls/index.html</a>
             </dd>

OPTIONS

       The following options are supported:

       -a auxfile
                 The file that contains the list of keys (labels) for which bibliographic entries
                 should be printed. If the option is absent, the name of this file is formed from
                 the templatefile argument by removing the last extension and adding .aux.  If no
                 templatefile is given, the default auxfile is aux.aux.

       -s separator
                 If there are multiple authors or editors in an entry, their names will be listed
                 with a separator in between. By default the separator is "; " (i.e., a semicolon
                 and a space). With this option the separator can be changed.

       -n maxauthors
                 If  there  are  more  than maxauthors authors in an entry, only the first author
                 will be printed and the others will be replaced by the string moreauthors.   The
                 default is 3.

       -r moreauthors
                 The  string  to  print if there are more than maxauthors authors. The default is
                 "et al.".

OPERANDS

       The following operands are supported:

       bibfile   The name of a bibliographic database must  be  given.  It  must  be  a  file  in
                 refer(1)  format and every entry must have at least a %L field, which is used as
                 key. (Entries without such a field will be ignored.)

       templatefile
                 The name of the input file  is  optional.  If  absent,  hxmkbib  will  read  the
                 template from stdin.

DIAGNOSTICS

       The following exit values are returned:

       0         Successful completion.

       > 0       An error occurred. Usually this is because a file could not be opened or because
                 the %{ and %} pairs are not properly nested.  Very rarely it may also be an  out
                 of memory error. Some of the possible error messages:

       missing ':' in pattern
                 hxmkbib found a %{ but the second or third letter after it was not a colon.

       no '%{' in template file
                 The template file is unusable, because it contains no template.

       unbalanced %{..%} in pattern
                 There are more %{ than %}.

SEE ALSO

       asc2xml(1),   hxcite(1),   hxnormalize(1),  hxnum(1),  hxprune(1),  hxtoc(1),  hxunent(1),
       xml2asc(1), UTF-8 (RFC 2279)

BUGS

       Sorting is primitive: the program doesn't parse dates or names and simply sorts "Jan 2000"
       under  the  letter  "J"  and  "Albert Camus" under the letter "A". For the moment the only
       work-around is to put names in the bibfile as "Camus, Albert".

       The program simply lists all authors or editors. There is no way to generate an "et.  al."
       after  the  third  one.  The  work-around is to put the "et. al." in the bibfile.  Putting
       commas between the first authors and the word "and" before  the  final  one  is  also  not
       possible.

       The  program  doesn't  try  to  interpret  names  of authors or editors and they cannot be
       reformatted. It is impossible to write a name that is specified as "Sartre, Jean-Paul"  in
       the bibfile as "J. Sartre" or as "Jean-Paul Sartre" in the output.

       There  is  no  way  to  suppress  a  period after a field if the field already ends with a
       period. E.g., the template "%{A:A.%}" may generate "A. Person Jr.." if the author  is  "A.
       Person Jr." The only option is to either not put periods in the bibfile or not put periods
       in the template.

       Entries in the bibfile can only be used if they have  a  %L  (label)  field.  The  program
       cannot find entries by searching for keywords, like refer(1).

       hxmkbib  will replace any ampersands (&) and less-than (<) and greater-than (>) signs that
       occur in the bibfile by their XML entities &amp; &lt; &gt;  on  the  assumption  that  the
       template is HTML/XML. This may not be appropriate for other formats.