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)
(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)
(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)
(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)
(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.
- Available search templates
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 |