1
0
Fork 0
doc/devel/scheme/bibliography/bibliography.en.tm

311 lines
10 KiB
Plaintext
Raw Normal View History

2011-08-28 15:59:50 +08:00
<TeXmacs|1.0.7.4>
<style|tmdoc>
<\body>
<tmdoc-title|Writing <TeXmacs> bibliography styles>
<section|Introduction>
<TeXmacs> admits support both for <BibTeX> and a native tool for managing
bibliographies. <BibTeX> styles are denoted by their usual names. <TeXmacs>
styles are prefixed by <verbatim|tm->. For example, the <TeXmacs>
<verbatim|<group|tm-plain>> style is the replacement for the <BibTeX>
<verbatim|plain> style. Equivalents for the following <BibTeX> styles have
been implemented: <verbatim|abbrv>, <verbatim|alpha>, <verbatim|ieeetr>,
<verbatim|plain> et <verbatim|siam>. These styles can therefore be used
without installation of <BibTeX>.
New bibliography styles can be defined by the user. Each style is
associated to a<nbsp>unique <scheme> file, which should be added to the
directory <verbatim|$TEXMACS_PATH/prog/bibtex>. Style files are treated as
regular Scheme programs. Since the creation of a style file from scratch is
a complex task, we recommend you customize existing style files or modules.
In the next sections, we will describe the creation of a new style on a
simple example and give a detailed lists of available <scheme> functions
which facilitate the creation of new styles.
<section|Example of a simple blibliography style>
Bibliographic style files are stored in directory
<verbatim|$TEXMACS_PATH/progs/bibtex>. They have the name of the style
followed with extension <verbatim|.scm>. For example,
<verbatim|example.scm> is the file name associated to the style
<verbatim|example>, which is denoted by <verbatim|tm-example> when it is
used in a <TeXmacs> document.
All style files must be declared as a module as follows:
<\scm-fragment>
(texmacs-module (bibtex example)
\ \ (:use (bibtex bib-utils)))
</scm-fragment>
The module <verbatim|bib-utils> contains all usefull fonctions needed to
write bibliographic styles.
All style files must me declared as a bibliographic style as follows:
<scm-fragment|(bib-define-style "example" "plain")>
The first argument to <scm|bib-define-style> is the name of the current
style. The second argument is the name of a fall-back style,
<verbatim|plain> in our case. If a function is not defined in current
style, the function from the fall-back style is used instead. Hence, the
following minimalistic style file behaves in an identical way as the
<verbatim|plain> style:
<\scm-fragment>
(texmacs-module (bibtex example)
\ \ (:use (bibtex bib-utils)))
\;
(bib-define-style "example" "plain")
</scm-fragment>
Each formatting function defined in the default style can be overloaded in
the current style. For example, the function <scm|bib-format-date> is used
to format the date in the <verbatim|plain> style. It is redefinable in our
example style as follows:
<\scm-fragment>
(tm-define (bib-format-date e)
\ \ (:mode bib-example?)
\ \ (bib-format-field e "year"))
</scm-fragment>
All exported functions must be prefixed with <verbatim|bib->. Overloaded
functions must be followed with directive <scm|(:mode bib-example?)>, in
which <verbatim|example> is the name of the current style.
Our complete example file <verbatim|example.scm> is as follows:
<\scm-fragment>
(texmacs-module (bibtex example)
\ \ (:use (bibtex bib-utils)))
\;
(bib-define-style "example" "plain")
\;
(tm-define (bib-format-date e)
\ \ (:mode bib-example?)
\ \ (bib-format-field e "year"))
</scm-fragment>
It behaves in a similar way as the <verbatim|plain> style, except that all
dates are formatted according to our custom routine.
<section|<scheme> functions for writing bibliography styles>
<subsection|Style management>
<\explain>
<scm|(bib-define-style name default)><explain-synopsis|style declaration>
<|explain>
This function declares a style called <scm|name> (string) with fall-back
style <scm|default> (string). The style is selected by choosing
<verbatim|tm-><scm|name> when adding a bibliography to a document.
Whenever a<nbsp>formatting function is not defined in the current style,
its definition in the fall-back style is used as replacement.
</explain>
<\explain>
<scm|(bib-with-style style expr)><explain-synopsis|local style>
<|explain>
This function evaluates expression <scm|expr> as if the current style
were <scm|style> (string).
</explain>
<subsection|Field related routines>
<\explain>
<scm|(bib-field entry field)><explain-synopsis|field data>
<|explain>
This function creates a <TeXmacs> tree corresponding to the field
<scm|field> (string) of entry <scm|entry> without format. In some cases,
the output is special:
<\itemize-dot>
<item>If <scm|field> is <scm|"author"> or <scm|"editor">, we return a
tree with label <verbatim|bib-names> followed by a list of author
names; each author name is a tree with label <verbatim|bib-name>
containing four elements: first name, particule (von), last name and
suffix (jr);
<item>If <scm|field> is <scm|"page">, then we return a list of
integers: the empty list, or a singleton with a page number, or a pair
corresponding to a pages interval.
</itemize-dot>
</explain>
<\explain>
<scm|(bib-format-field entry field)><explain-synopsis|basic format>
<|explain>
This function creates a <TeXmacs> tree corresponding to the field
<scm|field> (string) of entry <scm|entry>, with basic format.
</explain>
<\explain>
<scm|(bib-format-field-Locase entry field)><explain-synopsis|special
format>
<|explain>
This function is similar to <scm|bib-format-field> ; but field are
formatted in lower case with an upper case letter at the beginning.
</explain>
<\explain>
<scm|(bib-empty? entry field)><explain-synopsis|null-test of a field>
<|explain>
This function returns boolean <scm|#t> if the field <scm|field> (string)
of entry <scm|entry> is empty or absent; it returns <scm|#f> in the other
cases.
</explain>
<subsection|Routines for structuring the output>
<\explain>
<scm|(bib-new-block tm)><explain-synopsis|new block>
<|explain>
This function creates a<TeXmacs> tree consisting of a block containing
<TeXmacs> tree <scm|tm>.
</explain>
<\explain>
<scm|(bib-new-list sep ltm)><explain-synopsis|separated list>
<|explain>
This function creates a <TeXmacs> tree which is the concatenation of all
the elements of list <scm|ltm> separated with <TeXmacs> tree <scm|sep>.
</explain>
<\explain>
<scm|(bib-new-list-spc ltm)><explain-synopsis|blank separated list>
<|explain>
This function is equivalent to the evaluaton of <scm|(bib-new-list " "
ltm)>.
</explain>
<\explain>
<scm|(bib-new-sentence ltm)><explain-synopsis|new sentence>
<|explain>
This function creates a <TeXmacs> tree corresponding to a sentence
containing all the elements of list <scm|ltm> separated by commas.
</explain>
<subsection|Routines for textual manipulations>
<\explain>
<scm|(bib-abbreviate name dot spc)><explain-synopsis|name abbreviation>
<|explain>
This function creates a <TeXmacs> tree corresponding to the abbreviation
of the name contained in <scm|name> <TeXmacs> tree: it retrieves the list
of first letters of each word, followed by <scm|dot> (<TeXmacs> tree) and
separated by <scm|spc> (<TeXmacs> tree).
</explain>
<\explain>
<scm|(bib-add-period tm)><explain-synopsis|dot>
<|explain>
This function creates a <TeXmacs> tree with a dot at the end of <scm|tm>.
</explain>
<\explain>
<scm|(bib-default tm)><explain-synopsis|default <TeXmacs> tree>
<|explain>
This function creates a <TeXmacs> tree without label
<verbatim|keep-case>.
</explain>
<\explain>
<scm|(bib-emphasize tm)><explain-synopsis|italic>
<|explain>
This function creates a <TeXmacs> tree corresponding to the italic
version of <scm|tm>.
</explain>
<\explain>
<scm|(bib-locase tm)><explain-synopsis|lower case>
<|explain>
This function creates a <TeXmacs> tree, which is equal to <scm|tm> with
all letters in lower case, except for those within <verbatim|keep-case>
blocks.
</explain>
<\explain>
<scm|(bib-prefix tm nbcar)><explain-synopsis|beginning of a <TeXmacs>
tree>
<|explain>
This function returns a string containing the first <scm|nbcar>
characters of <scm|tm>.
</explain>
<\explain>
<scm|(bib-upcase tm)><explain-synopsis|upper case>
<|explain>
This function creates a <TeXmacs> tree, which is equal to <scm|tm> with
all letters in upper case, except for those within <verbatim|keep-case>
blocks.
</explain>
<\explain>
<scm|(bib-upcase-first tm)><explain-synopsis|upper case first letter>
<|explain>
This function creates a <TeXmacs> tree, which is equal to <scm|tm> with
its first letter in upper case, except inside <verbatim|keep-case>
blocks.
</explain>
<subsection|Miscellaneous routines>
<\explain>
<scm|(bib-null? v)><explain-synopsis|null-test>
<|explain>
This function returns boolean <scm|#t> if value <scm|v> is empty; it
returns <scm|#f> in the other cases.
</explain>
<\explain>
<scm|(bib-purify tm)><explain-synopsis|flattening of a <TeXmacs> tree>
<|explain>
This function returns a string made of all letters of the <TeXmacs> tree
<scm|tm>.
</explain>
<\explain>
<scm|(bib-simplify tm)><explain-synopsis|simplification of a <TeXmacs>
tree>
<|explain>
This function returns a <TeXmacs> tree corresponding to the
simplification of <TeXmacs> tree <scm|tm>.
</explain>
<\explain>
<scm|(bib-text-length tm)><explain-synopsis|length of a <TeXmacs> tree>
<|explain>
This function returns the length of <TeXmacs> tree <scm|tm>.
</explain>
<\explain>
<scm|(bib-translate msg)><explain-synopsis|translation>
<|explain>
This function translates the string message <scm|msg> from english into
the current language.
</explain>
</body>
<\initial>
<\collection>
<associate|language|english>
<associate|preamble|false>
</collection>
</initial>