LaTeX Extra > LaTeX Pakete > Substances


Das substances Paket (Version 0.2a 2016/01/07) ermöglicht dem Nutzer das erstellen, Einbinden und das Auslesen einer Datenbank von chemischen Substanzen. [1] Das Paket selbst bindet noch weitere Pakete ein, wie zum Beispiel etwa die zwei Chemiepakete chemfig, zum zeichnen von Strukturformeln, und das ghssystem zur Darstellung der Symbole des gleichnamigen Systems.

1.1 Einbinden des Paktes

Das Paket wird mit \usepackage{substances} eingebunden.

1.1.1 Optionen

Zur Zeit verfügt das Paket über die fünf Optionen: strict, draft, final, index und style.

Die drei zuerst genannten sind dafür geeignet alle Warnungen als Fehler auszugeben. 
Wenn strict = true gesetzt wird werden alle Warnungen als Fehler ausgegeben und die Einstellungen von draft und final werden sofern sie gesetzt wurden von der Einstellung von strict überschrieben.
Wird die Option draft = true gesetzt, dann werden die Warnungen als Fehler ausgegeben.
Wird die Option final = true gesetzt, werden die Warnungen nicht als Fehler ausgegeben.
 
Die zwei verbleibenden Optionen index und style bieten deutlich breitere Anwendungsmöglichkeiten.

Die Option index = true führt dazu, dass jedes Mal wenn der \chem Befehl aufgerufen wird ein Eintrag in einem Index erfolgt. Für die Erstellung des Index selbst ist aber ein zusätzliches Paket wie makeidx, splitidx oder imakeidx notwendig.
 

Die Option style = Stil legt den Stil fest. Wobei es hierbei um die möglichen Eintragungsfelder für die Datenbank geht. Das ist insbesondere für den Fall interessant, wenn zusätzliche neue Felder verwendet werden sollen.
 
Im Fall, dass neue Felder in der Datenbank gesetzt werden, aber in der Style Datei nicht vorhanden sind erhält man einen Fehler der Art:

LaTeX error: "kernel/key-unknow"
The key 'substances/NaCl/sum' is unknow 
and is being ignored.
...

Hier wurde das Feld sum im Datenbank Eintrag für NaCl verwendet, ohne das die Style Datei über den entsprechenden Eintrag verfügt.

Bei den Style Dateien handelt es sich um Textdateien mit folgendem Namensschema substances-<Name>.def .

Tabelle 1: Default Werte der Optionen
Option default Wert
strict false
draft false
final true
index false
style default

Die im Paket bereits enthaltene Styledatei hat den Namen subtances-default.def daher ist der Eintrag in der Tabelle default.

2 Datenbank

Eine neue Datenbank lässt sich durch das Anlegen einer entsprechenden Textdatei mit der Endung .sub erstellen. Einfacher ist es jedoch, wenn die im Paket enthaltene Datenbank substances-example.sub kopiert und die die Kopie umbenannt wird. Das hat die Vorteile, dass die Datenbank bereits Einträge besitzt und das diese als Blaupause für die eigenen Einträge dienen können.

Eingebunden wird die Datenbank über den Befehl \LoadSubstances{Name der Datenbank} in der Präambel. Wenn noch eine geänderte Styledatei verwendet wird muss die Paketoption entsprechend angepasst werden:

\usepackage[style=mystyle]{substances}
\LoadSubstances{mydatabase} 

Verwendet werden die Einträge mit dem \chem{ID}[Optionen] Befehl. Wird der Befehl option verwendet gibt er den Namen des Eintrags aus. Daher ist der Name auch das einzige Feld das bei einem Datenbankeintrag gesetzt werden muss. Über die Option kann auf die anderen Felder des Datenbankeintrags zugegriffen werden.

2.1 Beispiel

Im folgenden Beispiel wird eine neue Datenbank (mydatabase.sub) mit einem zusätzlichen Feld vulg für den Eintrag der Umgangssprachlichen Bezeichnung einer Substanz erweitert.

% mydatabase.sub 
\SubstancesDatabase{mydatabase}
\ProvideChemIUPAC\normal{\textit{n}}
\DeclareSubstance{NaCl}{
 name = Natriumchlorid ,
 vulg = Kochsalz,
 formula = NaCl ,
 CAS = 7647-14-5,
 mass = 58.44 ,
 mp = 801 ,
 bp = 1465 ,
 phase = fest ,
 density = 2.17
 }
\endinput

Um auf dieses neue Feld zugreifen zu können wird eine entsprechende Style Datei benötigt. Dafür wurde die default Datei kopiert und die Kopie in substances-mystyle.def umbenannt. Dann wurde die zusätzliche Zeile  \DeclareSubstanceProperty  {vulg} [] vor der letzten Zeile \tex_endinput:D hinzugefügt.

Eingabe:
\chem{NaCl} wird auch als \chem{NaCl}[vulg] bezeichnet...
Ausgabe:
Natriumchlorid wird auch als Kochsalz bezeichnet...

3 Vorteile

Durch die Verwendung einer Datenbank kann man sicher gehen, dass die Daten die im Dokument stehen den Werten der Datenbank entsprechen und es zu keinem Zahlendreher kommt. Auch ist es möglich Symbole des GHS Systems und Strukturformel soweit vorhanden über die Datenbank einzubinden. Ein weiterer Vorteil besteht darin, dass das Latexdokument nicht mit Informationen überladen wird, sondern das diese in einer externen Datei, der Datenbank, ausgelagert sind.

3.1 Hinweis

Sollte die folgenden Fehlermeldung nach dem Einbinden des Paketes erscheinen:

Runaway argument?
{\AssignTemplateKeys \bool_if:nTF {\l__substances_index_alternative_name_bool \
ETC.
! Forbidden control sequence found while scanning use of \DeclareTemplateCode.
<inserted text> 
                \par 
l.400 ...    \substances_index:nx { \c_job_name_tl
                                                   -chem }

Lässt sich hier eine Lösung dafür finden: bitbucket.org/cgnieder/substances/pull-requests/2/changed-depricated-c_job_name_tl-to/diff

Literatur

[1]
substances — A database of chemicals V0.2a, Clemens Niederberger, 2016/01/07