summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biocon
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-09 00:44:40 +0000
committerKarl Berry <karl@freefriends.org>2006-01-09 00:44:40 +0000
commitb4fc5f639874db951177ec539299d20908adb654 (patch)
tree52f08823ca58fffe3db6a9b075635038c567626c /Master/texmf-dist/doc/latex/biocon
parentdec3d98ebe442d7ea93efbaa8dd2e2be8149a467 (diff)
doc 4
git-svn-id: svn://tug.org/texlive/trunk@80 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/biocon')
-rw-r--r--Master/texmf-dist/doc/latex/biocon/README16
-rw-r--r--Master/texmf-dist/doc/latex/biocon/manual.tex73
-rw-r--r--Master/texmf-dist/doc/latex/biocon/source.tex350
3 files changed, 439 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/biocon/README b/Master/texmf-dist/doc/latex/biocon/README
new file mode 100644
index 00000000000..5152c91f7ca
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/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/Master/texmf-dist/doc/latex/biocon/manual.tex b/Master/texmf-dist/doc/latex/biocon/manual.tex
new file mode 100644
index 00000000000..cb03bace113
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/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/Master/texmf-dist/doc/latex/biocon/source.tex b/Master/texmf-dist/doc/latex/biocon/source.tex
new file mode 100644
index 00000000000..d7da11f4856
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/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{}