Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
HXCITE-MKBIB(1) 		 HTML-XML-utils 		 HXCITE-MKBIB(1)

NAME
     hxcite-mkbib - expand references and create bibliography

SYNOPSIS
     hxcite-mkbib [ -b base ] [ -p pattern ] [ -s separator ] bibfile [ file ]

DESCRIPTION
     The  hxcite-mkbib	commands  copies  file	to  standard output, looking for
     strings of the form "[[label]]" and for a template for a bibliography.  The
     label  may  not  include white space and the double pair of square brackets
     must enclose the label without any spaces in between. If hxcite-mkbib finds
     the label in the bibfile, the string is replaced by the pattern.  The  pat-
     tern  can	include certain variables. If the label is not found in bibfile,
     it is left unchanged.

     The default pattern replaces the string with a hyperlink, but if the -p op-
     tion is used, the replacement can be any pattern. The  input  doesn't  even
     have to be HTML.

     The file consists of three parts:

     preamble  The  preamble  is the part up to the first occurrence of %{.  The
	       preamble is copied to the  output  once	(with  bracketed  labels
	       ("[[label]]") expanded). The character % is treated specially. To
	       create  a single % in the output, there must be two in the pream-
	       ble (%%). All other occurrences of % followed by  another  letter
	       are  not copied, but are collected into a string called the "sort
	       order." and used 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 en-
	       tries  in  bibfile  that  correspond to bracketed labels in file.
	       Variables in the template are replaced by the corresponding field
	       in the bibliographic entry: all occurrences of  %x  will  be  re-
	       placed by the field %x of the entry. Parts of the text may be en-
	       closed  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 labels in file, except that labels 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 a file that creates a bibliography in HTML format:

	 <html>
	 <title>Bibliography</title>
	 ... text with [[references]] here...
	 <!--%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  oth-
     erwise.   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:

     -p pattern
	       Specifies  the pattern by which the string [[label]] is replaced.
	       The pattern may include the variables %b (which will be	replaced
	       by  the value of the -b option) and %L (which will be replaced by
	       the label).  The default pattern is

		   <a href="%b#%L" rel="biblioentry">[%L]</a>

     -b base   Sets the value for the %b variable in the pattern. Typically this
	       is set to a relative or absolute URL. By default this value is an
	       empty string.

     -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  sepa-
	       rator  is  "; " (i.e., a semicolon and a space). With this option
	       the separator can be changed.

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 compared to the bracketed labels. (Entries  with-
	       out such a field will be ignored.)

     file      The  name  of  the  input file is optional. If absent, hxmkbib(1)
	       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), hxmkbib(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  gener-
     ate  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  appropri-
     ate for other formats.

     hxcite-mkbib  is a (bash) shell script that calls hxcite(1) and hxmkbib(1),
     and is therefore not portable to all platforms.

7.x				   10 Jul 2011			 HXCITE-MKBIB(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hxcite-mkbib&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help