summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biocon
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biocon
Initial commit
Diffstat (limited to 'macros/latex/contrib/biocon')
-rw-r--r--macros/latex/contrib/biocon/COPYING16
-rw-r--r--macros/latex/contrib/biocon/INSTALL15
-rw-r--r--macros/latex/contrib/biocon/README16
-rw-r--r--macros/latex/contrib/biocon/biocon-old.sty125
-rw-r--r--macros/latex/contrib/biocon/biocon.nw349
-rw-r--r--macros/latex/contrib/biocon/biocon.sty150
-rw-r--r--macros/latex/contrib/biocon/literature.bib43
-rw-r--r--macros/latex/contrib/biocon/manual-old.pdfbin0 -> 126695 bytes
-rw-r--r--macros/latex/contrib/biocon/manual-old.tex77
-rw-r--r--macros/latex/contrib/biocon/manual.pdfbin0 -> 144300 bytes
-rw-r--r--macros/latex/contrib/biocon/manual.tex73
-rw-r--r--macros/latex/contrib/biocon/source.pdfbin0 -> 135415 bytes
-rw-r--r--macros/latex/contrib/biocon/source.tex350
13 files changed, 1214 insertions, 0 deletions
diff --git a/macros/latex/contrib/biocon/COPYING b/macros/latex/contrib/biocon/COPYING
new file mode 100644
index 0000000000..f7437cb0a1
--- /dev/null
+++ b/macros/latex/contrib/biocon/COPYING
@@ -0,0 +1,16 @@
+Biocon Package Licensing
+========================
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA, or look at
+http://www.gnu.org/copyleft/gpl.html.
diff --git a/macros/latex/contrib/biocon/INSTALL b/macros/latex/contrib/biocon/INSTALL
new file mode 100644
index 0000000000..9ab7ca1f43
--- /dev/null
+++ b/macros/latex/contrib/biocon/INSTALL
@@ -0,0 +1,15 @@
+Installation
+============
+
+The installation of LaTeX packages is quite simple, although different formats
+for distributing are used. For the biocon package, only the file biocon.sty is
+needed. It needs to be placed somewhere in the path where LaTeX can find it,
+which depends on your system. See the TeX FAQ:
+http://www.tex.ac.uk/cgi-bin/texfaq2html?keyword=install&question=94
+Then, you should "tell" LaTeX that you installed a new package. The way too do
+this also depends on your system:
+http://www.tex.ac.uk/cgi-bin/texfaq2html?keyword=install&question=93
+
+If you want to LaTeX a document which was written using the biocon package
+before august 2001, you should download the file biocon-old.sty and rename it
+to biocon.sty, and then install it in the way described above.
diff --git a/macros/latex/contrib/biocon/README b/macros/latex/contrib/biocon/README
new file mode 100644
index 0000000000..5152c91f7c
--- /dev/null
+++ b/macros/latex/contrib/biocon/README
@@ -0,0 +1,16 @@
+Biological Conventions v 0.9
+============================
+
+This package aids the typesetting of biological species names, and of taxa
+below the species level. It is quite configurable. For the future also names of
+genes and their products are planned.
+
+This package is designed for LaTeX2e.
+
+WARNING: THIS VERSION IS NOT COMPLETELY BACKWARD COMPATIBLE WITH THE VERSION
+PRIOR TO AUGUST 2001.
+You should use the file biocon-old.sty for documents prior to this date.
+
+See the manual for how to use this package.
+See the INSTALL file for information how to install this package.
+See the COPYING file for licensing information.
diff --git a/macros/latex/contrib/biocon/biocon-old.sty b/macros/latex/contrib/biocon/biocon-old.sty
new file mode 100644
index 0000000000..09f5a811b2
--- /dev/null
+++ b/macros/latex/contrib/biocon/biocon-old.sty
@@ -0,0 +1,125 @@
+%BioCon.sty: Biological Conventions.
+%
+%This package tries to automatically typeset some biological entities. Currently (v0.04), only
+%species are supported, but plans are to include genes and their products (and maybe even more).
+%
+%Although, it is not a real convention, this package gives the full name of a species the first
+%time it is used in a document. After that, it uses the abbreviated form consisting of the
+%first letter of the genus followed by the epiteton.
+%The species name is written emphasized.
+%
+%The workings of this package are fairly simple. To introduce a new species, use the
+%\newspecies[optional identifier]{Genus epiteton} command. If no identifier is given, the first
+%letter of the genus in capital followed by the first letter of the epiteton in lowercase are used.
+%For example, to introduce Drosophilla melanogaster, type \newspecies[Dros]{Drosophilla melanogaster}
+%or \newspecies{Drosophila melanogaster}.
+%Then, every time you want to use this species, type \species{Abbreviation}. In the above
+%example this would be \species{Dm}.
+%
+%Of course, long or short names can be forced. This is done through an optional parameter.
+%This can be "n" for normal, "l" for long, and "s" for short. Furthermore, the type it was about
+%to use by appending a "d" (for "delay") to this.
+%
+%In the above example, suppose you want to use the full name in the title, and then the first
+%time it occurs in the text. In the last sentence, the full name has also to be used:
+%\title{The HOX-genes of \species[ld]{Dm}} ([nd] can also be used)
+%....
+%....
+%As a conclusion: Time flies like an arrow and fruit flies like a banana, and so does
+%\species[l]{Dm}.
+%
+%This package is written by Pieter Edelman (PEdelman@dds.nl). Please send me any comments,
+%requests and/or suggestions.
+%
+%This package is released under the GNU General Public License.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{biocon}[2000/08/11 Typesets Biological Statements, v.0.04 (stable)]
+
+%global defs:
+\newcounter{Option}
+\newcommand\ShowHow{n}
+\newcommand\Short{s}
+\newcommand\Long{l}
+\newcommand\Normal{n}
+\newcommand\LongDelay{ld}
+\newcommand\ShortDelay{sd}
+\newcommand\NormalDelay{nd}
+\newcommand\isEmpty{}
+
+%These are used to store intermediate variables:
+\newcommand\GenusFirst{}
+\newcommand\Genus{}
+\newcommand\EpitetonFirst{}
+\newcommand\Epiteton{}
+\newcommand\AbName{}
+\newcommand\useDefault{}
+
+%These define how a long and a short name should look like.
+\newcommand\FullName[1]{\csname#1Genus\endcsname\ \csname#1Epiteton\endcsname}
+\newcommand\ShortName[1]{\csname#1GenusFirst\endcsname. \csname#1Epiteton\endcsname}
+
+\def\setSpeciesParams(#1#2 #3#4){% This sets the various variables using their intermediates.
+ \uppercase{\renewcommand{\GenusFirst}{#1}}%
+ \lowercase{\renewcommand{\EpitetonFirst}{#3}}%
+ \renewcommand{\Genus}{\uppercase{#1}\lowercase{#2}}%
+ \lowercase{\renewcommand{\Epiteton}{#3#4}}%
+}
+
+\newcommand{\newspecies}[2][]{%
+ \setSpeciesParams(#2)%
+ \renewcommand{\useDefault}{#1}%
+ \ifx \useDefault\isEmpty% Find out if abbreviation is provided.
+ \renewcommand{\AbName}{\GenusFirst\EpitetonFirst}%
+ \else%
+ \renewcommand{\AbName}{#1}%
+ \fi%
+ \expandafter\newcounter\expandafter{\AbName}% Set new counter using the abbreviated name
+ \expandafter\let\csname\AbName GenusFirst\endcsname=\GenusFirst% Set intermediates to real values
+ \expandafter\let\csname\AbName Genus\endcsname=\Genus%
+ \expandafter\let\csname\AbName Epiteton\endcsname=\Epiteton%
+}
+
+\newcommand{\LineInput}[1]{%
+ \renewcommand\ShowHow{#1}%
+ \ifx\ShowHow\Short%
+ \setcounter{Option}{1}%
+ \fi%
+ \ifx\ShowHow\Long%
+ \setcounter{Option}{3}%
+ \fi%
+ \ifx\ShowHow\Normal%
+ \setcounter{Option}{5}%
+ \fi%
+ \ifx\ShowHow\ShortDelay%
+ \setcounter{Option}{0}%
+ \fi%
+ \ifx\ShowHow\LongDelay%
+ \setcounter{Option}{2}%
+ \fi%
+ \ifx\ShowHow\NormalDelay%
+ \setcounter{Option}{4}%
+ \fi%
+}
+
+\newcommand{\species}[2][n]{%
+ \LineInput{#1}%
+ %
+ \ifnum\value{Option}>3% If name is normal
+ \ifnum\value{#2}=0% If name is used for the first time
+ \emph{\FullName{#2}}%
+ \else% If name is used for another time
+ \emph{\ShortName{#2}}%
+ \fi%
+ \else%
+ \ifnum\value{Option}<2% If name is short
+ \emph{\ShortName{#2}}%
+ \else% If name is long
+ \emph{\FullName{#2}}%
+ \fi%
+ \fi%
+ %
+ \ifodd\value{Option}%
+ \stepcounter{#2}%
+ \fi%
+}
diff --git a/macros/latex/contrib/biocon/biocon.nw b/macros/latex/contrib/biocon/biocon.nw
new file mode 100644
index 0000000000..7505700a78
--- /dev/null
+++ b/macros/latex/contrib/biocon/biocon.nw
@@ -0,0 +1,349 @@
+\documentclass{article}
+\usepackage{noweb}
+\usepackage{hyperref}
+\usepackage[a4paper,margin=1.5cm]{geometry}
+
+\newcommand{\biocon}{\texttt{biocon}}
+
+\title{The \biocon\ package}
+\author{Pieter Edelman}
+
+\bibliographystyle{plain}
+
+\begin{document}
+@
+\maketitle
+
+\begin{abstract}
+The \biocon\ package handles the typesetting of scientific species names. There are different modes of showing these names. Multiple occurances in the same document are taken care of.
+\end{abstract}
+\tableofcontents
+\section{The built-up of the package}
+According to \cite{Goossens1994}, each package foolows a standard built-up, which is:
+<<biocon.sty>>=
+<<Identification part>>
+<<Declaration of options>>
+<<Execution of options>>
+<<Package loading>>
+<<Main code>>
+@
+The identification part is easy. This package is designed exclusively for \LaTeXe, and it provides the \biocon\ package.
+<<Identification part>>=
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{biocon}[2001/08/18]
+@
+\section{The user interface}
+\subsection{Brief syntax}
+<<Main code>>=
+<<Declarations>>
+<<The user interface>>
+<<Internal workings>>
+@
+The \biocon\ package automates the process of typesetting biological species names. Different conventions are followed for animals, bacteria, plants and fungi (the latter two follow the same conventions). These four main groups are used in this package. The amount of information the user provides is variable, for example the user should be able to typeset the full name with genus, old genus, author etc., but also just the normal binomial name.
+
+Two kinds of commands are provided to reach this goal, the first is for quick-n-dirty use-only-once names. The other is a set of commands were first the species is declared, and then used throughout the document.
+
+The quick-n-dirty commands look like:
+\begin{itemize}
+ \item\verb!\plantlike [!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\funguslike[!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\animallike[!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\bactlike [!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+\end{itemize}
+
+The declaration commands look like:
+\begin{itemize}
+ \item\verb!\newplant {!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newfungus{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newanimal{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newbact {!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+\end{itemize}
+
+Declarated species can be used with
+\begin{itemize}
+ \item\verb!\plant [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\fungus[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\animal[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\bact [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+\end{itemize}
+
+In these commands, \textit{parameters} define the actual species. They can consist of genus, oldgenus, epithet, oldepithet, author, year, oldauthor, and oldyear, and follow a \verb!key=value! syntax. Furthermore, more parameters can be defined by the user. The \textit{identifier} is the identifier by which a species is recognized by the user. The commands to declare species are discussed below, while the commands to use them are discussed later.
+
+The declaration commands are all piped through a single command. The quick-n-dirty commands also declare a new species, but always with the same identifier. This command is the \verb!\n@wsp@cies{!\textit{type}\verb!}{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}! command, where \textit{type} is P, F, A, B for plant, fungus, animal or bacterium.
+\subsection{The implementation for the declaration part}
+As described above, all the declaration commands are piped through a single command (the quick-n-dirty commands don't get a \textit{type} identifier, only a single identifier is needed):
+<<The user interface>>=
+\newcommand{\newplant}[2]{\n@wsp@cies{P}{#1}{#2}}
+\newcommand{\newfungus}[2]{\n@wsp@cies{F}{#1}{#2}}
+\newcommand{\newanimal}[2]{\n@wsp@cies{A}{#1}{#2}}
+\newcommand{\newbact}[2]{\n@wsp@cies{B}{#1}{#2}}
+
+\newcommand{\plantlike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\plant[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\funguslike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\fungus[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\animallike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\animal[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\bactlike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\bact[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+@
+\section{The internal workings}
+For now, we ignore the commands to use the declared species, and instead define the internal workings of the \verb!\n@wsp@cies! command.
+
+Since the \verb!key=value! syntax is used, the \texttt{keyval} package is needed:
+<<Package loading>>=
+\RequirePackage{keyval}
+@
+The \verb!\n@wsp@cies! command creates a command for all the different parameters it gets, which name is of \textit{TypeIdentifier@Parametername}, for example, if the command would be \verb!\n@wsp@cies{A}{Hs}{genus=homo,epithet=sapiens}!, it would define the commands \verb!\AHs@genus! and \verb!\AHs@epiteth!.
+<<Internal workings>>=
+<<The n@wsp@cies command>>
+@
+<<The n@wsp@cies command>>=
+\newcommand{\n@wsp@cies}[3]{%
+@
+First this function determines what the first part of all the commands should be. It stores this in a parameter called \verb!\curr@ntid!.
+<<Declarations>>=
+\newcommand{\curr@ntid}{}
+@
+<<The n@wsp@cies command>>=
+\renewcommand{\curr@ntid}{#1#2@}%
+@
+This command also adds a counter with name \textit{Curr@ntID}\verb!counter!, which will be used to track whether this command has been used before (0 for no, 1 for yes) (for Q@D an exception is made).
+<<Declarations>>=
+\newcounter{Q@D@counter}
+@
+The \verb!\n@wsp@cies! command uses the \texttt{ifthen} package.
+<<Package loading>>=
+\RequirePackage{ifthen}
+@
+<<The n@wsp@cies command>>=
+\ifthenelse{\equal{#2}{Q@D}}%
+ {\relax}%
+ {\newcounter{\curr@ntid counter}}%
+\setcounter{\curr@ntid counter}{0}%
+@
+Then it goes forth by processing all the parameters. According to \cite{Carlisle1999}, for every key an apart function should exist. For the quick-n-dirty commands a \verb!\Q@DCleanList! command is created to which holds all the possible keys with \verb!\relax! associated. The \verb!\Q@DCleanup! commands sets these keys (this is to prevent old values from being used when a value is not given).
+<<Internal workings>>=
+<<The key=value functions>>
+@
+<<The key=value functions>>=
+\def\Q@DCleanup#1+{\n@wsp@cies{}{Q@D}{#1}}
+
+\newcommand{\add@species@key}[2]{%
+ \define@key{SpeciesParams}{#1}{#2}
+ \expandafter\ifx\csname Q@DCleanList\endcsname\relax%
+ \def\Q@DCleanList{#1=\relax}%
+ \else%
+ \edef\Q@DCleanList{\Q@DCleanList,#1=\relax}%
+ \fi%
+}
+@
+<<The n@wsp@cies command>>=
+\setkeys{SpeciesParams}{#3}%
+}
+@
+The handler for the genus should make sure it is written capitalized. Therefore a function is made which splits the first letter of a word. It used more often in this package.
+<<Declarations>>=
+\newcommand{\T@mpFirst}{}
+\newcommand{\T@mpRest}{}
+<<The key=value functions>>=
+\def\SplitG@nusL@tters(#1#2){%
+ \uppercase{\renewcommand{\T@mpFirst}{#1}}\lowercase{\renewcommand{\T@mpRest}{#2}}}
+@
+Then the genus is processed and stored in the right way.
+<<The key=value functions>>=
+\add@species@key{genus}{%
+ \SplitG@nusL@tters(#1)%
+ \expandafter\edef\csname\curr@ntid genus\endcsname{\T@mpFirst\T@mpRest}%
+}
+@
+Of course, this also goes for the old genus.
+<<The key=value functions>>=
+\add@species@key{oldgenus}{%
+ \SplitG@nusL@tters(#1)%
+ \expandafter\edef\csname\curr@ntid oldgenus\endcsname{\T@mpFirst\T@mpRest}%
+}
+@
+The epithet and old epithet all have to be completely lowercase.
+<<The key=value functions>>=
+\add@species@key{epithet}{\lowercase{\expandafter\edef\csname\curr@ntid epithet\endcsname{#1}}}
+\add@species@key{oldepithet}{\lowercase{\expandafter\edef\csname\curr@ntid oldepithet\endcsname{#1}}}
+@
+And there are the author, old author year and the old year.
+<<The key=value functions>>=
+\add@species@key{author}{\expandafter\edef\csname\curr@ntid author\endcsname{#1}}
+\add@species@key{year}{\expandafter\edef\csname\curr@ntid year\endcsname{#1}}
+\add@species@key{oldauthor}{\expandafter\edef\csname\curr@ntid oldauthor\endcsname{#1}}
+\add@species@key{oldyear}{\expandafter\edef\csname\curr@ntid oldyear\endcsname{#1}}
+@
+As mentioned, the user should also be able to add own taxonomical structures. Herefore a the \verb!\newtaxon{!\textit{name}\verb!}! is used.
+<<Internal workings>>=
+\newcommand{\newtaxon}[1]{\add@species@key{#1}{\expandafter\edef\csname\curr@ntid #1\endcsname{##1}}}
+@
+Two special keys are for the default full style and the default abbreviation.
+<<The key=value functions>>=
+\define@key{SpeciesParams}{fullstyle}
+ {\expandafter\def\csname\curr@ntid fullstyle\endcsname{\csname Sp@cies#1\endcsname}}
+\define@key{SpeciesParams}{abbrstyle}
+ {\expandafter\def\csname\curr@ntid abbrstyle\endcsname{\csname Sp@cies#1\endcsname}}
+@
+\subsection{The implementation for the use part part}
+There's a lot to do with the actual showing of a species. This package was born from the the desire to automagically show \textit{Genus epithet} the first time a species was used, but us \textit{G. epithet} all subsequent times. However, sometimes an abbreviation should just be \textit{Genus}, and someimes the full name is required. Even more, writing the complete species names with subspecies and old genus stuff etc. is better left to the computer. By default, four different modes of typesetting are provided; the \textit{how} parameter specifies how the name should be typeset, this can be \textbf{e}xtended, which gives all available information, \textbf{l}ong, which gives genus and epithet, \textbf{a}bbreviated, which gives the first letter of the genus followed by the epithet, and \textbf{g}enus, which gives the genus only. It is also possible for the user to create typesetting schemes, and to set the default full name and abbreviation per species or globally.
+
+Let's start with the commands used to write out the names stored in \LaTeX' memory. These are accesible by the user and are already discussed:
+\begin{itemize}
+ \item\verb!\plant [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\fungus[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\animal[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\bact [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+\end{itemize}
+These command use ``style'' commands to do the actual typesetting. A ``style'' command contains text and \\\verb!\taxon{!\textit{pre}\verb+!+\textit{name}\verb+!+\textit{post}\verb!}! commands. Text is shown verbatim. The \verb!\taxon! command shows the taxon \textit{name} for the current species enclosed by \textit{pre} and \textit{post} if this taxon exists. So the typesetting is done by \verb!\plant!/\verb!Fungus!/\verb!Animal!/\verb!Bact!$\rightarrow$\textit{style command}$\rightarrow$\verb!\taxon!. Besides the \verb!Taxon! command, there is a similar \verb!FirstTaxon! command, which shows only the first letter of that taxon.
+<<Internal workings>>=
+<<The Taxon commands>>
+@
+Both the \verb!\taxon! and the \verb!\taxonfirst! command pipe through a single \verb!\Sh@wTax@n! command, which takes its argument in the form of \verb!+(!\textit{pre}\verb.!.\textit{name}\verb.!.\textit{post}\verb!)+!\textit{how}\verb!+!. The unique enclosures are needed to prevent interference with the \textit{pre} and \textit{post} from the user. \textit{how} is either \textit{n} for normal or \textit{a} for abbreviated (first letter only).
+@
+<<The Taxon commands>>=
+\newcommand{\taxon}[1]{\Sh@wTax@n+(#1)+n+}
+\newcommand{\taxonfirst}[1]{\Sh@wTax@n+(#1)+a+}
+
+\def\Sh@wTax@n+(#1!#2!#3)+#4+{%
+@
+\verb!\curr@ntid! is the ID of the species currently treated. This will be discussed later.
+<<The Taxon commands>>=
+ \expandafter\ifx\csname\curr@ntid#2\endcsname%
+ \relax%
+@
+If the taxon exist, the function checks if it should display normal, and if this is the case it should display \textit{pre}, the taxon, and \textit{post}.
+<<The Taxon commands>>=
+ \else%
+ \ifthenelse{\equal{#4}{n}}{%
+ #1\csname\curr@ntid#2\endcsname#3%
+@
+Otherwise, only the first letter should be displayed. This is done by expanding the current taxon into the macro \verb!\T@mpTax@n! which is used as argument for the lettersplitting function.
+<<The Taxon commands>>=
+ }{%
+ \edef\T@mpTax@n{\csname\curr@ntid#2\endcsname}%
+ #1\expandafter\Sh@wFirst\T@mpTax@n+#3%
+ }%
+ \fi%
+}
+
+\def\Sh@wFirst#1#2+{#1}
+@
+New style can be created with the \verb!\newtaxastyle{!\textit{name}\verb!}{!\textit{style}\verb!}! command, where \textit{name} is an identifier for that style, and \textit{style} is, well, the style.
+<<The user interface>>=
+<<The newtaxastyle command>>
+@
+<<The newtaxastyle command>>=
+\newcommand{\newtaxastyle}[2]{\expandafter\def\csname Sp@cies#1\endcsname{#2}}
+@
+It is often the case that some names should be printed in italics if the rest of the text is upright, or vice versa. Herefore the command \verb!\taxit{}! is provided, which is the same as \verb!\em! in \verb!latex.ltx!.
+<<Internal workings>>=
+\DeclareRobustCommand\taxitalics
+ {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \upshape \else \itshape \fi}
+\DeclareTextFontCommand{\taxit}{\taxitalics}
+@
+Using this, the default type can be implemented.
+<<Internal workings>>=
+\newtaxastyle{ePlant}
+ {\taxit{\taxon{!genus!}\taxon{ !epithet!}}\taxon{ (!oldauthor!)}\taxon{ !author!}}
+\newtaxastyle{eAnimal}
+ {\taxit{\taxon{!genus!}\taxon{ (!oldgenus!)}\taxon{ !epithet!}}\taxon{ (!oldauthor!}%
+ \taxon{, !oldyear!)}\taxon{!author!}\taxon{, !year!}}
+\newtaxastyle{f}
+ {\taxit{\taxon{!genus!}\taxon{ !epithet!}}}
+\newtaxastyle{a}
+ {\taxit{\taxonfirst{!genus!.}\taxon{ !epithet!}}}
+\newtaxastyle{g}
+ {\taxit{\taxon{!genus!}}}
+@
+Now the default styles can be set.
+<<Declarations>>=
+\newcommand{\Gl@balF@llStyle}{}
+\newcommand{\Gl@bal@bbrStyle}{}
+\newcommand{\Gl@balPE@llStyle}{}
+\newcommand{\Gl@balFE@llStyle}{}
+\newcommand{\Gl@balAE@llStyle}{}
+\newcommand{\Gl@balBE@llStyle}{}
+@
+<<The user interface>>=
+\newcommand{\defaultplante}[1]
+ {\renewcommand{\Gl@balPE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultfunguse}[1]
+ {\renewcommand{\Gl@balFE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultanimale}[1]
+ {\renewcommand{\Gl@balAE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultbacte}[1]
+ {\renewcommand{\Gl@balBE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultfull}[1]
+ {\renewcommand{\Gl@balF@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultabbr}[1]
+ {\renewcommand{\Gl@bal@bbrStyle}{\csname Sp@cies#1\endcsname}}
+@
+<<Internal workings>>=
+\defaultplante{ePlant}
+\defaultfunguse{ePlant}
+\defaultanimale{eAnimal}
+\defaultbacte{eAnimal}
+\defaultfull{f}
+\defaultabbr{a}
+@
+The calling commands fisrt set \verb!\curr@ntid! to the current ID (duh!). Furthermore, they have a decision tree: if no style is provided, then it is determined whether or not this is the first use in the document, and action is taken appropiately. This is all done using the \verb!\sh@wsp@cies{!\textit{type}\verb!}{!\textit{ID}\verb!}{!\textit{how}\verb!}!.
+<<The user interface>>=
+<<The calling commands>>
+@
+<<The calling commands>>=
+\newcommand{\plant}[2][]{\sh@wsp@cies{P}{#2}{#1}}
+\newcommand{\fungus}[2][]{\sh@wsp@cies{F}{#2}{#1}}
+\newcommand{\animal}[2][]{\sh@wsp@cies{A}{#2}{#1}}
+\newcommand{\bact}[2][]{\sh@wsp@cies{B}{#2}{#1}}
+@
+First, the command sets \verb!\curr@ntid! (if it's Q@D no \textit{type} should be set).
+<<Internal workings>>=
+<<The sh@wsp@cies command>>
+@
+<<The sh@wsp@cies command>>=
+\newcommand{\sh@wsp@cies}[3]{%
+ \ifthenelse{\equal{#2}{Q@D}}%
+ {\renewcommand{\curr@ntid}{#2@}}%
+ {\renewcommand{\curr@ntid}{#1#2@}}%
+@
+Then there is checked for a provided style.
+<<The sh@wsp@cies command>>=
+ \ifthenelse{\equal{#3}{}}{%
+ \ifnum\value{\curr@ntid counter}=0%
+@
+If this is not the case, it is checked whether this is the first time the species is used. Of it is, for default full style is checked and used.
+<<The sh@wsp@cies command>>=
+ \setcounter{\curr@ntid counter}{1}%
+ \expandafter\ifx\csname\curr@ntid fullstyle\endcsname\relax%
+ \csname Gl@balF@llStyle\endcsname%
+ \else%
+ \csname\curr@ntid fullstyle\endcsname %
+ \fi%
+@
+Otherwise, the default abbreviation is checked and used.
+<<The sh@wsp@cies command>>=
+ \else%
+ \expandafter\ifx\csname\curr@ntid abbrstyle\endcsname\relax%
+ \csname Gl@bal@bbrStyle\endcsname%
+ \else%
+ \csname\curr@ntid abbrstyle\endcsname%
+ \fi%
+ \fi%
+@
+If a style is provided, use this style. If this style is ``extended'', select the appropiate style for the kingdom.
+<<The sh@wsp@cies command>>=
+ }{%
+ \ifthenelse{\equal{#3}{e}}{%
+ \csname Gl@bal#1E@llStyle\endcsname%
+ }{%
+ \csname Sp@cies#3\endcsname%
+ }%
+ }%
+}
+@
+\bibliography{literature}
+\end{document}
diff --git a/macros/latex/contrib/biocon/biocon.sty b/macros/latex/contrib/biocon/biocon.sty
new file mode 100644
index 0000000000..dfc6de431a
--- /dev/null
+++ b/macros/latex/contrib/biocon/biocon.sty
@@ -0,0 +1,150 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{biocon}[2001/08/18]
+
+
+\RequirePackage{keyval}
+\RequirePackage{ifthen}
+\newcommand{\curr@ntid}{}
+\newcounter{Q@D@counter}
+\newcommand{\T@mpFirst}{}
+\newcommand{\T@mpRest}{}
+\newcommand{\Gl@balF@llStyle}{}
+\newcommand{\Gl@bal@bbrStyle}{}
+\newcommand{\Gl@balPE@llStyle}{}
+\newcommand{\Gl@balFE@llStyle}{}
+\newcommand{\Gl@balAE@llStyle}{}
+\newcommand{\Gl@balBE@llStyle}{}
+\newcommand{\newplant}[2]{\n@wsp@cies{P}{#1}{#2}}
+\newcommand{\newfungus}[2]{\n@wsp@cies{F}{#1}{#2}}
+\newcommand{\newanimal}[2]{\n@wsp@cies{A}{#1}{#2}}
+\newcommand{\newbact}[2]{\n@wsp@cies{B}{#1}{#2}}
+
+\newcommand{\plantlike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\plant[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\funguslike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\fungus[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\animallike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\animal[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\bactlike}[2][]
+ {\n@wsp@cies{}{Q@D}{#2}\bact[#1]{Q@D}\expandafter\Q@DCleanup\Q@DCleanList+}
+\newcommand{\newtaxastyle}[2]{\expandafter\def\csname Sp@cies#1\endcsname{#2}}
+\newcommand{\defaultplante}[1]
+ {\renewcommand{\Gl@balPE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultfunguse}[1]
+ {\renewcommand{\Gl@balFE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultanimale}[1]
+ {\renewcommand{\Gl@balAE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultbacte}[1]
+ {\renewcommand{\Gl@balBE@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultfull}[1]
+ {\renewcommand{\Gl@balF@llStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\defaultabbr}[1]
+ {\renewcommand{\Gl@bal@bbrStyle}{\csname Sp@cies#1\endcsname}}
+\newcommand{\plant}[2][]{\sh@wsp@cies{P}{#2}{#1}}
+\newcommand{\fungus}[2][]{\sh@wsp@cies{F}{#2}{#1}}
+\newcommand{\animal}[2][]{\sh@wsp@cies{A}{#2}{#1}}
+\newcommand{\bact}[2][]{\sh@wsp@cies{B}{#2}{#1}}
+\newcommand{\n@wsp@cies}[3]{%
+\renewcommand{\curr@ntid}{#1#2@}%
+\ifthenelse{\equal{#2}{Q@D}}%
+ {\relax}%
+ {\newcounter{\curr@ntid counter}}%
+\setcounter{\curr@ntid counter}{0}%
+\setkeys{SpeciesParams}{#3}%
+}
+\def\Q@DCleanup#1+{\n@wsp@cies{}{Q@D}{#1}}
+
+\newcommand{\add@species@key}[2]{%
+ \define@key{SpeciesParams}{#1}{#2}
+ \expandafter\ifx\csname Q@DCleanList\endcsname\relax%
+ \def\Q@DCleanList{#1=\relax}%
+ \else%
+ \edef\Q@DCleanList{\Q@DCleanList,#1=\relax}%
+ \fi%
+}
+\def\SplitG@nusL@tters(#1#2){%
+ \uppercase{\renewcommand{\T@mpFirst}{#1}}\lowercase{\renewcommand{\T@mpRest}{#2}}}
+\add@species@key{genus}{%
+ \SplitG@nusL@tters(#1)%
+ \expandafter\edef\csname\curr@ntid genus\endcsname{\T@mpFirst\T@mpRest}%
+}
+\add@species@key{oldgenus}{%
+ \SplitG@nusL@tters(#1)%
+ \expandafter\edef\csname\curr@ntid oldgenus\endcsname{\T@mpFirst\T@mpRest}%
+}
+\add@species@key{epithet}{\lowercase{\expandafter\edef\csname\curr@ntid epithet\endcsname{#1}}}
+\add@species@key{oldepithet}{\lowercase{\expandafter\edef\csname\curr@ntid oldepithet\endcsname{#1}}}
+\add@species@key{author}{\expandafter\edef\csname\curr@ntid author\endcsname{#1}}
+\add@species@key{year}{\expandafter\edef\csname\curr@ntid year\endcsname{#1}}
+\add@species@key{oldauthor}{\expandafter\edef\csname\curr@ntid oldauthor\endcsname{#1}}
+\add@species@key{oldyear}{\expandafter\edef\csname\curr@ntid oldyear\endcsname{#1}}
+\define@key{SpeciesParams}{fullstyle}
+ {\expandafter\def\csname\curr@ntid fullstyle\endcsname{\csname Sp@cies#1\endcsname}}
+\define@key{SpeciesParams}{abbrstyle}
+ {\expandafter\def\csname\curr@ntid abbrstyle\endcsname{\csname Sp@cies#1\endcsname}}
+\newcommand{\newtaxon}[1]{\add@species@key{#1}{\expandafter\edef\csname\curr@ntid #1\endcsname{##1}}}
+\newcommand{\taxon}[1]{\Sh@wTax@n+(#1)+n+}
+\newcommand{\taxonfirst}[1]{\Sh@wTax@n+(#1)+a+}
+
+\def\Sh@wTax@n+(#1!#2!#3)+#4+{%
+ \expandafter\ifx\csname\curr@ntid#2\endcsname%
+ \relax%
+ \else%
+ \ifthenelse{\equal{#4}{n}}{%
+ #1\csname\curr@ntid#2\endcsname#3%
+ }{%
+ \edef\T@mpTax@n{\csname\curr@ntid#2\endcsname}%
+ #1\expandafter\Sh@wFirst\T@mpTax@n+#3%
+ }%
+ \fi%
+}
+
+\def\Sh@wFirst#1#2+{#1}
+\DeclareRobustCommand\taxitalics
+ {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+ \upshape \else \itshape \fi}
+\DeclareTextFontCommand{\taxit}{\taxitalics}
+\newtaxastyle{ePlant}
+ {\taxit{\taxon{!genus!}\taxon{ !epithet!}}\taxon{ (!oldauthor!)}\taxon{ !author!}}
+\newtaxastyle{eAnimal}
+ {\taxit{\taxon{!genus!}\taxon{ (!oldgenus!)}\taxon{ !epithet!}}\taxon{ (!oldauthor!}%
+ \taxon{, !oldyear!)}\taxon{!author!}\taxon{, !year!}}
+\newtaxastyle{f}
+ {\taxit{\taxon{!genus!}\taxon{ !epithet!}}}
+\newtaxastyle{a}
+ {\taxit{\taxonfirst{!genus!.}\taxon{ !epithet!}}}
+\newtaxastyle{g}
+ {\taxit{\taxon{!genus!}}}
+\defaultplante{ePlant}
+\defaultfunguse{ePlant}
+\defaultanimale{eAnimal}
+\defaultbacte{eAnimal}
+\defaultfull{f}
+\defaultabbr{a}
+\newcommand{\sh@wsp@cies}[3]{%
+ \ifthenelse{\equal{#2}{Q@D}}%
+ {\renewcommand{\curr@ntid}{#2@}}%
+ {\renewcommand{\curr@ntid}{#1#2@}}%
+ \ifthenelse{\equal{#3}{}}{%
+ \ifnum\value{\curr@ntid counter}=0%
+ \setcounter{\curr@ntid counter}{1}%
+ \expandafter\ifx\csname\curr@ntid fullstyle\endcsname\relax%
+ \csname Gl@balF@llStyle\endcsname%
+ \else%
+ \csname\curr@ntid fullstyle\endcsname %
+ \fi%
+ \else%
+ \expandafter\ifx\csname\curr@ntid abbrstyle\endcsname\relax%
+ \csname Gl@bal@bbrStyle\endcsname%
+ \else%
+ \csname\curr@ntid abbrstyle\endcsname%
+ \fi%
+ \fi%
+ }{%
+ \ifthenelse{\equal{#3}{e}}{%
+ \csname Gl@bal#1E@llStyle\endcsname%
+ }{%
+ \csname Sp@cies#3\endcsname%
+ }%
+ }%
+}
diff --git a/macros/latex/contrib/biocon/literature.bib b/macros/latex/contrib/biocon/literature.bib
new file mode 100644
index 0000000000..3ed48ed777
--- /dev/null
+++ b/macros/latex/contrib/biocon/literature.bib
@@ -0,0 +1,43 @@
+@comment{This file has been generated by Pybliographer}
+
+
+@Misc{Plants,
+ Author = {{W. Greuter} and {F. R. Barrie} and {H. M. Burdet} and
+ {W. G. Chaloner} and {V. Demoulin} and {D. L.
+ Hawksworth} and {P. M. J\o{}rgensen} and {D. H.
+ Nicolson} and {P. C. Silva} and {P. Trehane} and {J.
+ McNeill}},
+ Title = {International {C}ode of {B}otanical {N}omenclature},
+ Note = {\url{http://www.bgbm.fu-berlin.de/iapt/nomenclature/code/tokyo-e/default.htm}},
+ year = 1993,
+ month = aug,
+}
+
+@Book{Goossens1994,
+ Author = {Goossens, Michel and Samarin, Alexander and
+ Mittelbach, Frank},
+ Title = {The {\LaTeX} comapanion},
+ Publisher = {Addison-Wesley},
+ year = 1994,
+}
+
+@Manual{Carlisle1999,
+ Title = {The keyval package},
+ Author = {Carlisle, David},
+ year = 1999,
+ month = {16 } # mar,
+}
+
+@Misc{Bacteria,
+ Author = {{P.H.A. Sneath}},
+ Title = {International {C}ode of {N}omenclature of {B}acteria},
+ year = 1992,
+}
+
+@Misc{Animals,
+ Title = {International {C}ode of {Z}oological {N}omenclature},
+ Note = {\url{http://www.iczn.org/code.htm}},
+ year = 1999,
+ month = aug,
+}
+
diff --git a/macros/latex/contrib/biocon/manual-old.pdf b/macros/latex/contrib/biocon/manual-old.pdf
new file mode 100644
index 0000000000..9167d07895
--- /dev/null
+++ b/macros/latex/contrib/biocon/manual-old.pdf
Binary files differ
diff --git a/macros/latex/contrib/biocon/manual-old.tex b/macros/latex/contrib/biocon/manual-old.tex
new file mode 100644
index 0000000000..5310ea6ab3
--- /dev/null
+++ b/macros/latex/contrib/biocon/manual-old.tex
@@ -0,0 +1,77 @@
+\documentclass[a4paper]{article}
+\bibliographystyle{apalike}
+
+\usepackage{biocon}
+\newanimal{Homo sapiens}{}
+\newplant{Arabidopsis thaliana}{}
+
+\newcommand{\biocon}{{\tt biocon.sty}}
+
+\title{The \biocon\ package}
+\author{Pieter Edelman}
+
+\begin{document}
+ \maketitle
+
+ \begin{abstract}
+ \emph{Warning: this documentation is in an early state. Though usable, it is not very good at the moment.}
+ The \biocon\ package attempts to automate the typesetting of biological entities. At the moment only species typesetting is done (very basic at the moment). Section \ref{secSpeciesIntro} handles with the conventions on species typesetting, and how this package may help, while section \ref{secSpeciesCommands} handles the commands to properly typeset species.
+ \end{abstract}
+
+ \tableofcontents
+
+ \section{Introduction}
+ As a biologist (to-be, that is), I often have to write papers in which species are used. To write the scientific name of a species follows a strict convention, which can tell you a lot about the species (``can'', not ``will''). So it is very important that such a name is typeset correctly (and of course it is nice). That is why I am writing the \biocon---biological conventions---package.
+
+ I believe that the use macro's has some advantages. First of all, it can save a lot of typing (``can'', not ``will''). Second, you are sure every instance is typeset correctly.
+
+ Currently, the \biocon\ package does not follow all the conventions, but the basics are there. Besides species, also genes and their associated products should be typeset, and maybe even more.
+ %end{Introduction}
+
+ \section{Typesetting species}
+ \subsection{On species conventions}\label{secSpeciesIntro}
+ \emph{Note: knowledge of this section is not required for using the package and can be skipped.}
+
+ Typesetting biological species follows strict rules, laid down in \cite{ICBN} There is quite some discrepancy between typesetting of different kingdoms\footnote{``Kingdom'' is the lowest biosystematic branche existing. Although arbitary, the kingdoms exist of the Bacteria, Fungi, Planta and Animalia}, but there is one common factor, which is the basic species.
+
+ Species names are \emph{always} built up of the name of the genus\footnote{``Genus'' is the taxonomical branch direct between the species} and is followed by the species-specific epiteton (often referred to as species name, which is, strictly spoken wrong, because the species name is the full construction described here). This is followed by the abbreviatiated name of the person who first described the species.
+
+ For example, our own species, the human, has the scientific name ... In this, \emph{Homo} is the genus, \emph{sapiens} is the epiteton, and ... is the author.
+
+ But that's not all folks. The first letter of the genus is always capitalized, while the rest is in lowercase. The epiteton is in lowercase only. This construction should be {\it italic}, but the author not.
+
+ So, is that all folks?---No, of course it is not. In biological papers, it is not really nice to read the full name of a species, not even if the author is omitted. Instead, an abbreviated form is prefferd, consisting either of the first letter of the genus followed by the epiteton, or just the genus. And, of course, depending on the nature of the paper, somewhere the full name has to be used.
+
+ Got it all? If ``no'', that's ok, because the \biocon\ package is here (this does not mean the package is useless if you got it). This package will help you with typesetting the species properly.
+ %end{On species conventions}
+ \subsection{The commands}\label{secSpeciesCommands}
+ \subsubsection{Setting parameters}
+ \begin{description}
+ \item{{\tt $\backslash$newbacterium[Abbr]\{Genus epiton\}\{Author\}}, {{\tt $\backslash$newfungus[Abbr]\{Genus epiton\}\{Author\}}}, {{\tt $\backslash$newplant[Abbr]\{Genus epiton\}\{Author\}}}, {{\tt $\backslash$newanimal[Abbr]\{Genus epiton\}\{Author\}}}}\\
+ These commands are used to create new species names. Although a bit arbritary, four different classes of species are distinguished. This is because typesetting of these can differ.
+
+ Every species of course has a genus and epiteton, and these have to be given as the first mandatory argument. If the case is not correct, the \biocon\ package automatically corrects this. If the epiteton is not known, or if more members of af a genus are targeted, fill in respectively ``sp.'' and ``spp.'' for the genus. \emph{Don't forget the ``.''{!}}
+
+ The second mandatory argument is the author who first described the species. This field may be left blank if it is not going to be used (just write ``{\tt\{\}}'').
+
+ Every species of a given group has an unique identifier, by which the user can refer to it. By default, the capitalized first letter of the genus followed by the lowercase first letter of the epiteton is chosen (e.g. for \animal{Hs} this becomes ``Hs''). The optional argument speciefies another name. Please note that an identifier only has to be unique within a group, so a bacterium with the identifier ``Hs'' may exist besides an animal with the identifier ``Hs''.
+
+ \item{{\tt $\backslash$setabbreviation\{s|g\}}}\\
+ This command specifies how a species name is abbreviated. If ``{\tt s}'' (standard) is chosen (which is the default), a species name is abbreviated to G.~epiteton (e.g. \plant[ad]{At}). Otherwise if ``{\tt g}'' (genus) is chosen, then the genus name is used as abbreviation (e.g. \plant[gd]{At}).
+ \end{description}
+ %End{Setting parameters}
+ \subsubsection{Using parameters}
+ \begin{description}
+ \item{{\tt $\backslash$bacterium[a|g|l|e(d)]\{Abbr\}}, {\tt $\backslash$fungus[a|g|l|e(d)]\{Abbr\}}, {\tt $\backslash$plant[a|g|l|e(d)]\{Abbr\}}, {\tt $\backslash$animal[a|g|l|e(d)]\{Abbr\}}}\\
+ This command is used to actually display a species name. In its simplest form, just the identifier is given. It then depends on the situation what output is given; if a species name is used the first time in the document, the full name (Genus epiteton). If it is used for the second time or more, it is abbreviated according to how it is specified with {\tt $\backslash$setabbreviation}.
+
+ However, with the optional arguments, other modes can be forced. ``{\tt a}'' stands for ``abbreviated''. When this option is invoked, a name is always abbreviated to the abbreviation defined with {\tt $\backslash$setabbreviation}. ``{\tt g}'' stand for ``genus'' and with this option, only the genus name is displayed. When ``{\tt s}'' is used the name is abbreviated in the standard way (G. epiteton). With ``{\tt l}'' which stands for ``long'', the full name (Genus epiteton) can be forced. And with ``{\tt e}'' for ``extended'', the complete name inclusive author can be specified.
+ \end{description}
+ %end{Using parameters}
+ %end{The commands}
+ %end{Typesetting species}
+
+ \bibliography{Bibliography}
+\end{document}
+
+
diff --git a/macros/latex/contrib/biocon/manual.pdf b/macros/latex/contrib/biocon/manual.pdf
new file mode 100644
index 0000000000..4ffc95743e
--- /dev/null
+++ b/macros/latex/contrib/biocon/manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/biocon/manual.tex b/macros/latex/contrib/biocon/manual.tex
new file mode 100644
index 0000000000..cb03bace11
--- /dev/null
+++ b/macros/latex/contrib/biocon/manual.tex
@@ -0,0 +1,73 @@
+\documentclass{article}
+\usepackage{biocon}
+\newtaxon{strain}
+\newplant{At}{genus=Arabidopsis,epithet=thaliana,author=Heynh.,oldauthor=L.,strain=1100}
+\newtaxastyle{WithStrain}{\taxit{\taxonfirst{!genus!.}\taxon{ !epithet!}}\taxon{ \#!strain!}}
+\usepackage{hyperref}
+\usepackage{ulem}
+\usepackage{verbatim}
+\makeatletter
+\newenvironment{breakverbatim}{\def\@xobeysp{\ }\verbatim}{\endverbatim}
+\makeatother
+
+\bibliographystyle{plain}
+
+\newcommand{\biocon}{\texttt{biocon}}
+\title{The \biocon\ package}
+\author{Pieter Edelman}
+
+\begin{document}
+\maketitle
+\tableofcontents
+
+\begin{abstract}
+The \biocon---biological conventions--- package aids the typesetting of some biological conventions. At the moment, it does a good job at typesetting species names (and ranks below the species level). A distinction is made between the Plant, Fungi, Animalia and Bacteria kingdom. The species names are typeset in a default way but can be customized. Different default styles are used in different situations.
+\end{abstract}
+\section{Introduction}
+The correct typesetting of biological species and ranks below species follows some strict rules, which are sometimes hard to remember for ``average'' users. Even worse, animals, bacteria, and plants and fungi follow different rules, as described in \cite{Animals}, \cite{Bacteria}, \cite{Plants}. However, throughout normal texts more simple rules are used.
+
+A little example: ``Thale Cress'', a small plant which is often used by plant molecular biologists, should be written as ``\plant[e]{At}''. Every species consists of the capitalized name of the genus to which the species belongs (\plantlike{genus=arabidopsis}), followed by a species-specific epithet (\taxit{thaliana}). For plants, this should be followed by the name of the author who described the plant (Heynh.). However, this plant was first described with a different name by Linnaeus, who created this system (which has changed a lot ever since), so this name should be included in parentheses (L.). It is common use to write the taxa capitalized.
+
+However, if I were to write a paper about this plant, I would just write \plant{At} the first time, and in further occurances \plant{At} or, since it is such a common used plant, \plant[g]{At}. Only in the ``material and methods'' section, the exact name is written. But here also the ecotype and possible strain or batch should be included in the name. Pfff....
+
+The \biocon\ package simplifies this typesetting and ensures a consistent writing of the names throughout a document.
+\section{Simple use}
+Like all packages, this package can be loaded by typing \verb!\usepackage{biocon}! in the preamble of the document. There are no options which can be passed to the package here.
+
+The package provides the command pairs \verb!\newplant! \& \verb!\plant!, \verb!\newfungus! \& \verb!\fungus!, \verb!\newanimal! \& \verb!\animal!, \verb!\newbact! \& \verb!\bact! for often used species, and similar \verb!\plantlike!, \verb!\funguslike!, \verb!\animallike!, \verb!\bactlike! for single-time uses.
+
+The commands starting with \verb!\New! are used to describe a species, and take the following arguments \{\textit{identifier}\}\{\textit{parameters}\}. \textit{Identifier} is an unique string consisting of alphanumeric characters to describe the species (e.g. \textit{At}). \textit{Parameters} are the parameters which make up the species name, as \texttt{key=value} pairs. The standard keys are \textit{genus, oldgenus, epithet, author, oldauthor, year, oldyear}. See section~\ref{sec:Power use} on how to add more taxa. For example, the command to specify \plant{At} was:\begin{breakverbatim}\newplant{At}{genus=Arabidopsis,epithet=thaliana,author=Heynh.,oldauthor=L.}\end{breakverbatim}
+
+The commands to use them take the arguments [\textit{how}]\{\textit{identifier}\}. \textit{how} is how the species can be typeset, and this is by default ``e'' (\textbf{e}xtended) for the complete name with author and all that stuff, ``f'' (\textbf{f}ull) for the simple \textit{Genus epithet} form, ``a'' (\textbf{a}bbreviated) for the \textit{G. epithet} form, or ``g'' (\textbf{g}enus) for \textit{Genus}. If \textit{how} is not specified, it defaults to ``full'' the first time it is used, and ``abbreviated'' on any subsequent occasion. In section~\ref{sec:Power use} it is explained how custom styles can be created and default style can be set.
+
+The commands ending on \verb!Like! are a mixture between the declaration and the using commands. They take the arguments [\textit{how}]\{\textit{parameters}\}, which are the same as described above. These commands are for species which are used a single time.
+
+\section{Power use \texttt{;-)}}\label{sec:Power use}
+Of course this is vastly exaggerated, but the package is quite configurable. The user can create new taxa, new styles, set the default full-and abbreviation styles globally, or for each species individually.
+
+New taxa are generated by the \verb!\newtaxon! command. It takes the name of the new taxon as its argument, after which it can be used as any other taxon in the parameter list of the species commands.
+
+Of course, they also have to be able to used somewhere. This can be done with the \verb!\newtaxastyle! command. It takes \{\textit{name}\}\{\textit{style}\} as its arguments. \textit{Name} is an unique string of alphanumeric characters that functions as the name of the style. The \textit{style} is made up of text and \verb!\taxon! and \verb!\taxonfirst! commands. These are essentially the same commands which check whether the specified taxon exists, and if it does writes out the specified taxon and the specified text around it. \verb!TaxonFirst! writes only the first letter. These commands take the argument\{\textit{pre}!\textit{taxon}!\textit{post}\}. Often it is required that the taxa are written in italics, except when the surrounding text is in italics. For this the \verb!\taxit! command is provided, which is shamelessly copied verbatim from the \verb!\emph! command from \texttt{latex.ltx}. \emph{Don't use \texttt{emph} for this, for this is provided for emphasizing text, and this can be modified (as it is here).} For example, suppose I want to add a strain number to \plant{At}. I can do this by \verb!\newtaxon{strain}!. Then a new style which looks like the abbreviated style but with the strain number appended can be defined using \begin{breakverbatim}\newtaxastyle{WithStrain}{\taxit{\taxonfirst{!genus!.}\taxon{ !epithet!}}\#\taxon{ !strain!}}\end{breakverbatim}
+Then, if the original \verb!\newplant! command was \begin{breakverbatim}\newplant{At}{genus=Arabidopsis,epithet=thaliana,author=Heynh.,oldauthor=L.,strain=1100}\end{breakverbatim}
+the command \verb!\plant[WithStrain]{At}! produces \plant[WithStrain]{At}.
+
+It is possible to set default styles for extended name, full name and for abbreviation. To do this globally, the commands \verb!\defaultplante!, \verb!\defaultfunguse!, \verb!\defaultanimale!, \defaultbacte!, \verb!\defaultfull! and \verb!\defaultabbr! are provided. They take as its argument the name of a style, which can be a default style\footnote{The default extended styles for are called ``ePlant'' for plants and fungi, and ``eAnimal'' for animals and bacteria. See also section~\ref{sec:Bugs etc.}} or a created style. Furthermore, the keys \verb!abbrstyle! and \verb!fullstyle! can be used in the parameter list of the commands, to set these styles specific for the species.
+
+\section{Bugs, errors and everything else you don't want in a package}\label{sec:Bugs etc.}
+This package is probably not free of bugs. If you find any behavior you don't expect, please let \href{mailto:P.Edelman@gmx.net}{me} know (even if you think you don't understand the working of the package, in that case this manual is not good enough). \emph{This version of the \biocon\ package is not backwards compatible with the old version. You can still grab the old version from CTAN.}
+
+Furthermore, I am a biologist (to-be), but my taxonomy knowledge is limited to the basics. Chances are that the styles I provided are not entirely correct (especially for the bacteria I don't know the official typesetting rules). If you know better please let \href{mailto:P.Edelman@gmx.net}{me} know. One thing still, if you think that there are some options which should be absolutely included, you can also let \href{mailto:P.Edelman@gmx.net}{me} know.
+
+Pieter Edelman\\
+\href{mailto:P.Edelman@gmx.net}{P.Edelman@gmx.net}
+
+\section{Links}
+\subsection{Information on taxonomy}
+By far the most entertaining site on taxonomy is IMHO \href{http://www.best.com/~atta/taxonomy.html}{Curiosities of Biological Taxonomy}.
+\subsection{Other \LaTeX\ packages}
+\begin{itemize}
+ \item\href{http://www.ctan.org/tex-archive/macros/latex/contrib/supported/dichokey/}{dichokey} Construct dichotomous identification keys.
+ \item\href{http://www.ctan.org/tex-archive/macros/latex/contrib/supported/texshade/}{texshade} Package for setting nucleotide and peptide alignments.
+\end{itemize}
+\bibliography{literature}
+\end{document}
diff --git a/macros/latex/contrib/biocon/source.pdf b/macros/latex/contrib/biocon/source.pdf
new file mode 100644
index 0000000000..d859466ce0
--- /dev/null
+++ b/macros/latex/contrib/biocon/source.pdf
Binary files differ
diff --git a/macros/latex/contrib/biocon/source.tex b/macros/latex/contrib/biocon/source.tex
new file mode 100644
index 0000000000..d7da11f485
--- /dev/null
+++ b/macros/latex/contrib/biocon/source.tex
@@ -0,0 +1,350 @@
+\documentclass{article}% ===> this file was generated automatically by noweave --- better not edit it
+\usepackage{noweb}
+\usepackage{hyperref}
+\usepackage[a4paper,margin=1.5cm]{geometry}
+
+\newcommand{\biocon}{\texttt{biocon}}
+
+\title{The \biocon\ package}
+\author{Pieter Edelman}
+
+\bibliographystyle{plain}
+
+\begin{document}
+\nwfilename{biocon.nw}\nwbegindocs{1}\nwdocspar
+\maketitle
+
+\begin{abstract}
+The \biocon\ package handles the typesetting of scientific species names. There are different modes of showing these names. Multiple occurances in the same document are taken care of.
+\end{abstract}
+\tableofcontents
+\section{The built-up of the package}
+According to \cite{Goossens1994}, each package foolows a standard built-up, which is:
+\nwenddocs{}\nwbegincode{2}\moddef{biocon.sty}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}Identification part\RA{}
+\LA{}Declaration of options\RA{}
+\LA{}Execution of options\RA{}
+\LA{}Package loading\RA{}
+\LA{}Main code\RA{}
+\nwendcode{}\nwbegindocs{3}\nwdocspar
+The identification part is easy. This package is designed exclusively for \LaTeXe, and it provides the \biocon\ package.
+\nwenddocs{}\nwbegincode{4}\moddef{Identification part}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\NeedsTeXFormat\{LaTeX2e\}
+\\ProvidesPackage\{biocon\}[2001/08/18]
+\nwendcode{}\nwbegindocs{5}\nwdocspar
+\section{The user interface}
+\subsection{Brief syntax}
+\nwenddocs{}\nwbegincode{6}\moddef{Main code}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}Declarations\RA{}
+\LA{}The user interface\RA{}
+\LA{}Internal workings\RA{}
+\nwendcode{}\nwbegindocs{7}\nwdocspar
+The \biocon\ package automates the process of typesetting biological species names. Different conventions are followed for animals, bacteria, plants and fungi (the latter two follow the same conventions). These four main groups are used in this package. The amount of information the user provides is variable, for example the user should be able to typeset the full name with genus, old genus, author etc., but also just the normal binomial name.
+
+Two kinds of commands are provided to reach this goal, the first is for quick-n-dirty use-only-once names. The other is a set of commands were first the species is declared, and then used throughout the document.
+
+The quick-n-dirty commands look like:
+\begin{itemize}
+ \item\verb!\plantlike [!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\funguslike[!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\animallike[!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+ \item\verb!\bactlike [!\textit{how}\verb!]{!\textit{parameters}\verb!}!
+\end{itemize}
+
+The declaration commands look like:
+\begin{itemize}
+ \item\verb!\newplant {!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newfungus{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newanimal{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+ \item\verb!\newbact {!\textit{identifier}\verb!}{!\textit{parameters}\verb!}!
+\end{itemize}
+
+Declarated species can be used with
+\begin{itemize}
+ \item\verb!\plant [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\fungus[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\animal[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\bact [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+\end{itemize}
+
+In these commands, \textit{parameters} define the actual species. They can consist of genus, oldgenus, epithet, oldepithet, author, year, oldauthor, and oldyear, and follow a \verb!key=value! syntax. Furthermore, more parameters can be defined by the user. The \textit{identifier} is the identifier by which a species is recognized by the user. The commands to declare species are discussed below, while the commands to use them are discussed later.
+
+The declaration commands are all piped through a single command. The quick-n-dirty commands also declare a new species, but always with the same identifier. This command is the \verb!\n@wsp@cies{!\textit{type}\verb!}{!\textit{identifier}\verb!}{!\textit{parameters}\verb!}! command, where \textit{type} is P, F, A, B for plant, fungus, animal or bacterium.
+\subsection{The implementation for the declaration part}
+As described above, all the declaration commands are piped through a single command (the quick-n-dirty commands don't get a \textit{type} identifier, only a single identifier is needed):
+\nwenddocs{}\nwbegincode{8}\moddef{The user interface}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\newplant\}[2]\{\\n@wsp@cies\{P\}\{#1\}\{#2\}\}
+\\newcommand\{\\newfungus\}[2]\{\\n@wsp@cies\{F\}\{#1\}\{#2\}\}
+\\newcommand\{\\newanimal\}[2]\{\\n@wsp@cies\{A\}\{#1\}\{#2\}\}
+\\newcommand\{\\newbact\}[2]\{\\n@wsp@cies\{B\}\{#1\}\{#2\}\}
+
+\\newcommand\{\\plantlike\}[2][]
+ \{\\n@wsp@cies\{\}\{Q@D\}\{#2\}\\plant[#1]\{Q@D\}\\expandafter\\Q@DCleanup\\Q@DCleanList+\}
+\\newcommand\{\\funguslike\}[2][]
+ \{\\n@wsp@cies\{\}\{Q@D\}\{#2\}\\fungus[#1]\{Q@D\}\\expandafter\\Q@DCleanup\\Q@DCleanList+\}
+\\newcommand\{\\animallike\}[2][]
+ \{\\n@wsp@cies\{\}\{Q@D\}\{#2\}\\animal[#1]\{Q@D\}\\expandafter\\Q@DCleanup\\Q@DCleanList+\}
+\\newcommand\{\\bactlike\}[2][]
+ \{\\n@wsp@cies\{\}\{Q@D\}\{#2\}\\bact[#1]\{Q@D\}\\expandafter\\Q@DCleanup\\Q@DCleanList+\}
+\nwendcode{}\nwbegindocs{9}\nwdocspar
+\section{The internal workings}
+For now, we ignore the commands to use the declared species, and instead define the internal workings of the \verb!\n@wsp@cies! command.
+
+Since the \verb!key=value! syntax is used, the \texttt{keyval} package is needed:
+\nwenddocs{}\nwbegincode{10}\moddef{Package loading}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\RequirePackage\{keyval\}
+\nwendcode{}\nwbegindocs{11}\nwdocspar
+The \verb!\n@wsp@cies! command creates a command for all the different parameters it gets, which name is of \textit{TypeIdentifier@Parametername}, for example, if the command would be \verb!\n@wsp@cies{A}{Hs}{genus=homo,epithet=sapiens}!, it would define the commands \verb!\AHs@genus! and \verb!\AHs@epiteth!.
+\nwenddocs{}\nwbegincode{12}\moddef{Internal workings}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The n@wsp@cies command\RA{}
+\nwendcode{}\nwbegindocs{13}\nwdocspar
+\nwenddocs{}\nwbegincode{14}\moddef{The n@wsp@cies command}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\n@wsp@cies\}[3]\{%
+\nwendcode{}\nwbegindocs{15}\nwdocspar
+First this function determines what the first part of all the commands should be. It stores this in a parameter called \verb!\curr@ntid!.
+\nwenddocs{}\nwbegincode{16}\moddef{Declarations}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\curr@ntid\}\{\}
+\nwendcode{}\nwbegindocs{17}\nwdocspar
+\nwenddocs{}\nwbegincode{18}\moddef{The n@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\renewcommand\{\\curr@ntid\}\{#1#2@\}%
+\nwendcode{}\nwbegindocs{19}\nwdocspar
+This command also adds a counter with name \textit{Curr@ntID}\verb!counter!, which will be used to track whether this command has been used before (0 for no, 1 for yes) (for Q@D an exception is made).
+\nwenddocs{}\nwbegincode{20}\moddef{Declarations}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcounter\{Q@D@counter\}
+\nwendcode{}\nwbegindocs{21}\nwdocspar
+The \verb!\n@wsp@cies! command uses the \texttt{ifthen} package.
+\nwenddocs{}\nwbegincode{22}\moddef{Package loading}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\RequirePackage\{ifthen\}
+\nwendcode{}\nwbegindocs{23}\nwdocspar
+\nwenddocs{}\nwbegincode{24}\moddef{The n@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\ifthenelse\{\\equal\{#2\}\{Q@D\}\}%
+ \{\\relax\}%
+ \{\\newcounter\{\\curr@ntid counter\}\}%
+\\setcounter\{\\curr@ntid counter\}\{0\}%
+\nwendcode{}\nwbegindocs{25}\nwdocspar
+Then it goes forth by processing all the parameters. According to \cite{Carlisle1999}, for every key an apart function should exist. For the quick-n-dirty commands a \verb!\Q@DCleanList! command is created to which holds all the possible keys with \verb!\relax! associated. The \verb!\Q@DCleanup! commands sets these keys (this is to prevent old values from being used when a value is not given).
+\nwenddocs{}\nwbegincode{26}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The key=value functions\RA{}
+\nwendcode{}\nwbegindocs{27}\nwdocspar
+\nwenddocs{}\nwbegincode{28}\moddef{The key=value functions}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\def\\Q@DCleanup#1+\{\\n@wsp@cies\{\}\{Q@D\}\{#1\}\}
+
+\\newcommand\{\\add@species@key\}[2]\{%
+ \\define@key\{SpeciesParams\}\{#1\}\{#2\}
+ \\expandafter\\ifx\\csname Q@DCleanList\\endcsname\\relax%
+ \\def\\Q@DCleanList\{#1=\\relax\}%
+ \\else%
+ \\edef\\Q@DCleanList\{\\Q@DCleanList,#1=\\relax\}%
+ \\fi%
+\}
+\nwendcode{}\nwbegindocs{29}\nwdocspar
+\nwenddocs{}\nwbegincode{30}\moddef{The n@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\setkeys\{SpeciesParams\}\{#3\}%
+\}
+\nwendcode{}\nwbegindocs{31}\nwdocspar
+The handler for the genus should make sure it is written capitalized. Therefore a function is made which splits the first letter of a word. It used more often in this package.
+\nwenddocs{}\nwbegincode{32}\moddef{Declarations}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\T@mpFirst\}\{\}
+\\newcommand\{\\T@mpRest\}\{\}
+\nwendcode{}\nwbegincode{33}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\def\\SplitG@nusL@tters(#1#2)\{%
+ \\uppercase\{\\renewcommand\{\\T@mpFirst\}\{#1\}\}\\lowercase\{\\renewcommand\{\\T@mpRest\}\{#2\}\}\}
+\nwendcode{}\nwbegindocs{34}\nwdocspar
+Then the genus is processed and stored in the right way.
+\nwenddocs{}\nwbegincode{35}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\add@species@key\{genus\}\{%
+ \\SplitG@nusL@tters(#1)%
+ \\expandafter\\edef\\csname\\curr@ntid genus\\endcsname\{\\T@mpFirst\\T@mpRest\}%
+\}
+\nwendcode{}\nwbegindocs{36}\nwdocspar
+Of course, this also goes for the old genus.
+\nwenddocs{}\nwbegincode{37}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\add@species@key\{oldgenus\}\{%
+ \\SplitG@nusL@tters(#1)%
+ \\expandafter\\edef\\csname\\curr@ntid oldgenus\\endcsname\{\\T@mpFirst\\T@mpRest\}%
+\}
+\nwendcode{}\nwbegindocs{38}\nwdocspar
+The epithet and old epithet all have to be completely lowercase.
+\nwenddocs{}\nwbegincode{39}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\add@species@key\{epithet\}\{\\lowercase\{\\expandafter\\edef\\csname\\curr@ntid epithet\\endcsname\{#1\}\}\}
+\\add@species@key\{oldepithet\}\{\\lowercase\{\\expandafter\\edef\\csname\\curr@ntid oldepithet\\endcsname\{#1\}\}\}
+\nwendcode{}\nwbegindocs{40}\nwdocspar
+And there are the author, old author year and the old year.
+\nwenddocs{}\nwbegincode{41}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\add@species@key\{author\}\{\\expandafter\\edef\\csname\\curr@ntid author\\endcsname\{#1\}\}
+\\add@species@key\{year\}\{\\expandafter\\edef\\csname\\curr@ntid year\\endcsname\{#1\}\}
+\\add@species@key\{oldauthor\}\{\\expandafter\\edef\\csname\\curr@ntid oldauthor\\endcsname\{#1\}\}
+\\add@species@key\{oldyear\}\{\\expandafter\\edef\\csname\\curr@ntid oldyear\\endcsname\{#1\}\}
+\nwendcode{}\nwbegindocs{42}\nwdocspar
+As mentioned, the user should also be able to add own taxonomical structures. Herefore a the \verb!\newtaxon{!\textit{name}\verb!}! is used.
+\nwenddocs{}\nwbegincode{43}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\newtaxon\}[1]\{\\add@species@key\{#1\}\{\\expandafter\\edef\\csname\\curr@ntid #1\\endcsname\{##1\}\}\}
+\nwendcode{}\nwbegindocs{44}\nwdocspar
+Two special keys are for the default full style and the default abbreviation.
+\nwenddocs{}\nwbegincode{45}\moddef{The key=value functions}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\define@key\{SpeciesParams\}\{fullstyle\}
+ \{\\expandafter\\def\\csname\\curr@ntid fullstyle\\endcsname\{\\csname Sp@cies#1\\endcsname\}\}
+\\define@key\{SpeciesParams\}\{abbrstyle\}
+ \{\\expandafter\\def\\csname\\curr@ntid abbrstyle\\endcsname\{\\csname Sp@cies#1\\endcsname\}\}
+\nwendcode{}\nwbegindocs{46}\nwdocspar
+\subsection{The implementation for the use part part}
+There's a lot to do with the actual showing of a species. This package was born from the the desire to automagically show \textit{Genus epithet} the first time a species was used, but us \textit{G. epithet} all subsequent times. However, sometimes an abbreviation should just be \textit{Genus}, and someimes the full name is required. Even more, writing the complete species names with subspecies and old genus stuff etc. is better left to the computer. By default, four different modes of typesetting are provided; the \textit{how} parameter specifies how the name should be typeset, this can be \textbf{e}xtended, which gives all available information, \textbf{l}ong, which gives genus and epithet, \textbf{a}bbreviated, which gives the first letter of the genus followed by the epithet, and \textbf{g}enus, which gives the genus only. It is also possible for the user to create typesetting schemes, and to set the default full name and abbreviation per species or globally.
+
+Let's start with the commands used to write out the names stored in \LaTeX' memory. These are accesible by the user and are already discussed:
+\begin{itemize}
+ \item\verb!\plant [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\fungus[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\animal[!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+ \item\verb!\bact [!\textit{how}\verb!]{!\textit{identifier}\verb!}!
+\end{itemize}
+These command use ``style'' commands to do the actual typesetting. A ``style'' command contains text and \\\verb!\taxon{!\textit{pre}\verb+!+\textit{name}\verb+!+\textit{post}\verb!}! commands. Text is shown verbatim. The \verb!\taxon! command shows the taxon \textit{name} for the current species enclosed by \textit{pre} and \textit{post} if this taxon exists. So the typesetting is done by \verb!\plant!/\verb!Fungus!/\verb!Animal!/\verb!Bact!$\rightarrow$\textit{style command}$\rightarrow$\verb!\taxon!. Besides the \verb!Taxon! command, there is a similar \verb!FirstTaxon! command, which shows only the first letter of that taxon.
+\nwenddocs{}\nwbegincode{47}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The Taxon commands\RA{}
+\nwendcode{}\nwbegindocs{48}\nwdocspar
+Both the \verb!\taxon! and the \verb!\taxonfirst! command pipe through a single \verb!\Sh@wTax@n! command, which takes its argument in the form of \verb!+(!\textit{pre}\verb.!.\textit{name}\verb.!.\textit{post}\verb!)+!\textit{how}\verb!+!. The unique enclosures are needed to prevent interference with the \textit{pre} and \textit{post} from the user. \textit{how} is either \textit{n} for normal or \textit{a} for abbreviated (first letter only).
+\nwenddocs{}\nwbegindocs{49}\nwdocspar
+\nwenddocs{}\nwbegincode{50}\moddef{The Taxon commands}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\taxon\}[1]\{\\Sh@wTax@n+(#1)+n+\}
+\\newcommand\{\\taxonfirst\}[1]\{\\Sh@wTax@n+(#1)+a+\}
+
+\\def\\Sh@wTax@n+(#1!#2!#3)+#4+\{%
+\nwendcode{}\nwbegindocs{51}\nwdocspar
+\verb!\curr@ntid! is the ID of the species currently treated. This will be discussed later.
+\nwenddocs{}\nwbegincode{52}\moddef{The Taxon commands}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \\expandafter\\ifx\\csname\\curr@ntid#2\\endcsname%
+ \\relax%
+\nwendcode{}\nwbegindocs{53}\nwdocspar
+If the taxon exist, the function checks if it should display normal, and if this is the case it should display \textit{pre}, the taxon, and \textit{post}.
+\nwenddocs{}\nwbegincode{54}\moddef{The Taxon commands}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \\else%
+ \\ifthenelse\{\\equal\{#4\}\{n\}\}\{%
+ #1\\csname\\curr@ntid#2\\endcsname#3%
+\nwendcode{}\nwbegindocs{55}\nwdocspar
+Otherwise, only the first letter should be displayed. This is done by expanding the current taxon into the macro \verb!\T@mpTax@n! which is used as argument for the lettersplitting function.
+\nwenddocs{}\nwbegincode{56}\moddef{The Taxon commands}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \}\{%
+ \\edef\\T@mpTax@n\{\\csname\\curr@ntid#2\\endcsname\}%
+ #1\\expandafter\\Sh@wFirst\\T@mpTax@n+#3%
+ \}%
+ \\fi%
+\}
+
+\\def\\Sh@wFirst#1#2+\{#1\}
+\nwendcode{}\nwbegindocs{57}\nwdocspar
+New style can be created with the \verb!\newtaxastyle{!\textit{name}\verb!}{!\textit{style}\verb!}! command, where \textit{name} is an identifier for that style, and \textit{style} is, well, the style.
+\nwenddocs{}\nwbegincode{58}\moddef{The user interface}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The newtaxastyle command\RA{}
+\nwendcode{}\nwbegindocs{59}\nwdocspar
+\nwenddocs{}\nwbegincode{60}\moddef{The newtaxastyle command}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\newtaxastyle\}[2]\{\\expandafter\\def\\csname Sp@cies#1\\endcsname\{#2\}\}
+\nwendcode{}\nwbegindocs{61}\nwdocspar
+It is often the case that some names should be printed in italics if the rest of the text is upright, or vice versa. Herefore the command \verb!\taxit{}! is provided, which is the same as \verb!\em! in \verb!latex.ltx!.
+\nwenddocs{}\nwbegincode{62}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\DeclareRobustCommand\\taxitalics
+ \{\\@nomath\\em \\ifdim \\fontdimen\\@ne\\font >\\z@
+ \\upshape \\else \\itshape \\fi\}
+\\DeclareTextFontCommand\{\\taxit\}\{\\taxitalics\}
+\nwendcode{}\nwbegindocs{63}\nwdocspar
+Using this, the default type can be implemented.
+\nwenddocs{}\nwbegincode{64}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newtaxastyle\{ePlant\}
+ \{\\taxit\{\\taxon\{!genus!\}\\taxon\{ !epithet!\}\}\\taxon\{ (!oldauthor!)\}\\taxon\{ !author!\}\}
+\\newtaxastyle\{eAnimal\}
+ \{\\taxit\{\\taxon\{!genus!\}\\taxon\{ (!oldgenus!)\}\\taxon\{ !epithet!\}\}\\taxon\{ (!oldauthor!\}%
+ \\taxon\{, !oldyear!)\}\\taxon\{!author!\}\\taxon\{, !year!\}\}
+\\newtaxastyle\{f\}
+ \{\\taxit\{\\taxon\{!genus!\}\\taxon\{ !epithet!\}\}\}
+\\newtaxastyle\{a\}
+ \{\\taxit\{\\taxonfirst\{!genus!.\}\\taxon\{ !epithet!\}\}\}
+\\newtaxastyle\{g\}
+ \{\\taxit\{\\taxon\{!genus!\}\}\}
+\nwendcode{}\nwbegindocs{65}\nwdocspar
+Now the default styles can be set.
+\nwenddocs{}\nwbegincode{66}\moddef{Declarations}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\Gl@balF@llStyle\}\{\}
+\\newcommand\{\\Gl@bal@bbrStyle\}\{\}
+\\newcommand\{\\Gl@balPE@llStyle\}\{\}
+\\newcommand\{\\Gl@balFE@llStyle\}\{\}
+\\newcommand\{\\Gl@balAE@llStyle\}\{\}
+\\newcommand\{\\Gl@balBE@llStyle\}\{\}
+\nwendcode{}\nwbegindocs{67}\nwdocspar
+\nwenddocs{}\nwbegincode{68}\moddef{The user interface}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\defaultplante\}[1]
+ \{\\renewcommand\{\\Gl@balPE@llStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\\newcommand\{\\defaultfunguse\}[1]
+ \{\\renewcommand\{\\Gl@balFE@llStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\\newcommand\{\\defaultanimale\}[1]
+ \{\\renewcommand\{\\Gl@balAE@llStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\\newcommand\{\\defaultbacte\}[1]
+ \{\\renewcommand\{\\Gl@balBE@llStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\\newcommand\{\\defaultfull\}[1]
+ \{\\renewcommand\{\\Gl@balF@llStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\\newcommand\{\\defaultabbr\}[1]
+ \{\\renewcommand\{\\Gl@bal@bbrStyle\}\{\\csname Sp@cies#1\\endcsname\}\}
+\nwendcode{}\nwbegindocs{69}\nwdocspar
+\nwenddocs{}\nwbegincode{70}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\defaultplante\{ePlant\}
+\\defaultfunguse\{ePlant\}
+\\defaultanimale\{eAnimal\}
+\\defaultbacte\{eAnimal\}
+\\defaultfull\{f\}
+\\defaultabbr\{a\}
+\nwendcode{}\nwbegindocs{71}\nwdocspar
+The calling commands fisrt set \verb!\curr@ntid! to the current ID (duh!). Furthermore, they have a decision tree: if no style is provided, then it is determined whether or not this is the first use in the document, and action is taken appropiately. This is all done using the \verb!\sh@wsp@cies{!\textit{type}\verb!}{!\textit{ID}\verb!}{!\textit{how}\verb!}!.
+\nwenddocs{}\nwbegincode{72}\moddef{The user interface}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The calling commands\RA{}
+\nwendcode{}\nwbegindocs{73}\nwdocspar
+\nwenddocs{}\nwbegincode{74}\moddef{The calling commands}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\plant\}[2][]\{\\sh@wsp@cies\{P\}\{#2\}\{#1\}\}
+\\newcommand\{\\fungus\}[2][]\{\\sh@wsp@cies\{F\}\{#2\}\{#1\}\}
+\\newcommand\{\\animal\}[2][]\{\\sh@wsp@cies\{A\}\{#2\}\{#1\}\}
+\\newcommand\{\\bact\}[2][]\{\\sh@wsp@cies\{B\}\{#2\}\{#1\}\}
+\nwendcode{}\nwbegindocs{75}\nwdocspar
+First, the command sets \verb!\curr@ntid! (if it's Q@D no \textit{type} should be set).
+\nwenddocs{}\nwbegincode{76}\moddef{Internal workings}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\LA{}The sh@wsp@cies command\RA{}
+\nwendcode{}\nwbegindocs{77}\nwdocspar
+\nwenddocs{}\nwbegincode{78}\moddef{The sh@wsp@cies command}\endmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+\\newcommand\{\\sh@wsp@cies\}[3]\{%
+ \\ifthenelse\{\\equal\{#2\}\{Q@D\}\}%
+ \{\\renewcommand\{\\curr@ntid\}\{#2@\}\}%
+ \{\\renewcommand\{\\curr@ntid\}\{#1#2@\}\}%
+\nwendcode{}\nwbegindocs{79}\nwdocspar
+Then there is checked for a provided style.
+\nwenddocs{}\nwbegincode{80}\moddef{The sh@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \\ifthenelse\{\\equal\{#3\}\{\}\}\{%
+ \\ifnum\\value\{\\curr@ntid counter\}=0%
+\nwendcode{}\nwbegindocs{81}\nwdocspar
+If this is not the case, it is checked whether this is the first time the species is used. Of it is, for default full style is checked and used.
+\nwenddocs{}\nwbegincode{82}\moddef{The sh@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \\setcounter\{\\curr@ntid counter\}\{1\}%
+ \\expandafter\\ifx\\csname\\curr@ntid fullstyle\\endcsname\\relax%
+ \\csname Gl@balF@llStyle\\endcsname%
+ \\else%
+ \\csname\\curr@ntid fullstyle\\endcsname %
+ \\fi%
+\nwendcode{}\nwbegindocs{83}\nwdocspar
+Otherwise, the default abbreviation is checked and used.
+\nwenddocs{}\nwbegincode{84}\moddef{The sh@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \\else%
+ \\expandafter\\ifx\\csname\\curr@ntid abbrstyle\\endcsname\\relax%
+ \\csname Gl@bal@bbrStyle\\endcsname%
+ \\else%
+ \\csname\\curr@ntid abbrstyle\\endcsname%
+ \\fi%
+ \\fi%
+\nwendcode{}\nwbegindocs{85}\nwdocspar
+If a style is provided, use this style. If this style is ``extended'', select the appropiate style for the kingdom.
+\nwenddocs{}\nwbegincode{86}\moddef{The sh@wsp@cies command}\plusendmoddef\nwstartdeflinemarkup\nwenddeflinemarkup
+ \}\{%
+ \\ifthenelse\{\\equal\{#3\}\{e\}\}\{%
+ \\csname Gl@bal#1E@llStyle\\endcsname%
+ \}\{%
+ \\csname Sp@cies#3\\endcsname%
+ \}%
+ \}%
+\}
+\nwendcode{}\nwbegindocs{87}\nwdocspar
+\bibliography{literature}
+\end{document}
+\nwenddocs{}