BibtexPlugin

Disclaimer

This plugin is fork from the TWiki:Plugins/EmbedBibPlugin by TWiki:Main/DonnyKurniawan. As it has been rewritten in major parts and stuff has been renamed. BTW, the new name seems more appropriate.

Synopsis

This is a plugin that you can use to embed BibTeX entries in Foswiki. It uses BibTool (by Gerd Neugebauer) and Bib2bib and Bibtex2html

Preview

You type
%BIBTEX{select="author:'Moresi'"}%
you get

(simulated)
bibtex select example

(if installed)
[WeinbergEtal03]
R. F. Weinberg, L. Moresi, and P. van der Borgh. Timing of deformation in the norseman-wiluna belt, yilgarn craton, western australia. Precambrian Res, 120 (3-4):219--239, 2003.
[VezolainenEtal03]
A.V. Vezolainen, V. S. Solomatov, Head J.W., A. T. Basilevsky, and L. N. Moresi. Timing of formation of beta regio and its geodynamical implications. J. Geoph. Res., 108:Art no 5002, 2003.
[SolomatovMoresi02]
V. S. Solomatov and L. N. Moresi. Small-scale convection in the d ” layer. J. Geoph. Res., 107:Art no 2016, 2002.

You type
%STARTBIBTEX{abstracts="on" keywords="on"}%
@Article{DeLange:EPODD-6-3-241,
  author =       "Rudi W. De Lange and Hendry L. Esterhuizen and Derek
                 Beatty",
  title =        "Performance differences between {Times} and
                 {Helvetica} in a reading task",
  journal =      "Electronic Pub\-lish\-ing\emdash{}Orig\-i\-na\-tion,
                 Dissemination, and Design",
  volume =       "6",
  number =       "3",
  pages =        "241--248",
  month =        sep,
  year =         "1993",
  CODEN =        "EPODEU",
  ISSN =         "0894-3982",
  bibdate =      "Sat Jan 06 18:28:52 1996",
  abstract =     "Typographers and printers often regard seriffed or
                 roman typefaces as more legible and appropriate for
                 reading material than typefaces without serifs. Authors
                 contend that readers prefer roman above sans serif,
                 that it is read faster, and that the comprehension rate
                 is possibly higher when text is set in a roman
                 typeface. The absence of satisfactory empirical data to
                 prove these assumptions, and the importance of
                 legibility in academic reading material, motivated this
                 study. The aim of the study was to determine the
                 comparative legibility of sans serif and roman
                 typefaces. Four hundred and fifty primary school
                 subjects from nine different schools were used in a
                 control group pre-test, post-test research design where
                 four different experiments were completed. Romans and
                 sans serifs were found to be equally legible, as no
                 significant statistical difference was found between
                 the reading speed, scanning speed, accuracy and
                 comprehension at the 0.05 level. These results are in
                 contrast to the assumption that romans are more legible
                 than sans serifs. They can be interpreted as promising
                 for graphic designers and typographers, as it appears
                 that legibility will not necessarily be sacrificed when
                 certain reading material is set in a sans serif
                 typeface.",
  keywords =     "Legibility, Sans serif typeface, Roman typeface,
                 Reading task, Times Roman, Helvetica",
  annote =       "Never thought there is a difference",
}
%STOPBIBTEX%
you get

(simulated)
bibtex inline example

(if installed)
[LangeEtal93]
Rudi W. De Lange, Hendry L. Esterhuizen, and Derek Beatty. Performance differences between Times and Helvetica in a reading task. Electronic PublishingOrigination, Dissemination, and Design, 6(3):241--248, September 1993.
Abstract: Typographers and printers often regard seriffed or roman typefaces as more legible and appropriate for reading material than typefaces without serifs. Authors contend that readers prefer roman above sans serif, that it is read faster, and that the comprehension rate is possibly higher when text is set in a roman typeface. The absence of satisfactory empirical data to prove these assumptions, and the importance of legibility in academic reading material, motivated this study. The aim of the study was to determine the comparative legibility of sans serif and roman typefaces. Four hundred and fifty primary school subjects from nine different schools were used in a control group pre-test, post-test research design where four different experiments were completed. Romans and sans serifs were found to be equally legible, as no significant statistical difference was found between the reading speed, scanning speed, accuracy and comprehension at the 0.05 level. These results are in contrast to the assumption that romans are more legible than sans serifs. They can be interpreted as promising for graphic designers and typographers, as it appears that legibility will not necessarily be sacrificed when certain reading material is set in a sans serif typeface.
Keywords: Legibility, Sans serif typeface, Roman typeface, Reading task, Times Roman, Helvetica

You type
%CITE{BahrSimpson02}%
you get (simulated) bibtex select example (if installed) [1]

The text within the citation is dictated by the results of the %BIBTEXREF% declaration in the topic (see below).

Note: The %CITE% macro is also defined by the TWiki:Plugins.BibliographyPlugin. If both plugins are installed, one must use the alternate declaration, %BIBCITE{...}%, to access the BibtexPlugin functionality.

Syntax

  • %BIBTEX{<attributes>}% - render a set of bibtex files attached to some topic
  • %STARTBIBTEX{<attributes>}% ... %STOPBIBTEX% - render an inline-bibtex database
  • %CITE{key}% (or %BIBCITE{key}%) - generate an hyperlink to a bibtex entry
  • %BIBTEXREF{key, topic}% - generate a list of references based on the declared CITE keys

Attributes

All attributes for %BIBTEX% and %STARTBIBTEX% are optional. The attributes topic and bibfile are not valid in the %STARBIBTEX% tag as the bibtex database is given inline and not as an attachment. %CITE% has one obligatory attribute, that is key refering to the bibtex entry that is to be cited. topic is optional here and defaults to the recently used bibtex database location in a %BIBTEX% tag on the same topic (see Tips).

option value description
topic (webName.)topicName a valid topic where bibtex files are attached.
file bibfile a regular expression specifying one or more bibtex files attached to webName.topicName, must have the extension .bib if no bibfile is specified all bibfiles attached are used
select query see chapter The Query Language for an explamation
sort sorting how to sort the bibentries; possible values are year (default), author and none
bibstyle bibstyle can be one of the installed BibTeX styles installed on the servers system plus the special styles bibtool and raw:
  • bibtool : keys are generated in the style defined in the bibtoolrcs file (default)
  • raw : output is displayed in as raw bibtex (inside a <pre>...</pre> environment.
rev on, off reverse or normal sorting (default on )
mix on, off switch on/off formatting of html and raw bibtex entries mixed (default off)
errors on, off display standard errors generated by the rendering pipeline tools (e.g. warnings about double entries) in multiple bibfiles
abstract on, off switch on/off rendering the abstract-field if present in the entries (default off)
keywords on, off switch on/off rendering the keywords-field if present in the entries (default off)
form on, off, only, (formWeb.)formTopic delcare which query form to use, if any:
  • on: use the default query form at BibtexSearchTemplate
  • off: (default) don't display a query form
  • formWeb.formTopic: declare a query form to be displayed
  • only: don't start to display the complete unfiltered database, but only show the query form

Citations and Automated Reference Lists

As of release v1.3, the BibtexPlugin has functionality similar to the TWiki:Plugins.BibliographyPlugin. Specifically, if a topic has %CITE{key}% declarations through out, the use of %BIBTEXREF{...}% will generate a list of references based on the citations declared. The output of the reference list is dictated by BibTeX. Thus, the HTML output can use all of the flexibility of bibtex, including custom bibtex style templates and string macros.

The citation keys must refer to the output key produced by this plugin, which may differ from the entries in the associated .bib files according to the bibtool resource file in use. Simply use the output key produced by BibtexPlugin search template query results.

Again, if both the TWiki:Plugins.BibliographyPlugin and Foswiki:BibtexPlugin are installed, one must use %BIBCITE{...}% inplace of %CITE% for the BibtexPlugin functionality to work.

Example

You type

<table border=1><tr><td>
     %BIBTEXREF{bibstyle="alpha"}%
</table>

you get

(simulated)
bibtex reference example

(if installed)

References

[1] K. Bahr and F. Simpson. Electrical anisotropy below slow- and fast-moving plates: Paleoflow in the upper mantle? Science, 295:1270--1272, 2002.

The Query Language

The information here is extracted from the bibtex2html manual (section 3.2: Filter conditions) and might be incomplete or outdated. Please see here for more information. Anyhow here's a version matching the naming conventions that we use here (filter conndition = query).

A query is a boolean expression that is evaluated against a BibTeX entry to decide whether this entry should be selected. A query is either:
  • a comparison between two expressions, written as e1 op e2
  • a matching of a field name with respect to a regular expression, written as field : regexp
  • a conjunction of two conditions, written as c1 and c2
  • a disjunction of two conditions, written as c1 or c2
  • a negation of a condition, written as not c (or ! c)
  • a test of existence of a field, written as exists f (or ? f) where f is a field name

where an expression is either:
  • a field name
  • a string constant between single quotes
  • an integer constant
  • the special ident $key which corresponds to the key of an entry.
  • the special ident $type which corresponds to the type of an entry (ARTICLE, INPROCEEDINGS, etc.). notice that an entry type is always written in uppercase letters.
  • comparison operators are the usual ones: , <, >, <, >= and <>

The field names are any sequences of lowercase or uppercase letters (but no distinction is made between lowercase and uppercase letters).

Regular expressions must be put between single or double quotes, and must follow the GNU syntax of regular expressions, as for example in GNU Emacs. Any character other than $^.*+?[] matches itself, see the following table for the meaning of the special characters:
. matches any character except newline
[..] character set; ranges are denoted with -, as in [a-z]; an initial ^, as in [^0-9], complements the set
matches the beginning of the string matched
$ matches the end of the string matched
\b matches word boundaries
\ quotes special characters
regexp* matches regexp zero, one or several times
regexp+ matches regexp one or several times
regexp? matches regexp once or not at all
regexp1 \Ι regexp2 alternative between two regular expressions, this operator has low priority against *, + and ?
\( regexp \) grouping regular expression

Customizing Look & Feel

The BibtexPlugin is customizable in several ways:
  • manipulate the cascading style sheets sitewide or derived on one topic
  • implementing an different BibtexSearchTemplate used with the form attribute of the %BIBTEX% command
  • rewriting the bibtool resourcefile shipped with the BibtexPlugin

Cascading Stylesheets

Here's the list of used styles:
class description
bibtex division (<div...>) surrounding the complete bibtex. The entries are rendered using a definition list:
<dl>
...
   <dt> keyA </dt>
   <dd> entry </dd>
...
</dl>
bibabstract division surrounding the abstract
bibcomment division surrounding the comment
bibkeywords division surrounding the keywords
bibsearch class of the table in the BibtexSearchTemplate
biboptions class of the options table in the BibtexSearchTemplate
See Tips for an example on how to modify the look easily.

BibtexPlugin search templates

The BibteXPlugin search templates provide an interactive query interface to the bibtex files present on a wiki. As an example of their use, one can declare
   %BIBTEX{form="only"}%
in a topic to which .bib files are attached. The resulting rendered form (defined by DEFAULTSEARCHTEMPLATE above) can then be used to query the .bib files.

Bibtool Resource Files

Actually this is an art for itself. The author has taken care to give you a quite reasonable resource file for bibtool. This contains an own (default) style of citation keys. You might have a look at the bibtool manual page and dig into the bibtoolrcs file yourself.

Examples

  • %BIBTEX%
    Render all bibtex entries in the bibtex files attached to the DEFAULTWEB.=DEFAULTTOPIC= in the DEFAULTSTYLE with the DEFAULTSORT.

  • %BIBTEX{web="Sandbox" topic="BibTest" file="cite.bib" select="author : 'Einstein'"}%
    Use cite.bib which is attached in Sandbox under the topic BibTest as the BibTeX file. Embeds all of the references from the BibTeX file which have Einstein in the author field

  • %BIBTEX{file="cite.bib" select="author : 'Einstein|Fermi' and year=2003"}%
    • Use cite.bib which is attached to the DEFAULTWEB under the topic DEFAULTTOPIC as the BibTeX file
    • Embeds all of the references from the BibTeX file which have Einstein or Fermi in the author field and 2003 in the year field
    • Format the embedded text as DEFAULTSTYLE

  • Selecting entries of a given year
    • select only entries that appeared in 1999 : select="year=1999"
    • select references appearing after and/or before a given year, e.g. references after 1997:
      select="year>1997"
    • references between 1990 and 1995:
      select="year>=1990 and year<=1995"

  • Selecting references of a given author
    • select only entries whose (co)author is Donald Knuth:
      select="author : 'Knuth'"
    • if you would like to have only the references whose author is Knuth only, you may try:
      select="author : '^\(Donald \(E. \)?Knuth\|Knuth, Donald \(E.\)?\)$'"
    • or equivalently but missing the possible E.:
      select="author = 'Donald Knuth or author = 'Knuth, Donald'"

  • Other examples
    • extract the references that appeared since 1995 and have lambda-calculus in their title, with anything between "lambda" and "calculus":
      select="year >= 1995 and title : 'lambda.*calculus'"
    • select entries for Wolfgang Menzel since year 2000:
      select="author : 'Wolfgang Menzel' or author = 'Menzel, Wolfgang' and year>=2000"

Tips

  • Setting the current bibtex database for citations:
    Having a set of citations %CITE{keyA}% ... %CITE{keyZ}% refering to the same database is achievable in several ways:
    • by attaching all your bibtex files at a common place and set the DEFAULTTOPIC in the Global Settings section to that topic, or
    • by declaring the current database in the first %CITE% tag: %CITE{"keyA" topic="Main.BibtexDatabase"}, or
    • by setting the current database with %BIBTEX{topic="BibtexDatabase" display="off"}%, or
    • by specifying the bibtex database in every %CITE% tag (not seriously)
  • Merging bibtex databases from different sources:
    If there are lots of databases all over your Foswiki site, you might want to merge them or extend them with some extra entries you don't want in the main database. Example: the main database contains all publications of your division but not the crossrefering presentation slides. You might want to keep them separate on your home-topic. You do that by nesting one or several %;BIBTEX{...bibstyle="raw"...}% commands inside a %STARBIBTEX% ... %STOPBIBTEX% section.
      %STARTBIBTEX%
      %BIBTEX{select="author:'YourName'" bibstyle="raw"}%
      @Misc{YourName02Slides,
         crossref = {YourName02},
         note = {slides of oral presentation},
      }
      %STOPBIBTEX%
  • Manipulating the Cascading Style Sheet:
    You possibly don't like the default stylesheet for bibtexing installed on your Foswiki site. Or you just want to render a bibtex database differently on a single topic. Then add a stylesheet section in the topic: <style type="text/css"> ... </style>. Section Customizing Look & Feel lists the styles used. Here's a small example of how to get a different look easily. Just put it on some topic and see:
      <style type="text/css">
      .bibtex {
        background:transparent;
        border:0px;
      }
      .bibtex dd {
        margin-left:30px;
        margin-right:30px;
      }
      </style>

Global Settings

  • One line description, shown in the TextFormattingRules topic:
    • Set SHORTDESCRIPTION = Embeds BibTeX entries in a Foswiki page

  • Default topic name for BibTeX files:

Plugin Installation Instructions

  • Download the .zip or .tgz file from the Extensions web (see below)
  • extract the plugin files in your foswiki installation directory. Content:
    File: Description:
    data/System/BibtexPlugin.txt Plugin topic
    data/System/BibtexSearchTemplate.txt default query template
    data/System/BibtexSimpleSearchTemplate.txt simple query template
    data/System/BibtexSelectTemplate.txt expert query template
    lib/System/Plugins/BibtexPlugin.pm Plugin Perl module
    pub/System/BibtexPlugin/sample.bib Plugin sample BibTeX file
    pub/System/BibtexPlugin/style.css default style definitions
    pub/System/BibtexPlugin/bibtoolrsc bibtool resource file
    bin/bibsearch cgi query script
    tools/render.sh bibtex to html/raw rendering script
  • modify the render.sh script to point to the installed versions of bibtool, bib2bib, bibtex2html, and bibtex.
  • set $Foswiki::cfg{Plugins}{BibtexPlugin}{render} to declare the full path to render.sh in LocalSite.cfg
  • register the bibsearch script in LocalSite.cfg, by adding the following line:
$Foswiki::cfg{SwitchBoard}{bibsearch} = [ "Foswiki::Plugins::BibtexPlugin::CgiBibSearch", "cgibibsearch", { bibsearch => 1 } ];

If access control is managed at the web-server level, be sure to add bibsearch to the authorization list. E.g., for Apache, add the following lines to the .htaccess file:
<Files "bibsearch">
       require valid-user
</Files>

Plugin Info

Plugin Author: Foswiki:Main/MichaelDaum, Foswiki:Main/ScottHoge
16 Okt 2003: Initial version
Plugin Version: v2.0
Change History:  
2009/01/14: (v2.0) ported to Foswiki
2008/01/31: (v1.5) updated to operate with TWiki 4.2
2006/12/02: minor bug fix: removed space requirement of render path
2006/08/29: (v1.4) minor bug fixes: bibstyle replaces style, CITE/BIBCITE cleanup
2006/05/19: (v1.3) twiki.org release
2006/01/06: added code to generate automatic reference lists, based on declared citations
2005/12/09: reworked to use the TWiki:DakarContrib on cairo and beijing
2004/11/26: added simple and expert search forms, added select option to cgi-script; added configurable default search template
2004/11/25: allow inline databases to be queried also, added forgotten bibsearch cgi-script
2004/10/01: added cascading style sheets
2004/09/16: added tar ball
2003/10/16: renamed to BibtexPlugin, formerly known as EmbedBibPlugin
CPAN Dependencies: none
Other Dependencies: BibTool, Bibtex2html
Perl Version: >=5.6.1
Plugin Home: Foswiki:Plugins/BibtexPlugin
Feedback: Foswiki:Plugins/BibtexPluginDev
Appraisal: Foswiki:Plugins/BibtexPluginAppraisal

-- TimoBaumann - 12 Oct 2015

 
Copyright � by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback