diff options
author | Karl Berry <karl@freefriends.org> | 2012-03-21 23:09:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-03-21 23:09:51 +0000 |
commit | a1cc0e0ea92d774194ebc156455ec9f3771998f2 (patch) | |
tree | 2d515f65bffdd27648ca6e2a563834b4a43f66da | |
parent | 09ea5e9ef5909ec8198759710d1a292dea755378 (diff) |
chemmacros (21mar12)
git-svn-id: svn://tug.org/texlive/trunk@25721 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/README | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros-codehelper.tex | 14 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf | bin | 725325 -> 736367 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex | 149 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf | bin | 714366 -> 719498 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex | 136 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/chemmacros/chemformula.sty | 78 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty | 100 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty | 7 |
9 files changed, 375 insertions, 113 deletions
diff --git a/Master/texmf-dist/doc/latex/chemmacros/README b/Master/texmf-dist/doc/latex/chemmacros/README index bf63c5b3013..8b008666c4f 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/README +++ b/Master/texmf-dist/doc/latex/chemmacros/README @@ -1,10 +1,10 @@ -------------------------------------------------------------------------- -the CHEMMACROS bundle v3.1c +the CHEMMACROS bundle v3.2 -> chemmacros package -> macros and commands for chemists -> chemformula package -> typeset chemical compounds and reactions -> ghsystem package -> typeset H & P statements and pictograms from the globally harmonised system (GHS) -2012/03/14 +2012/03/20 -------------------------------------------------------------------------- This bundle succeeds the chemmacros package which is now part of the bundle diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros-codehelper.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros-codehelper.tex index 5c9ecaf919b..140eaf9de27 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros-codehelper.tex +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros-codehelper.tex @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/03/12 - % +% - 2012/03/19 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -95,6 +95,7 @@ { a, abinitio, + AddRxnDesc, aq, aqi, b, @@ -128,6 +129,7 @@ D, DeclareChemArrow, DeclareChemIUPAC, + DeclareChemLatin, DeclareChemParticle, DeclareChemPhase, DeclareChemReaction, @@ -168,6 +170,7 @@ includegraphics, insitu, intertext, + invacuo, iupac, IUPAC, joule, @@ -209,6 +212,7 @@ pch, per, pgfarrowsdeclarealias, + pgfarrowsrenewalias, pH, phase, photon, @@ -223,6 +227,7 @@ redox, RenewChemArrow, RenewChemIUPAC, + RenewChemLatin, RenewChemParticle, RenewChemPhase, RenewChemState, @@ -383,6 +388,7 @@ { a, abinitio, + AddRxnDesc, aq, aqi, b, @@ -416,6 +422,7 @@ D, DeclareChemArrow, DeclareChemIUPAC, + DeclareChemLatin, DeclareChemParticle, DeclareChemPhase, DeclareChemReaction, @@ -456,6 +463,7 @@ includegraphics, insitu, intertext, + invacuo, iupac, IUPAC, joule, @@ -497,6 +505,7 @@ pch, per, pgfarrowsdeclarealias, + pgfarrowsrenewalias, pH, phase, photon, @@ -511,6 +520,7 @@ redox, RenewChemArrow, RenewChemIUPAC, + RenewChemLatin, RenewChemParticle, RenewChemPhase, RenewChemState, @@ -682,7 +692,7 @@ \makeatletter \NewDocumentCommand \achtung { m } { - \par\addvspace{\baselineskip} + \ifvmode\addvspace{\baselineskip}\fi \begin{mdframed}[linecolor=red,backgroundcolor=red!10] #1 \end{mdframed} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf Binary files differindex 97531961b36..1c537486c30 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex index 2e32e0cf1b4..1de4ef46d72 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_de.tex @@ -72,7 +72,7 @@ \addbibresource{\jobname.bib} \begin{filecontents}{\jobname.bib} @book{iupac:greenbook, - author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and Franco Pavese and Martin Quack and Jürgan Stohner and Herbert L. Strauss and Michio Takami and Anders J Thor}, + author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and Michio Takami and Anders J Thor}, title = {“Quantities, Symbols and Units in Physical Chemistry”, \IUPAC Green Book}, edition = {3rd Edition. 2nd Printing}, year = {2008}, @@ -85,6 +85,13 @@ journal = {Official Journal of the European Union}, date = {2008-12-16} } +@online{unece:ghsystem_implementation, + author = {United Nations Economic Commission for Europe}, + title = {GHS Implementation}, + url = {http://www.unece.org/trans/danger/publi/ghs/implementation_e.html}, + urldate = {2012-03-20}, + date = {2012-03-20} +} \end{filecontents} \DeclareInstance{xfrac}{chemformula-text-frac}{text} @@ -181,7 +188,7 @@ Ich nehme an, dass fast jeder Chemiker, der \LaTeX\ für seine Dokumente verwend \chemformula funktioniert sehr ähnlich wie \paket{mhchem}, ist aber strenger was das Eingeben von Verbindungen, stöchiometrischen Faktoren und Pfeilen angeht. Gleichzeitig bietet \chemformula ein paar Möglichkeiten, den Output anzupassen, die \paket{mhchem} nicht bietet. Da \chemformula als Alternative zu \paket{mhchem} gedacht ist, bietet \chemmacros eine Option, mit der Sie zwischen \paket{mhchem} und \chemformula wählen können. -Als Chemiker wissen Sie vermutlich, dass die \textsc{United Nations} das \enquote{\textbf{G}lobally \textbf{H}armonized \textbf{S}ystem of Classification and Labelling of Chemicals} (GHS) als weltweiten Ersatz für die zahlreichen ähnlichen aber doch verschiedenen Systeme der einzelnen Länder entwickelt haben. Obwohl es noch nicht in allen Ländern umgesetzt wurde\footnote{\url{http://www.unece.org/trans/danger/publi/ghs/implementation_e.html}}, ist das nur eine Frage der Zeit. Das Paket \ghsystem gibt Ihnen nun die Möglichkeit, alle \enquote{hazard and precautionary statements} auf einfache Weise einzugeben und aufzurufen. Die Sätze wurden der EU Regulation 1272/2008 entnommen \cite{eu:ghsystem_regulation}. +Als Chemiker wissen Sie vermutlich, dass die \textsc{United Nations} das \enquote{\textbf{G}lobally \textbf{H}armonized \textbf{S}ystem of Classification and Labelling of Chemicals} (GHS) als weltweiten Ersatz für die zahlreichen ähnlichen aber doch verschiedenen Systeme der einzelnen Länder entwickelt haben. Obwohl es noch nicht in allen Ländern umgesetzt wurde \cite{unece:ghsystem_implementation}, ist das nur eine Frage der Zeit. Das Paket \ghsystem gibt Ihnen nun die Möglichkeit, alle \enquote{hazard and precautionary statements} auf einfache Weise einzugeben und aufzurufen. Die Sätze wurden der EU-Verordnung 1272/2008 entnommen \cite{eu:ghsystem_regulation}. Ich hoffe, folgende vier Punkte in diesem Bundle umgesetzt zu haben: \begin{itemize} @@ -201,11 +208,11 @@ Das Laden von \chemmacros via \end{beispiel} wird ebenso \chemformula und \ghsystem laden. Sie können jedoch \chemmacros davon abhalten, \ghsystem zu laden: \begin{beispiel}[code only] - \usepackage[ghs=false]{chemmacros} % `chemmacros' and `formula' are loaded + \usepackage[ghsystem=false]{chemmacros} % `chemmacros' and `formula' are loaded \end{beispiel} Das Laden von \chemformula kann nicht verhindert werden, da \chemmacros und \chemformula miteinander interagieren. -Das explizite Laden von \chemformula \bzw \ghsystem ist möglich und wird \chemmacros in jedem Fall laden, falls das noch nicht geschehen ist. Dadurch laden sie sich implizit gegenseitig. +Das explizite Laden von \chemformula \bzw\ \ghsystem ist möglich und wird \chemmacros in jedem Fall laden, falls das noch nicht geschehen ist. Dadurch laden sie sich implizit gegenseitig. \begin{beispiel}[code only] \usepackage{chemformula} % `chemmacros', `formula' and `ghs' are loaded or @@ -231,14 +238,14 @@ Sowohl \chemformula als auch \ghsystem haben keine eigenen Paketoptionen. Wenn S \item \key[option]{detect-bold}{\uline{true}/false} \emph{Diese Option ist veraltet und wird nicht mehr unterstützt!} \item \key[option]{EZ}{\uline{chemmacros}/cool} \emph{Diese Option ist veraltet und wird nicht mehr unterstützt!} \item \key[option]{german}{\uline{true}/false} Diese Option ändert die Befehle \cmd{pKa}, \cmd{sld} und \cmd{lqd}. Default = \texttt{false}. Diese Option hat den Alias \key[option]{ngerman}. - \item \key[option]{ghs}{\uline{true}/false} Das Paket \ghsystem abschalten. Die Einstellung \key{ghs}{false} wird das Laden von \ghsystem unterbinden. Default = \texttt{true} + \item \key[option]{ghsystem}{\uline{true}/false} Das Paket \ghsystem abschalten. Die Einstellung \key{ghs}{false} wird das Laden von \ghsystem unterbinden. Default = \texttt{true} \item \key[option]{iupac}{auto/restricted/strict} Einstellen, wie die Nomenklatur-Befehle definiert werden. Siehe Seite \pageref{key:iupac}. Default = \texttt{auto} \item \key[option]{method}{\uline{chemformula}/mhchem} Sie können wählen, ob \chemmacros \paket{mhchem} oder \chemformula für die Reaktionsumgebungen (siehe Abschnitt \ref{ssec:mhchem_reaktionen}) und die Teilchen (siehe Abschnitt \ref{sec:teilchen}) verwendet. Default = \texttt{chemformula}. Diese Option kann nur in der Präambel gesetzt werden. \item \key[option]{Nu}{\uline{chemmacros}/mathspec} Das Paket \paket{mathspec} definiert ebenfalls ein Makro \cmd{Nu}. Diese Option entscheidet, welche Definition gilt, siehe Seite \pageref{Nu}. Default = \texttt{chemmacros}. Diese Option kann nur in der Präambel gesetzt werden. \item \key[option]{strict}{\uline{true}/false} Die Einstellung \key{strict}{true} wird alle Warnungen in Fehlermeldungen ändern. Default = \texttt{false} \item \key[option]{synchronize}{\uline{true}/false} Mit der Einstellung \texttt{true} wird \chemmacros die Schrifteinstellungen von \chemformula übernehmen, falls \chemformula als Methode gewählt wurde. Default = \texttt{false}. Um diese Option zu demonstrieren, wurde dieses Dokument mit \key{synchronize}{true} und der \chemformula Einstellung \lstinline+\chemsetup[chemformula]{font-spec={[Color=darkgray]Latin Modern Sans}}+ gesetzt. - \item \key[option]{upgreek}{none/textgreek/\uline{upgreek}} Diese Option bestimmt, wie die Buchstaben \ch{Chemalpha} und seine Verwandten dargestellt werden. Siehe Seite \pageref{key:upgreek} für weitere Informationen. Diese Option kann nur in der Präambel gesetzt werden. Default = \texttt{upgreek} - \item \key[option]{version} Diese Option macht gar nichts und existiert nur wegen Kompatibilität für ältere Dokumente. Die Funktionalität wird nun durch die Option \key{cmversion} bereitgestellt. Die Umbenennung war nötig damit \chemmacros auch mit \paket[koma-script]{KOMA-Script} und dessen Option \texttt{version} funktioniert. + \item \key[option]{upgreek}{none/textgreek/\uline{upgreek}} Diese Option bestimmt, wie die Buchstaben \cmd{Chemalpha} und seine Verwandten dargestellt werden. Siehe Seite \pageref{key:upgreek} für weitere Informationen. Diese Option kann nur in der Präambel gesetzt werden. Default = \texttt{upgreek} + \item \key[option]{version} \emph{Diese Option macht gar nichts und existiert nur wegen Kompatibilität für ältere Dokumente}. Die Funktionalität wird nun durch die Option \key{cmversion} bereitgestellt. Die Umbenennung war nötig damit \chemmacros auch mit \paket[koma-script]{KOMA-Script} und dessen Option \texttt{version} funktioniert. \item \key[option]{xspace}{\uline{true}/false} Mit dieser Option werden die meisten Makros mit einem \lstinline+\xspace+ definiert. Default = \texttt{true} \end{description} \secidx*{Paketoptionen} @@ -364,7 +371,7 @@ Der Befehl \cmd{iupac} dient noch einem anderen Zweck. Unabhängig von der Paket \begin{itemize} \item \key{iupac}{auto}: wenn der Befehl \emph{nicht} von einem Paket oder einer Klasse, die sie verwenden, definiert wird, ist er generell verfügbar, sonst nur \emph{innerhalb} von \cmd{iupac}. \item \key{iupac}{restricted}: alle Nomenklatur-Befehle sind \emph{nur} innerhalb von \cmd{iupac} definiert. Wenn sie von einem anderen Paket definiert sind, sind sie natürlich außerhalb verfügbar. Ansonsten sind sie außerhalb nicht definiert. - \item \key{iupac}{strict}: \chemmacros überschreibt jede bestehende Definition und macht die Befehle im ganzen Dokument verfügbar. Sie können natürlich (nur nach \lstinline=\begin{document}= umdefiniert werden. Sie behalten dann die Nomenklatur-Bedeutung innerhalb von \cmd{iupac}. + \item \key{iupac}{strict}: \chemmacros überschreibt jede bestehende Definition und macht die Befehle im ganzen Dokument verfügbar. Sie können natürlich (nur nach \lstinline=\begin{document}=) umdefiniert werden. Sie behalten dann die Nomenklatur-Bedeutung innerhalb von \cmd{iupac}. \end{itemize} \ref{tab:iupac_modes} demonstriert die verschiedenen Modi. @@ -382,7 +389,7 @@ Der Befehl \cmd{iupac} dient noch einem anderen Zweck. Unabhängig von der Paket \subsubsection{Vordefinierte Befehle}\secidx[vordefiniert]{IUPAC-Namen}\secidx{Stereodeskriptoren und Nomenklatur} \paragraph{Griechische Buchstaben}\label{par:greek_letters}\secidx[griechische Buchstaben]{IUPAC-Namen} -Griechische Buchstaben in Verbindungsnamen werden aufrecht gecshrieben. Dafür gibt es die Pakete \paket{upgreek} und \paket{textgreek}. Wenn Sie eines davon geladen haben, werden die folgenden Buchstaben aufrecht geschrieben: +Griechische Buchstaben in Verbindungsnamen werden aufrecht geschrieben. Dafür gibt es die Pakete \paket{upgreek} und \paket{textgreek}. Wenn Sie eines davon geladen haben, werden die folgenden Buchstaben aufrecht geschrieben: \begin{description} \item \cmd{a} \iupac{\a} \item \cmd{b} \iupac{\b} @@ -425,7 +432,7 @@ Da der Befehl \cmd{S} schon eine andere Bedeutung hat (\S), ist er in der Vorein \end{description} Da der Befehl \cmd{L} schon eine andere Bedeutung hat (\L), ist er in der Voreinstellung nur innerhalb \cmd{iupac} verfügbar. -\paragraph{cis/trans, zusammen/entgegen, syn/anti \& tert}\index{tert}\secidx[tert]{IUPAC-Namen}\index{cis/trans}\secidx[cis/trans]{IUPAC-Namen}\index{zusammen/entgegen}\secidx[zusammen/entgegen]{IUPAC-Namen}\secidx[syn/anti]{IUPAC Names} +\paragraph{cis/trans, zusammen/entgegen, syn/anti \& tert}\index{tert}\secidx[tert]{IUPAC-Namen}\index{cis/trans}\secidx[cis/trans]{IUPAC-Namen}\index{zusammen/entgegen}\secidx[zusammen/entgegen]{IUPAC-Namen}\secidx[syn/anti]{IUPAC Namen} \begin{description} \item \cmd{cis} \cis \item \cmd{trans} \trans @@ -486,19 +493,33 @@ Ein Befehl, der in dieser Weise definiert wurde, gehorcht der Option \key[option \secidx*{IUPAC-Namen} \subsection{Lateinische Ausdrücke}\secidx{Lateinische Ausdrücke}[Lateinische Ausdruecke] -Zuletzt gibt es diese beiden Makros für lateinische Ausdrücke: +Das Paket \paket{chemstyle} stellt den Befehl \cmd{latin} bereit, um gebräuchliche lateinische Ausdrücke konsistent darzustellen. \chemmacros definiert ein ähnliches \cmd{latin}, aber nur, wenn \paket{chemstyle} \emph{nicht} geladen wurde, und stellt zusätzlich diese Befehle bereit: \begin{description} \item \cmd{insitu} \insitu \item \cmd{abinitio} \abinitio + \item \cmd{invacuo} \invacuo \end{description} -Wenn Sie das Paket \paket{chemstyle} ebenfalls geladen haben\footnote{\paket*{chemstyle} definiert andere ähnliche Befehle wie \etal, \invacuo.}, werden sie mit \paket{chemstyle}s Befehl \lstinline+\latin+ definiert. Das bedeutet, dass ihr Erscheinungsbild dann von \paket{chemstyle}s Option \texttt{abbremph} abhängt: +Falls das Paket \paket{chemstyle} geladen wurde, wurden sie mit \paket{chemstyle}s Befehl \lstinline+\latin+ definiert. Das bedeutet, dass ihr Erscheinungsbild von der \paket{chemstyle} Option \texttt{abbremph} abhängen: \begin{beispiel} \insitu, \abinitio\\ \cstsetup{abbremph=false} \insitu, \abinitio \end{beispiel} -Wenn \paket{chemstyle} nicht geladen wurdem werden sie immer \textit{kursiv} gesetzt. + +Die Makros wurden mit folgendem Befehl definiert: +\begin{description} + \item \cmd{DeclareChemLatin}{<cmd>}\ma{<phrase>} + \item \cmd{RenewChemLatin}{<cmd>}\ma{<phrase>} +\end{description} +\begin{beispiel} + \DeclareChemLatin\ltn{latin text} + \ltn \cstsetup{abbremph=false} \ltn +\end{beispiel} +Wenn Sie \paket{chemstyle} \emph{nicht} geladen haben, können Sie das Erscheinungsbild mit dieser Option anpassen: +\begin{description} + \item \key[latin]{format}{<definition>} Default = \lstinline+\itshape+ +\end{description} \secidx*{Lateinische Ausdrücke}[Lateinische Ausdruecke] \section{Einheiten für die Verwendung mit \textsf{siunitx}}\label{sec:einheiten}\secidx{Einheiten} @@ -607,7 +628,7 @@ In den meisten Fällen wird das Verhalten unerwünscht sein, es kann jedoch Gele \secidx*{Ionenladungen} \subsection{Oxidationszahlen}\label{ssec:oxidationszahlen}\secidx{Oxidationszahlen} -Eingabe von Oxidationszahlen:: +Eingabe von Oxidationszahlen: \begin{description} \item \cmd{ox}[<keyval>]{<number>,<atom>} setzt \texttt{<number>} über \texttt{<atom>}; \texttt{<number>} muss eine (rationale) Zahl sein! \end{description} @@ -618,7 +639,7 @@ Eingabe von Oxidationszahlen:: Es gibt eine Reihe von Optionen, mit denen \cmd{ox} angepasst werden kann. \begin{description} - \item \key[ox]{parse}{\uline{true}/false} Wenn \texttt{false}, dan kann ein beliebiger Eintrag für \texttt{<number>} gemacht werden. Default = \texttt{true} + \item \key[ox]{parse}{\uline{true}/false} Wenn \texttt{false}, dann kann ein beliebiger Eintrag für \texttt{<number>} gemacht werden. Default = \texttt{true} \item \key[ox]{roman}{\uline{true}/false} schaltet von römischen auf arabische Ziffern um. Default = \texttt{true} \item \key[ox]{pos}{top/super/side}; \texttt{top} setzt \texttt{<number>} über \texttt{<atom>}, \texttt{super} rechts oben als Hochstellung und \texttt{side} rechts daneben in Klammern. Default = \texttt{top} \item \key[ox]{explicit-sign}{\uline{true}/false} gibt $+$ für positive Zahlen und $\pm$ für die $0$ aus. Default = \texttt{false} @@ -728,7 +749,7 @@ kann man die verbreitetsten Reaktionsmechanismen spezifizieren. \texttt{<type>} \chemmacros stellt zwei Befehle zur Verfügung, mit denen die Übertragung von Elektronen in Redoxreaktionen angezeigt werden kann\footnote{Dank an \href{http://www.mathannotated.com/}{Peter Cao}, der dieses Feature vorgeschlagen hat.}. Beide Befehle verwenden \TikZ. \begin{description} \item \cmd{OX}{<name>,<atom>} - \item \cmd{redox}(<name1>,<name2>)[<tikz>][<num>]{<text>} + \item \cmd{redox}(<name1>,<name2>)[<tikz>][<num>]{<text>} Lediglich das erste Argument \da{<name1>,<name2>} wird benötigt, die anderen sind optional. \end{description} \cmd{OX} setzt \texttt{<atom>} in einen Knoten (eine \enquote{Node}) mit dem Namen \texttt{<name>}. Wenn Sie zwei \cmd{OX} verwendet haben, dann können sie mit \cmd{redox} verbunden werden. Die Namen der zu verbindenden Knoten werden in runde Klammern geschrieben. Da \cmd{redox} ein Tikzpicture mit den Optionen \texttt{remember picture,overlay} erstellt, muss das Dokument \emph{wenigstens zwei mal} kompiliert werden. @@ -868,7 +889,7 @@ kann man bestehende Größen umdefinieren: \RenewChemState{Enthalpy}{h}{\joule} \Enthalpy(f){12.5} \end{beispiel} -Der Befehl ist analog zu \cmd{setnewstate}, \dh er hat dieselben Optionen. +Der Befehl ist analog zu \cmd{DeclareChemState}, \dh er hat dieselben Optionen. Man könnte also \textendash\ um thermodynamischen Konventionen zu folgen \textendash\ eine molare und eine absolute Größe definieren: \begin{beispiel} @@ -1101,6 +1122,18 @@ Im Verzeichnis werden alle Reaktionen mit Zählen gelistet und alle anderen nich 2 H2O <<=> H3O+ + OH- \end{reaction} \end{beispiel} +Wenn Sie die \texttt{reactions} Umgebung verwenden, wird das allerdings nicht funktionieren. In diesem Fall können Sie +\begin{description} + \item\cmd{AddRxnDesc}{<description>} +\end{description} +verwenden. +\begin{beispiel} + \begin{reactions} + Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 &-> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ + "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 &-> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} + \end{reactions} +\end{beispiel} +Nebenbei: Sie müssen die Phantom-Befehle nicht verwenden, wenn Sie das Format der Atome nicht geändert haben, siehe Abschnitt \ref{sec:format} an Seite \pageref{sec:format}. \secidx*{Reaktionsumgebungen} \section{Phasen}\label{sec:phasen}\secidx{Phasen} @@ -1126,7 +1159,7 @@ Mit der Paketoption \key{german}{false} (siehe Abschnitt \ref{sec:optionen}) erh \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas} \end{beispiel} -Die \IUPAC-Empfehlung\footnote{Vielen Dank an Paul King für den Hinweis.} um einen Aggregatszustand anzuzeigen ist es, sie in Klammern nach der Formel zu schreiben \cite{iupac:greenbook}.Es ist jedoch ebenfalls verbreitet, sie als Tiefstellung zu setzen. +Die \IUPAC-Empfehlung\footnote{Vielen Dank an Paul King für den Hinweis.} um einen Aggregatszustand anzuzeigen ist es, sie in Klammern nach der Formel zu schreiben \cite{iupac:greenbook}. Es ist jedoch ebenfalls verbreitet, sie als Tiefstellung zu setzen. \begin{myquote}[{\IUPAC Green Book \cite[][p.\,54]{iupac:greenbook}}] The [\ldots] symbols are used to represent the states of aggregation of chemical species. The letters are appended to the formula in parentheses and should be printed in Roman (upright) type without a full stop (period). @@ -1287,9 +1320,9 @@ Manche Optionen können ohne Wert verwendet werden. Dann wird der \uline{unterst bpchem & option & \uline{true}/false & false & Seite \pageref{key:option_bpchem} \\ circled & option & formal/\uline{all}/none & formal & Seite \pageref{key:option_circled} \\ circletype & option & chem/math & chem & Seite \pageref{key:option_circletype} \\ - cmversion & option & 1/2/bundle & bundle & Seite \pageref{key:option_version} \\ + cmversion & option & 1/2/bundle & bundle & Seite \pageref{key:option_cmversion} \\ german & option & \uline{true}/false & false & Seite \pageref{key:option_german} \\ - ghs & option & \uline{true}/false & true & Seite \pageref{key:option_ghs} \\ + ghsystem & option & \uline{true}/false & true & Seite \pageref{key:option_ghsystem} \\ iupac & option & auto/restricted/strict & auto & Seite \pageref{key:option_iupac} \\ method & option & chemformula/formula & formula & Seite \pageref{key:option_method} \\ Nu & option & chemmacros/mathspec & chemmacros & Seite \pageref{key:option_Nu} \\ @@ -1300,6 +1333,8 @@ Manche Optionen können ohne Wert verwendet werden. Dann wird der \uline{unterst xspace & option & \uline{true}/false & true & Seite \pageref{key:option_xspace} \\ \multicolumn{5}{l}{\cmd{ba}, \cmd{Nu}:} \\ elpair & particle & \uline{dots}/dash/false & false & Seite \pageref{key:particle_elpair} \\ + \multicolumn{5}{l}{\cmd{DeclareChemLatin}:} \\ + format & latin & <anything> & \lstinline=\itshape= & page \pageref{key:latin_format} \\ \multicolumn{5}{l}{\cmd{pch}, \cmd{mch}, \cmd{fpch}, \cmd{fmch}:} \\ append & charges & \uline{true}/false & false & Seite \pageref{key:charges_append} \\ \multicolumn{5}{l}{acid/base:} \\ @@ -1441,7 +1476,7 @@ Sie müssen bei dem Input ein wenig auf die richtige Syntax achten, aber ich den das wird nicht funktionieren sondern einen Fehler geben: \ch{1/1_1} \end{beispiel} -Wenn die stöchiometrischen Faktoren in Klammern geschrieben werden, werden die Brüche nicht umgewandelt. Was in den Klammern staht, wird genauso geschrieben. +Wenn die stöchiometrischen Faktoren in Klammern geschrieben werden, werden die Brüche nicht umgewandelt. Was in den Klammern steht, wird genauso geschrieben. \begin{beispiel} \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} \end{beispiel} @@ -1582,7 +1617,7 @@ Man benötigt kein \cmd{mch} und ähnliche Befehle innerhalb von \cmd{ch}. Tats \end{beispiel} \paragraph{Verhalten}\secidx[Hochstellungen!Verhalten]{Summenformeln} -Die Hochstellungen verhalten sich unterschiedlich abhängig von ihrer Position in einer Summenformal, falls Hoch- und Tiefstellung direkt aufeinander folgen. +Die Hochstellungen verhalten sich unterschiedlich abhängig von ihrer Position in einer Summenformel, falls Hoch- und Tiefstellung direkt aufeinander folgen. \begin{beispiel} \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \\ \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} \ch{B^{23}} \ch{B_{123}^{23}} \\ @@ -1678,7 +1713,10 @@ Die Länge der Bindungen ändern:\secidx[Bindungen!Laenge@Länge]{Summenformeln} \secidx*{Summenformeln} \section{Spezielle Input-Typen}\secidx{Spezielle Input-Typen} -Es gibt einige \enquote{spezielle Input-Typen}. Sie bestehen nur aus einem Token, nämlich einem der folgenden: +Es gibt einige \enquote{spezielle Input-Typen}. + +\subsection{Single-Token Input}\secidx[Single-Token Input]{Spezielle Input-Typen} +Die erste Sorte besteht nur aus einem Token, nämlich einem der folgenden: \begin{description} \item \cmd{ch}{ + } \ch{+} Erstellt ein Plus-Zeichen zwischen Formeln mit Leerraum links und rechts:\\ \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} @@ -1694,6 +1732,26 @@ Der Leerraum links und rechts des Plus kann mit einer Option angepasst werden: \ch{A + B}\\ \ch[plus-space=4pt]{A + B} \end{beispiel} + +\subsection{Optionen Input}\secidx[Optionen Input]{Spezielle Input-Typen} +Manchmal möchte man eine Option nur auf einen Teil einer, sagen wir, Reaktion anwenden. Natürlich können Sie \cmd{ch} mehrmals verwenden. +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} +\end{beispiel} +Das unterbricht allerdings die Eingabe im Quelltext und \emph{könnte} die Abstände beeinflussen. Deshalb gibt es eine Alternative: +\begin{description} + \item \ttfamily\cmd{ch}\{\lstinline+@{<options>}+\}\normalfont\ Die angegebenen Optionen sind \emph{nur} aktiv bis nach der \emph{nächsten} Summenformel. +\end{description} +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ + oder nat\"urlich:\\ + \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} +\end{beispiel} +\achtung{Das ist ein experimentelles Feature und mag in zukünftigen Versionen fallen gelassen werden.} \secidx*{Spezielle Input-Typen} \section{Geschützter Input}\secidx{Geschützter Input}[Geschuetzter Input] @@ -1815,8 +1873,22 @@ Der folgende Code zeigt die Effekte der verschiedenen Optionen auf den \lstinlin gr\"o\ss erer Abstand zu Formeln: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ kleinere Beschriftungen: \ch[label-style=\tiny]{A <=>[x][y] B} \end{beispiel} - -\subsection{Pfeiltypen bearbeiten}\secidx[Typen!bearbeiten]{Pfeile} +% +% Die Pfeilköpfe sind so gestaltet, dass sie zu \paket{chemfig}s Pfeilen passen. Wenn Sie andere Spitzen lieber mögen und sie ändern möchten, ohne alle Pfeile neu zu definieren (siehe Abschnitt \ref{sec:arrows_modify}), können Sie folgenden Befehl verwenden: +% \begin{description} +% \item \cmd{pgfarrowsrenewalias}{<new start>}\ma{<new end>}\ma{<old start>}\ma{<old end>} +% \end{description} +% Das ist derselbe Befehl wie \lstinline=\pgfarrowsdeclarealias=, mit dem Unterschied, dass nicht geprüft wird, ob die neuen Pfeilköpfe schpon existieren. Das bedeutet, dass Sie damit die alten Definitionen überschreiben können: +% \begin{beispiel} +% % overwrite the chemformula arrow heads `cf' and `left cf' +% \pgfarrowsrenewalias{left cf}{left cf}{left to}{left to} +% \pgfarrowsrenewalias{cf}{cf}{to}{to} +% +% \ch{CO + H2O <=> CO2 + H2} \\ +% \ch{C + H2O -> CO + H2} +% \end{beispiel} + +\subsection{Pfeiltypen bearbeiten}\label{sec:arrows_modify}\secidx[Typen!bearbeiten]{Pfeile} Die Pfeile wurden mit dem Befehl \begin{description} \item \cmd{DeclareChemArrow}{<tokens>}\ma{<tikz>} @@ -1895,7 +1967,7 @@ Wenn Sie aus irgendeinem Grund ein Ausrufezeichen wollen, \emph{ohne} dass es ei \end{beispiel} \secidx*{Text unter Formeln} -\section{Format und Schrift}\secidx{Format und Schrift} +\section{Format und Schrift}\label{sec:format}\secidx{Format und Schrift} Als Standardeinstellung nimmt \chemformula keine Veränderungen am Output der Formeln vor. Lassen Sie uns einen Nonsens-Input nehmen, der alle \chemformula-Features zeigt: \begin{beispiel} \newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} @@ -2011,7 +2083,7 @@ Dieser Abschnitt zeigt weitere Beispiele für die Verwendung von \chemformula, a H3C-CH2 "\Lewis{0.,\vphantom{H}}" + Cl2 &-> H3CCH2Cl + "\Lewis{0.,Cl}" & &"\Enthalpy{-23.0}" \end{reactions*} \end{beispiel} - +%TODO schlechter Seitenumbruch Das folgende Beispiel zeigt, wie das kürzen von Formeln erreicht werden kann\footnote{Inspiriert durch eine Frage auf TeX.SE: \url{http://tex.stackexchange.com/q/30118/5049}}. \begin{beispiel} % needs `cancel' @@ -2032,14 +2104,14 @@ Alle Optionen von \ghsystem gehören dem Modul \textcolor{module}{\texttt{ghsyst \chemsetup[ghsystem]{<options>} oder \chemsetup{ghsystem/<option1>,ghsystem/<option2>} \end{beispiel} -eingestellt werden. Sie Können den entsprechenden Befehlen auch lokal als optionales Argument mitgegeben werden. +eingestellt werden. Sie können den entsprechenden Befehlen auch lokal als optionales Argument mitgegeben werden. \section{Die Gefahren- (H) und Sicherheitssätze (P) aufrufen}\secidx{Gefahren- und Sicherheitssätze}[Gefahren- und Sicherheitssaetze] \subsection{Einfacher Aufruf}\secidx[Aufruf]{GHSYSTEM} Der prinzipielle Aufruf ist einfach: \begin{description} - \item\cmd{ghs}[<options>]{<type>}{<number>} - \item\cmd[ghsa]{ghs*}[<options>]{<type>}{<number>} + \item\cmd{ghs}[<options>]{<type>}\ma{<number>} + \item\cmd[ghsa]{ghs*}[<options>]{<type>}\ma{<number>} \end{description} Es gibt drei Typen von Sätzen: \texttt{h}, \texttt{euh} und \texttt{p}. Das \ma{<type>} Argument ignoriert Groß- und Kleinschreibung. \begin{beispiel} @@ -2077,7 +2149,7 @@ Einige Sätze verwenden Platzhalter. Es gibt vier Stück: Außer dem letzten, der ersetzt werden muss, sind sie in der Voreinstellung versteckt. Durch die Option \begin{description} - \item\key{fill-in}{\uline{true}/false} Show placeholders. Default = \texttt{false} + \item\key{fill-in}{\uline{true}/false} Default = \texttt{false} \end{description} können sie sichtbar gemacht werden. \begin{beispiel}[below] @@ -2131,7 +2203,7 @@ Mit den folgenden Optionen können diese Lücken gefüllt werden: \end{beispiel} \subsection{Kombinierte Sätze}\secidx[kombinierte Saetze@kombinierte Sätze]{GHSYSTEM} -Es existieren einige Kombinationen von Sätzen. Sie werden mit einem \texttt{+} zwischen den Numern eingegeben: +Es existieren einige Kombinationen von Sätzen. Sie werden mit einem \texttt{+} zwischen den Nummern eingegeben: \begin{beispiel}[below] \ghs{p}{235+410} \\ \ghs{p}{301+330+331} @@ -2159,7 +2231,7 @@ Wenn Ihnen die Defaultgröße nicht gefällt, können Sie die Option \begin{description} \item\key{scale}{<factor>} Scales the pictogram. Default = \texttt{1} \end{description} -verwenden. Tatsächlich sind die Bilder recht groß. Die Voreinstellung (Faktor = $1$) skaliert die Bilder auf ein Zwanzigstel. +verwenden. Tatsächlich sind die Bilder recht groß. Die Voreinstellung (Faktor = $1$) skaliert die Bilder auf ein Zwanzigstel ihrer echten Größe. \begin{beispiel} \ghspic[scale=2]{skull} \end{beispiel} @@ -2203,9 +2275,9 @@ Wenn Sie spezielle \lstinline=\includegraphics=-Optionen verwenden wollen, \zB d \end{longtable} \subsection{Der Bildtyp hängt von der Engine ab}\label{ssec:picture_type} -Sie wissen vermutlich, dass Sie nicht jeden Bildtyp mit jeder Compiler-engine verwenden können. \pdfTeX\ im \textsc{dvi}-Modus verlangt \texttt{eps}-Dateien, während \pdfTeX\ im \textsc{pdf}-Modus, \XeTeX\ und \LuaTeX\ \texttt{eps}-Dateien in \texttt{pdf}-Dateien konvertieren, vorausgesetzt, der Anwender hat Schreibrechte in dem Verzeichnis, in dem die Bilder gespeichert sind. +Sie wissen vermutlich, dass Sie nicht jeden Bildtyp mit jeder Compiler-Engine verwenden können. \pdfTeX\ im \textsc{dvi}-Modus verlangt \texttt{eps}-Dateien, während \pdfTeX\ im \textsc{pdf}-Modus, \XeTeX\ und \LuaTeX\ \texttt{eps}-Dateien in \texttt{pdf}-Dateien konvertieren, vorausgesetzt, der Anwender hat Schreibrechte in dem Verzeichnis, in dem die Bilder gespeichert sind. -Die letztgenannte können jedoch \texttt{jpg}- und \texttt{png}-Dateien ohne Schwierigkeiten einbinden, während \pdfTeX\ im \textsc{dvi}-Modus das nicht kann. +Die letztgenannten können jedoch \texttt{jpg}- und \texttt{png}-Dateien ohne Schwierigkeiten einbinden, während \pdfTeX\ im \textsc{dvi}-Modus das nicht kann. Um das Problem zu lösen, testet \ghsystem, welche Engine verwendet wird und falls es \pdfTeX\ ist, in welchem Modus es verwendet wird. Dann wird entwder das \texttt{eps}- oder das \texttt{png}-Bild für die Piktogramme verwendet. Sie können den Bildtyp über die Option \begin{description} @@ -2268,7 +2340,12 @@ Feedback zu \chemmacros, \chemformula und \ghsystem ist hochwillkommen! Wenn Sie Wenn Sie einen Bug finden, wäre es am besten, Sie schickten mir ein minimales Beispiel, mit dem ich den Bug reproduzieren kann. Sie können ihn auch als \enquote{Issue} auf \url{https://bitbucket.org/cgnieder/chemmacros/} melden. -Vielen Dank an alle, die mir schon Feedback zukommen ließen! +Vielen Dank an alle, die mir schon Feedback zukommen ließen, vor allem (in alphabetischer Reihenfolge): +\begin{itemize} + \item \href{http://www.mathannotated.com/}{Peter Cao} + \item Dr.\ Paul King + \item Christoph Schäfer +\end{itemize} \printbibliography[title=Quellen] diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf Binary files differindex 3b11acc09a2..dec1bf666d9 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex index 09d57866e1a..1a599ca9f70 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_doc_en.tex @@ -35,7 +35,7 @@ % > makeindex -sl index_en.ist chemmacros_doc_en.idx % > xelatex chemmacros_doc_en % -\documentclass[DIV11,idx=totoc,toc=bib]{scrartcl} +\documentclass[DIV11,toc=index,toc=bib]{scrartcl} \usepackage{fontspec,xltxtra} \usepackage{polyglossia} \setmainlanguage{english} @@ -72,7 +72,7 @@ \addbibresource{\jobname.bib} \begin{filecontents}{\jobname.bib} @book{iupac:greenbook, - author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and Franco Pavese and Martin Quack and Jürgan Stohner and Herbert L. Strauss and Michio Takami and Anders J Thor}, + author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and Michio Takami and Anders J Thor}, title = {“Quantities, Symbols and Units in Physical Chemistry”, \IUPAC Green Book}, edition = {3rd Edition. 2nd Printing}, year = {2008}, @@ -85,6 +85,13 @@ journal = {Official Journal of the European Union}, date = {2008-12-16} } +@online{unece:ghsystem_implementation, + author = {United Nations Economic Commission for Europe}, + title = {GHS Implementation}, + url = {http://www.unece.org/trans/danger/publi/ghs/implementation_e.html}, + urldate = {2012-03-20}, + date = {2012-03-20} +} \end{filecontents} \DeclareInstance{xfrac}{chemformula-text-frac}{text} @@ -159,7 +166,7 @@ \section{Licence, Requirements and README} The \chemmacros bundle underlies the \LaTeX\ project public license (lppl) version 1.3 or later. (\url{http://www.latex-project.org/lppl.txt}) -The \chemmacros bundle needs the bundles \paket{l3kernel} and \paket{l3packages}.It also needs the packages \paket{siunitx}, \paket{mathtools}, \paket{bm}, \paket{nicefrac} and \paket{environ} as well as \paket*{tikz}\footnote{CTAN: \href{http://www.ctan.org/pkg/pgf/}{pgf}} and the \TikZ libraries \texttt{calc} and \texttt{arrows}. +The \chemmacros bundle needs the bundles \paket{l3kernel} and \paket{l3packages}. It also needs the packages \paket{siunitx}, \paket{mathtools}, \paket{bm}, \paket{nicefrac} and \paket{environ} as well as \paket*{tikz}\footnote{CTAN: \href{http://www.ctan.org/pkg/pgf/}{pgf}} and the \TikZ libraries \texttt{calc} and \texttt{arrows}. Package option \key{bpchem} (section \ref{sec:optionen}) needs the package \paket{bpchem}, package option \key{xspace} needs the package \paket{xspace} and package option \key{method}{mhchem} needs the package \paket{mhchem}. @@ -178,7 +185,7 @@ I would guess that nearly every chemist using \LaTeXe\ is aware of the great \pa \chemformula works very similar to \paket{mhchem} but is more strict as to how compounds, stoichiometric factors and arrows are input. In the same time \chemformula offers possibilities to customize the output that \paket{mhchem} does not. Since \chemformula is meant as an \emph{alternative} to \paket{mhchem} \chemmacros offers a package option allowing you to choose which one of the two is used. -As a chemist you are probably aware of the fact that the \textsc{United Nations} have developed the \enquote{\textbf{G}lobally \textbf{H}armonized \textbf{S}ystem of Classification and Labelling of Chemicals} (GHS) as a global replacement for the various different systems in different countries. While it has not been implemented by all countries yet\footnote{\url{http://www.unece.org/trans/danger/publi/ghs/implementation_e.html}}, it as only a matter of time. +As a chemist you are probably aware of the fact that the \textsc{United Nations} have developed the \enquote{\textbf{G}lobally \textbf{H}armonized \textbf{S}ystem of Classification and Labelling of Chemicals} (GHS) as a global replacement for the various different systems in different countries. While it has not been implemented by all countries yet\cite{unece:ghsystem_implementation}, it as only a matter of time. The package \ghsystem now enables you to typeset all the hazard and precautionary statements and pictograms in a very easy way. The statements are taken from EU regulation 1272/2008 \cite{eu:ghsystem_regulation}. @@ -189,7 +196,7 @@ There are four points I hope I have achieved with this bundle: \item as much customizability as I could think of so every user can adapt the commands to his or her own wishes \item \IUPAC compliant default settings \end{itemize} -Especially the last point needed some pushing from users\footnote{Many thanks to Dr.~Paul~King!} to get things right in many places. If you find anything not compliant with \IUPAC recommendations\footnote{This does not convern the \cmd{ox} command. The \IUPAC version is \cmd[oxa]{ox*}.} I would welcome an email very much! +Especially the last point needed some pushing from users to get things right in many places. If you find anything not compliant with \IUPAC recommendations\footnote{This does not convern the \cmd{ox} command. The \IUPAC version is \cmd[oxa]{ox*}.} I would welcome an email very much! \section{Installation, Loading the Bundle}\secidx{Loading the Bundle}\secidx{Installation} The bundle comes with three style files\footnote{Those ending \texttt{sty}.}, a directory called \texttt{language/} containing the language-definition files for GHS (ending \texttt{def}), and a directory \texttt{pictures/} containing \texttt{eps}, \texttt{jpg} and \texttt{png} files (the GHS pictogramms). If you install the bundle manually \emph{please make sure to place the directories \texttt{language/} and \texttt{pictures/} in the \emph{same} directory as the style files}. @@ -200,7 +207,7 @@ Loading \chemmacros with \end{beispiel} will also load \chemformula and \ghsystem. However, you can prevent \chemmacros from loading \ghsystem: \begin{beispiel}[code only] - \usepackage[ghs=false]{chemmacros} % `chemmacros' and `formula' are loaded + \usepackage[ghsystem=false]{chemmacros} % `chemmacros' and `formula' are loaded \end{beispiel} Loading \chemformula or \ghsystem explicitly is possible and will also load \chemmacros if it hasn't been loaded yet, and will therefore implicitly load the other package, too. @@ -223,20 +230,20 @@ Some also can be used without value (\lstinline+\usepackage[option1]{chemmacros} Both \chemformula and \ghsystem don't have package options of their own. If you load them explicitly you can give them \chemmacros' options instead and they will pass them on to \chemmacros. \begin{description} \item \key[option]{bpchem}{\uline{true}/false} This option loads the package \paket{bpchem} and adjusts the layout of the \cmd{NMR} command to the \paket{bpchem} commands \lstinline+\HNMR+ and \lstinline+\CNMR+. (default = \texttt{false}) - \item \key[option]{circled}{\uline{formal}/all/none} \chemmacros uses two different kinds of charges\footnote{Thanks to Christoph Sch\"afer, who pointed out to me, that v1.1 handled the charges too sloppy!}, which indicate the usage of real ($+/-$) and formal (\fplus/\fminus) charges. The option \texttt{formal} distinguishes between them, option \texttt{none} displays them all without circle, option \texttt{all} circles all (default = \texttt{formal}) + \item \key[option]{circled}{\uline{formal}/all/none} \chemmacros uses two different kinds of charges which indicate the usage of real ($+/-$) and formal (\fplus/\fminus) charges. The option \texttt{formal} distinguishes between them, option \texttt{none} displays them all without circle, option \texttt{all} circles all (default = \texttt{formal}) \item \key[option]{circletype}{\uline{chem}/math} This option switches between two kinds of circled charge symbols: \cmd{fplus} \fplus\ and \lstinline+$\oplus$+ $\oplus$. (default = \texttt{chem}) \item \key[option]{cmversion}{1/2/bundle} This option restores the old definitions of some commands, so documents set with v1.* will still compile correctly. (default = \texttt{bundle}). Actually \texttt{2} and \texttt{bundle} are only aliases. This option can only be chosen in the preamble. Note: this is a new name for the now deprecated option \key{version}. \item \key[option]{detect-bold}{\uline{true}/false} \emph{This option is deprecated!} \item \key[option]{EZ}{\uline{chemmacros}/cool} \emph{This option is deprecated!} \item \key[option]{german}{\uline{true}/false} This option changes the commands \cmd{pKa}, \cmd{sld} and \cmd{lqd} (default = \texttt{false}). This option has the alias \key[option]{ngerman}. - \item \key[option]{ghs}{\uline{true}/false} Disable the use of the \ghsystem package. Setting \key{ghs}{false} will prevent \chemmacros from loading \ghsystem. (default = \texttt{true}) + \item \key[option]{ghsystem}{\uline{true}/false} Disable the use of the \ghsystem package. Setting \key{ghs}{false} will prevent \chemmacros from loading \ghsystem. (default = \texttt{true}) \item \key[option]{iupac}{auto/restricted/strict} Take care of how iupac naming commands are defined, see page \pageref{key:iupac} (default = \texttt{auto}) \item \key[option]{method}{\uline{chemformula}/mhchem} You can choose the method which \chemmacros will use for the reaction environments (see section \ref{ssec:mhchem_reaktionen}) and the typesetting of the particles (see section \ref{sec:teilchen}). (default = \texttt{chemformula}). This option can only be chosen in the preamble. \item \key[option]{Nu}{\uline{chemmacros}/mathspec} The package \paket{mathspec} also defines a macro \cmd{Nu}. This option chooses which definition holds, see page \pageref{Nu}. (default = \texttt{chemmacros}). This option can only be chosen in the preamble. \item \key[option]{strict}{\uline{true}/false} Setting \key{strict}{true} will turn all warning messages into erros messages. (default = \texttt{false}) \item \key[option]{synchronize}{\uline{true}/false} The setting \texttt{true} will tell \chemmacros the adapt the font settings of \chemformula if that method has been chosen (default = \texttt{false}). In order to demonstrate this feature this document is set with \key{synchronize}{true} and the \chemformula setting \lstinline+\chemsetup[chemformula]{font-spec={[Color=darkgray]Latin Modern Sans}}+. - \item \key[option]{upgreek}{none/textgreek/\uline{upgreek}} This Options determines how the letters \ch{Chemalpha} and friends are typeset. See page \pageref{key:upgreek} for more information. This option can only be chosen in the preamble. (default = \texttt{upgreek}) - \item \key[option]{version} This option does nothing and only exists for backwards compatibility. The functionality is now provided by the option \key{cmversion}. The option has been renamed so \chemmacros is compatible with the global option \texttt{version} of \paket[koma-script]{KOMA-script}. + \item \key[option]{upgreek}{none/textgreek/\uline{upgreek}} This Options determines how the letters \cmd{Chemalpha} and friends are typeset. See page \pageref{key:upgreek} for more information. This option can only be chosen in the preamble. (default = \texttt{upgreek}) + \item \key[option]{version} \emph{This option does nothing and only exists for backwards compatibility}. The functionality is now provided by the option \key{cmversion}. The option has been renamed so \chemmacros is compatible with the global option \texttt{version} of \paket[koma-script]{KOMA-script}. \item \key[option]{xspace}{\uline{true}/false} With this option most commands are defined with a \lstinline+\xspace+. (default = \texttt{true}) \end{description} \secidx*{Package Options} @@ -486,19 +493,32 @@ A command defined in this way will obey the setting of the option \key[option]{i \secidx*{IUPAC Names} \subsection{Latin Phrases}\secidx{Latin Phrases} -At last there are two commands for common latin phrases. +The package \paket{chemstyle} provides the command \cmd{latin} to typeset common latin phrases in a consistent way. \chemmacros defines a similar \cmd{latin} only if \paket{chemstyle} has \emph{not} been loaded and additionally provides these commands: \begin{description} \item \cmd{insitu} \insitu \item \cmd{abinitio} \abinitio + \item \cmd{invacuo} \invacuo \end{description} -If the package \paket{chemstyle} has been loaded, too\footnote{\paket*{chemstyle} defines other similar commands like \etal, \invacuo.}, they are defined using \paket{chemstyle}'s \lstinline+\latin+ command. This means that then the appearance depends on \paket{chemstyle}'s option \texttt{abbremph}: +If the package \paket{chemstyle} has been loaded they are defined using \paket{chemstyle}'s \lstinline+\latin+ command. This means that then the appearance depends on \paket{chemstyle}'s option \texttt{abbremph}: \begin{beispiel} \insitu, \abinitio\\ \cstsetup{abbremph=false} \insitu, \abinitio \end{beispiel} -If \paket{chemstyle} hasn't been loaded, they're always in \textit{italics}. +The commands are defined through +\begin{description} + \item \cmd{DeclareChemLatin}{<cmd>}\ma{<phrase>} + \item \cmd{RenewChemLatin}{<cmd>}\ma{<phrase>} +\end{description} +\begin{beispiel} + \DeclareChemLatin\ltn{latin text} + \ltn \cstsetup{abbremph=false} \ltn +\end{beispiel} +If you have \emph{not} loaded \paket{chemstyle} you can change the appearance with this option: +\begin{description} + \item \key[latin]{format}{<definition>} Default = \lstinline+\itshape+ +\end{description} \secidx*{Latin Phrases} \section{Units for the Usage With \textsf{siunitx}}\label{sec:einheiten}\secidx{Units} @@ -541,7 +561,7 @@ Easy representation of \pH, \pKa \ldots (the command \cmd{pKa} depends on the pa \achtung{The default appearance of the \p{}-commands has changed to follow \IUPAC recommendations.} \begin{myquote}[\IUPAC Green Book \cite[][p.\,103]{iupac:greenbook}] - The operator \p{} […] shall be printed in Roman type. + The operator \p{} […] shall be printed in Roman type. \end{myquote} There is one option which changes the style the \p{} is typeset: @@ -723,10 +743,10 @@ one can specify the most common reaction mechanisms. \texttt{<type>} can have on \secidx*{Reaction Mechanisms} \section{Redox Reactions}\label{sec:redoxreaktionen}\secidx{Redox Reactions} -\chemmacros provides two commands\footnote{Thanks to \href{http://www.mathannotated.com/}{Peter Cao} who suggested this feature.}, to visualize the transfer of electrons in redox reactions. Both commands are using \TikZ. +\chemmacros provides two commands to visualize the transfer of electrons in redox reactions. Both commands are using \TikZ. \begin{description} \item \cmd{OX}{<name>,<atom>} - \item \cmd{redox}(<name1>,<name2>)[<tikz>][<num>]{<text>} + \item \cmd{redox}(<name1>,<name2>)[<tikz>][<num>]{<text>} Only the first argument \da{<name1>,<name2>} is required, the others are all optional. \end{description} \cmd{OX} places \texttt{<atom>} into a node, which is named with \texttt{<name>}. If you have set two \cmd{OX}, they can be connected with a line using \cmd{redox}. To do so the names of the two nodes that are to be connected are written in the round braces. Since \cmd{redox} draws a tikzpicture with options \texttt{remember picture,overlay}, the document needs to be \emph{compiled at least two times}. @@ -1092,6 +1112,17 @@ The list lists all reactions with a number and disregards reactions without numb 2 H2O <<=> H3O+ + OH- \end{reaction} \end{beispiel} +If you use the \texttt{reactions} environment this will not work, though. In this case you can use +\begin{description} + \item\cmd{AddRxnDesc}{<description>} +\end{description} +\begin{beispiel} + \begin{reactions} + Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 &-> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ + "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 &-> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} + \end{reactions} +\end{beispiel} +Note: you don't have to use the phantom commands if you haven't changed the format of the atoms, see section \ref{sec:format} on page \pageref{sec:format}. \secidx*{Reaction Environments} \section{Phases}\label{sec:phasen}\secidx{Phases} @@ -1117,7 +1148,7 @@ With the package option \key{german} (see section \ref{sec:optionen}) you get th \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas} \end{beispiel} -The \IUPAC recommendation\footnote{Thanks to Paul King for pointing this out.} to indicate the state of aggregation is to put it in parentheses after the compound \cite{iupac:greenbook}. However, you might want to put it as a subscript which is also very common. +The \IUPAC recommendation to indicate the state of aggregation is to put it in parentheses after the compound \cite{iupac:greenbook}. However, you might want to put it as a subscript which is also very common. \begin{myquote}[{\IUPAC Green Book \cite[][p.\,54]{iupac:greenbook}}] The [\ldots] symbols are used to represent the states of aggregation of chemical species. The letters are appended to the formula in parentheses and should be printed in Roman (upright) type without a full stop (period). @@ -1275,9 +1306,9 @@ Some keys can be set without value. Then the \uline{underlined} value is used. bpchem & option & \uline{true}/false & false & page \pageref{key:option_bpchem} \\ circled & option & formal/\uline{all}/none & formal & page \pageref{key:option_circled} \\ circletype & option & chem/math & chem & page \pageref{key:option_circletype} \\ - version & option & 1/2/bundle & bundle & page \pageref{key:option_version} \\ + cmversion & option & 1/2/bundle & bundle & page \pageref{key:option_cmversion} \\ german & option & \uline{true}/false & false & page \pageref{key:option_german} \\ - ghs & option & \uline{true}/false & true & page \pageref{key:option_ghs} \\ + ghsystem & option & \uline{true}/false & true & page \pageref{key:option_ghsystem} \\ iupac & option & auto/restricted/strict & auto & page \pageref{key:option_iupac} \\ method & option & chemformula/formula & formula & page \pageref{key:option_method} \\ Nu & option & chemmacros/mathspec & chemmacros & page \pageref{key:option_Nu} \\ @@ -1288,6 +1319,8 @@ Some keys can be set without value. Then the \uline{underlined} value is used. xspace & option & \uline{true}/false & true & page \pageref{key:option_xspace} \\ \multicolumn{5}{l}{\cmd{ba}, \cmd{Nu}:} \\ elpair & particle & \uline{dots}/dash/false & false & page \pageref{key:particle_elpair} \\ + \multicolumn{5}{l}{\cmd{DeclareChemLatin}:} \\ + format & latin & <anything> & \lstinline=\itshape= & page \pageref{key:latin_format} \\ \multicolumn{5}{l}{\cmd{pch}, \cmd{mch}, \cmd{fpch}, \cmd{fmch}:} \\ append & charges & \uline{true}/false & false & page \pageref{key:charges_append} \\ \multicolumn{5}{l}{acid/base:} \\ @@ -1654,7 +1687,10 @@ Changing the length of the bonds:\secidx[bonds!length]{Compounds} \secidx*{Compounds} \section{Special Input Types}\secidx{Special Types} -There are some \enquote{special type} input groups. These are groups which consist of only one token, namely of the following ones: +There are some \enquote{special type} input groups. + +\subsection{Single Token Groups}\secidx[single token groups]{Special Types} +The first kind are groups which consist of only one token, namely of the following ones: \begin{description} \item \cmd{ch}{ + } \ch{+} creates the plus sign between compounds with space around it:\\ \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} @@ -1671,6 +1707,26 @@ The space left and right of the plus sign can be set with this option: \ch{A + B}\\ \ch[plus-space=4pt]{A + B} \end{beispiel} + +\subsection{Option Input}\secidx[option input]{Special Types} +\achtung{This is an experimental feature and may well be dropped in future versions.} +Sometimes you might want to apply an option only to a part of a, say, reaction. Of course you have the possibility to use \cmd{ch} several times. +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} +\end{beispiel} +This, however, interrupts the input in your source and \emph{may} mess with the spacing. That's why there is an alternative: +\begin{description} + \item \ttfamily\cmd{ch}\{\lstinline+@{<options>}+\}\normalfont\ The options specified this way will be valid \emph{only} until the next compound is set. +\end{description} +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ + or of course:\\ + \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} +\end{beispiel} \secidx*{Special Types} \section{Escaped Input}\secidx{Escaped Input} @@ -1689,7 +1745,7 @@ If you put something between \lstinline+" "+ or \lstinline+' '+ then the input w In many cases you won't need to escape the input. But when you get into trouble when using a command inside \cmd{ch} try hiding it. \subsection{Math}\secidx[math]{Escaped Input} -If you espacially want to input math you just enclose it with \lstinline+$ $+. This output is different from the escaped text as it is followed by a space. +If you especially want to input math you just enclose it with \lstinline+$ $+. This output is different from the escaped text as it is followed by a space. \begin{description} \item \cmd{ch}{ \lstinline"$<escaped math>$" } \end{description} @@ -1773,8 +1829,6 @@ These are the options which enable you to customize the arrows: \item \key{arrow-offset}{<dim>} This is the length that an arrow protrudes a label on both sides. This means an empty arrow's length is two times \texttt{arrow-offset}. Default = \texttt{1.5ex} \item \key{arrow-yshift}{<dim>} Shifts an arrow up (positive value) or down (negative value). Default = \texttt{0pt} \item \key{arrow-ratio}{<factor>} The ratio of the arrow lengths of the unbalanced equilibrium. \texttt{.4} would mean that the length of the shorter arrow is $0.4\times$ the length of the longer arrow. Default = \texttt{.6} -% \item \key{arrow-tips}{<type>} This specifies the arrow tips. In principle all of \TikZ' arrows could be used. However, this option requires \texttt{<type>} to be an arrow tip itself \emph{and} to have a \texttt{left <type>} and \texttt{right <type>} to be defined. This means if you don't define any arrow tips yourself you can only choose between \texttt{cf} and \texttt{to}. Default = \texttt{cf} -% \item \key{arrow-style}{<tikz>} \TikZ keys for free customization of the arrows. \item \key{compound-sep}{<dim>} The space between compounds and the arrows. Default = \texttt{1ex} \item \key{label-offset}{<dim>} The space between the labels and the arrows. Default = \texttt{2pt} \item \key{label-style}{<font command>} The relative font size of the labels. Default = \lstinline+\footnotesize+ @@ -1790,8 +1844,22 @@ The following code shows the effect of the different options on the \lstinline+< larger distance to compounds: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ smaller labels: \ch[label-style=\tiny]{A <=>[x][y] B} \end{beispiel} - -\subsection{Modify Arrow Types}\secidx[types!modify]{Arrows} +% +% The tips of the arrows are designed to match the appearance of \paket{chemfig}'s arrows. If you like other arrow tips better and want to change them without redefining all the arrows (see section \ref{sec:arrows_modify}) you can use the command +% \begin{description} +% \item \cmd{pgfarrowsrenewalias}{<new start>}\ma{<new end>}\ma{<old start>}\ma{<old end>} +% \end{description} +% This command is the same as \lstinline=\pgfarrowsdeclarealias= but without the check if the new tips exist. This means it lets you overwrite old definitions. +% \begin{beispiel} +% % overwrite the chemformula arrow heads `cf' and `left cf' +% \pgfarrowsrenewalias{left cf}{left cf}{left to}{left to} +% \pgfarrowsrenewalias{cf}{cf}{to}{to} +% +% \ch{CO + H2O <=> CO2 + H2} \\ +% \ch{C + H2O -> CO + H2} +% \end{beispiel} + +\subsection{Modify Arrow Types}\label{sec:arrows_modify}\secidx[types!modify]{Arrows} The arrows are defined with the command \begin{description} \item \cmd{DeclareChemArrow}{<tokens>}\ma{<tikz>} @@ -1866,7 +1934,7 @@ If for some reason you want to insert an exclamation mark \emph{without} it crea \end{beispiel} \secidx*{Names} -\section{Format and Font}\secidx{Format and Font} +\section{Format and Font}\secidx{Format and Font}\label{sec:format} In the standard setting \chemformula doesn't make any default changes to the font of the formula output. Let's take a look at a nonsense input which shows all features: \begin{beispiel} \newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} @@ -1985,7 +2053,6 @@ The following example shows how the cancelling of compounds could be done\footno \begin{beispiel} % needs `cancel' \begin{align*} - \centering \ch{\cancel{HCOOH\aq} + H2O\lqd{} &<=> H3O^+\aq{} + \cancel{HCOO^-\aq}} \\ \ch{\cancel{HCOO^-\aq} + H2O\lqd{} &<=> \cancel{HCOOH\aq} + OH^-\aq}\\[-1ex] \cline{1-2} @@ -2006,8 +2073,8 @@ All of \ghsystem's options belong to the module \textcolor{module}{\texttt{ghsys \subsection{Simple Statements}\secidx[get statements]{GHSYSTEM} The general usage is simple: you use the command \begin{description} - \item\cmd{ghs}[<options>]{<type>}{<number>} - \item\cmd[ghsa]{ghs*}[<options>]{<type>}{<number>} + \item\cmd{ghs}[<options>]{<type>}\ma{<number>} + \item\cmd[ghsa]{ghs*}[<options>]{<type>}\ma{<number>} \end{description} There are three types available: \texttt{h}, \texttt{euh} and \texttt{p}. The \ma{<type>} argument is case insensitive, so just type them in as you like. \begin{beispiel} @@ -2229,11 +2296,18 @@ The code below shows how \ref{tab:ghs-hp-statements} was created: \appendix \part{Appendix}\index{APPENDIX@\textbf{APPENDIX}} \section*{Suggestions and Bug Reports}\addcontentsline{toc}{section}{Suggestions and Bug Reports} -Feedback on \chemmacros, \chemformula and \ghsystem is highly appreciated and welcome! If you have suggestions for macros, missing features \etc, please don't hesitate to contact me. If you recognize any errors, be it chemical ones, wrong documentation and the like, I'd be grateful about a short email\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. +Feedback on \chemmacros, \chemformula and \ghsystem is highly appreciated and welcome! Especially \chemformula and \ghsystem are still in beta testing phase so even if I repeat myself: feedback is highly welcome. + +If you have suggestions for macros, missing features \etc, please don't hesitate to contact me. If you recognize any errors, be it chemical ones, wrong documentation and the like, I'd be grateful about a short email\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. If you find any bugs, it would be best, if you'd send me a minimal example, with which I can reproduce the bug. You can also submit an issue on \url{https://bitbucket.org/cgnieder/chemmacros/} instead. -Many thanks to all the people, who already provided me with feedback! +Many thanks to all the people who already provided me with feedback, especially (in alphabetical order): +\begin{itemize} + \item \href{http://www.mathannotated.com/}{Peter Cao} + \item Dr.\ Paul King + \item Christoph Schäfer +\end{itemize} \printbibliography diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty index 11b5e014f7f..a509e2772a1 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/03/14 - % +% - 2012/03/20 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -30,8 +30,8 @@ \RequirePackage{ expl3 } \ProvidesExplPackage {chemformula} - {2012/03/14} - {3.1c} + {2012/03/20} + {3.2} {typeset chemical compounds and reactions} %-----------------------------------------------------------------------------% @@ -81,7 +81,7 @@ % pass options to the `chemmacros' package \DeclareOption* { \PassOptionsToPackage { \CurrentOption } { chemmacros } } -\ProcessOptions\relax +\ProcessOptions \scan_stop: \RequirePackage { chemmacros , nicefrac } @@ -228,6 +228,13 @@ \pgfusepathqfillstroke } +% a possibility to overwrite the arrow tips: +\providecommand*\pgfarrowsrenewalias[4]{% + \let\savedef\pgf@arrows@check@already + \def\pgf@arrows@check@already##1##2##3{##3}% + \pgfarrowsdeclarealias{#1}{#2}{#3}{#4}% + \let\pgf@arrows@check@already\savedef} + %-----------------------------------------------------------------------------% % dimension variables \dim_new:N \l_chemformula_arrow_length_dim @@ -494,12 +501,12 @@ { \g_chemformula_options_tl } } \tl_map_function:nN { #1 } \chemformula_input:n - \chemformula_generate_arrows:N \l_chemformula_input_tl - \chemformula_generate_name:N \l_chemformula_output_tl + \chemformula_generate_arrows:V \l_chemformula_input_tl + \chemformula_generate_name:V \l_chemformula_output_tl \tl_set_rescan:Nno \l_chemformula_output_tl { \ExplSyntaxOn } { \l_chemformula_output_tl } - \chemformula_write:n { \l_chemformula_output_tl } + \chemformula_write:V \l_chemformula_output_tl \group_end: } @@ -541,7 +548,7 @@ \NewDocumentCommand \ch { om } { \chemformula_ch:nn { #1 } { #2 } } -\cs_new:Npn \chemformula_write:n #1 +\cs_new:Nn \chemformula_write:V { \mode_if_math:TF { @@ -556,7 +563,7 @@ %-----------------------------------------------------------------------------% % arrow generation & detection -\cs_set:Npn \chemformula_generate_arrows:n #1 +\cs_set:Nn \chemformula_generate_arrows:V { \tl_set:No \l_tmpa_tl { #1 } \seq_map_inline:Nn \l_chemformula_arrows_type_seq @@ -566,7 +573,6 @@ } \tl_set_eq:NN \l_chemformula_output_tl \l_tmpa_tl } -\cs_generate_variant:Nn \chemformula_generate_arrows:n { N } \cs_new:Npn \chemformula_detect_arrows:n #1 { @@ -612,14 +618,13 @@ } \cs_generate_variant:Nn \width_to_dim:nn { Nn } -\cs_new:Npn \chemformula_generate_name:n #1 +\cs_new:Nn \chemformula_generate_name:V { \tl_set:No \l_tmpa_tl { #1 } \tl_if_in:onT { \l_tmpa_tl } { ! } { \tl_replace_all:Nnn \l_tmpa_tl { ! } { \chemformula_name_cmpd:w } } \tl_set_eq:NN \l_chemformula_output_tl \l_tmpa_tl } -\cs_generate_variant:Nn \chemformula_generate_name:n { N } \cs_new:Npn \chemformula_detect_name:n #1 { @@ -633,6 +638,8 @@ % parsing input % booleans: \bool_new:N \l_chemformula_inside_ch_bool +\bool_new:N \l_chemformula_options_bool +\bool_new:N \l_chemformula_is_option_bool \bool_new:N \l_chemformula_stoich_bool \bool_new:N \l_chemformula_is_plus_bool \bool_new:N \l_chemformula_is_up_bool @@ -1128,8 +1135,8 @@ \chemformula_input_escape_math:n { #1 } \chemformula_input_stoich:n { #1 } \chemformula_clean_chem_macros:o { \l_chemformula_tmpa_tl } - \chemformula_input_cmpd:oN - { \l_chemformula_tmpa_tl } \l_chemformula_input_tl + \chemformula_input_cmpd:VN + \l_chemformula_tmpa_tl \l_chemformula_input_tl \chemformula_input_arrow:n { #1 } \chemformula_input_name:n { #1 } \chemformula_input_plus:n { #1 } @@ -1138,6 +1145,25 @@ } %-----------------------------------------------------------------------------% +% set options for next compound: +% TODO: this is not working: +% - applies to first instead of the next cmpd +\cs_new:Npn \chemformula_input_options:n #1 + { + \makeatother + \tl_set_rescan:Nnn \l_tmpa_tl { \makeatletter } { #1 } + \tl_if_in:VnTF \l_tmpa_tl { @ } + { + \bool_set_true:N \l_chemformula_options_bool + \bool_set_true:N \l_chemformula_is_option_bool + \tl_remove_all:Nn \l_tmpa_tl { @ } + \exp_last_unbraced:Nno \tl_set:Nn \l_chemformula_internal_options_tl + { \l_tmpa_tl } + } + { \bool_set_false:N \l_chemformula_is_option_bool } + } + +%-----------------------------------------------------------------------------% % input stoichiometric factors \cs_new:Npn \chemformula_input_stoich:n #1 { @@ -1236,8 +1262,19 @@ { \bool_set_true:N \l_chemformula_is_up_bool } \chemformula_detect_arrows:n { #1 } \chemformula_detect_name:n { #1 } + \chemformula_input_options:n { #1 } + \bool_if:NT \l_chemformula_is_option_bool + { + \tl_put_right:Nn #2 + { + \group_begin: + \keys_set:nV { chemmacros / chemformula } + \l_chemformula_internal_options_tl + } + } \bool_if:nT { + !\l_chemformula_is_option_bool && !\l_chemformula_is_plus_bool && !\l_chemformula_is_down_bool && !\l_chemformula_is_up_bool && @@ -1250,6 +1287,15 @@ \tl_put_right:Nn #2 { \chemformula_font_inner: } \chemformula_handle_sub_and_superscripts:nN { #1 } #2 + \bool_if:NT \l_chemformula_options_bool + { + \tl_put_right:Nn #2 + { + \group_end: + \tl_clear:N \l_chemformula_internal_options_tl + } + \bool_set_false:N \l_chemformula_options_bool + } } } { @@ -1258,7 +1304,7 @@ \tl_clear:N \l_chemformula_stoich_tl } } -\cs_generate_variant:Nn \chemformula_input_cmpd:nN { oN , fN , xN } +\cs_generate_variant:Nn \chemformula_input_cmpd:nN { VN } \cs_new:Nn \chemformula_font_inner: { @@ -1694,6 +1740,8 @@ VERSION HISTORY - new option charge-vshift 2012/03/14 - version 3.1c - a few changes in chemmacros.sty - improved arrow labels +2012/03/20 - version 3.2 - new: option input via @{<options>} + - a few changes in chemmacros.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty index 77dab7f9d0c..b06c416bc68 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/03/14 - % +% - 2012/03/20 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -33,8 +33,8 @@ \ProvidesExplPackage {chemmacros} - {2012/03/14} - {3.1c} + {2012/03/20} + {3.2} {macros and commands for chemists} \@ifpackageloaded { chemformula } {} { \RequirePackage { chemformula } } @@ -305,6 +305,23 @@ exist. } +\msg_set:nnnn { chemmacros } { declare-latin } + { + The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. + } + { + You've~tried~to~define~a~latin~phrase~with~\token_to_str:N + \DeclareChemLatin,~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl + already~exists.~Choose~another~name. + } + +\msg_set:nnnn { chemmacros } { f } + { The~latin~phrase \token_to_str:N #1 \c_space_tl is~not~defined. } + { + You've~tried~to~renew~the~latin~phrase~\token_to_str:N #1 ,~but~it~doesn't~ + exist. + } + \msg_set:nnnn { chemmacros } { declare-phase } { The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. @@ -600,7 +617,7 @@ \tl_set_rescan:Nno \l_tmpa_tl { \ExplSyntaxOn } { \l_chemformula_input_tl } - \chemformula_write:n { \l_tmpa_tl } + \chemformula_write:V \l_tmpa_tl \group_end: \chemmacros_xspace: } @@ -996,17 +1013,49 @@ \cs_set_eq:NN \iupac \chemmacros_iupac:n % latin phrases +\tl_new:N \l_chemmacros_latin_format_tl +\tl_set:Nn \l_chemmacros_latin_format_tl { \itshape } + +\keys_define:nn { chemmacros / latin } + { format . tl_set:N = \l_chemmacros_latin_format_tl } + +\cs_new:Npn \chemmacros_latin:n #1 + { { \l_chemmacros_latin_format_tl #1 } } + +\prop_new:N \l_chemmacros_latin_prop +\NewDocumentCommand \DeclareChemLatin { mm } + { + \cs_if_free:NTF #1 + { + \cs_new:Npn #1 { \chemmacros_latin:n { #2 } \chemmacros_xspace: } + \prop_put:Nnn \l_chemmacros_latin_prop { #1 } { #2 } + } + { \chemmacros_msg:nnxx { chemmacros } { declare-latin } { #1 } { } } + } + +\NewDocumentCommand \RenewChemLatin { mm } + { + \prop_if_in:NnTF \l_chemmacros_latin_prop { #1 } + { \cs_set:Npn #1 { \chemmacros_latin:n { #2 } \chemmacros_xspace: } } + { \chemmacros_msg:nnxx { chemmacros } { renew-latin } { #1 } { } } + } + \AtBeginDocument { \bool_if:NTF \l_chemmacros_chemstyle_bool { - \cs_new_nopar:Npn \insitu { \latin{in~situ} \chemmacros_xspace: } - \cs_new_nopar:Npn \abinitio { \latin{ab~initio} \chemmacros_xspace: } + \AfterPackage* { chemstyle } + { + \cs_undefine:N \invacuo + \cs_set_eq:NN \chemmacros_latin:n \cst@latin + } } { - \cs_new_nopar:Npn \insitu { \textit{in~situ} \chemmacros_xspace: } - \cs_new_nopar:Npn \abinitio { \textit{ab~initio} \chemmacros_xspace: } + \cs_new_eq:NN \latin \chemmacros_latin:n } + \DeclareChemLatin \insitu { in~situ } + \DeclareChemLatin \abinitio { ab~initio } + \DeclareChemLatin \invacuo { in~vacuo } } % --------------------------------------------------------------------------- % @@ -1447,7 +1496,7 @@ \tl_set:Nn \l_chemmacros_redox_end_tl { #2 } } -\NewDocumentCommand \redox { > { \SplitArgument { 1 } { , } } d() o o m } +\NewDocumentCommand \redox { > { \SplitArgument { 1 } { , } } r() o o G{} } { \IfNoValueT { #1 } { @@ -1820,7 +1869,7 @@ \char_set_catcode_letter:N \@ % --------------------------------------------------------------------------- % -% reaction environments for mhchem +% reaction environments % redefine mathtools' command \MT_define_tagform:nwnn to ensure we add an % entry to the list of reactions even if the user redefines the reaction tag @@ -1838,13 +1887,21 @@ \addcontentsline { lor } { reaction } { \l_chemmacros_reaction_lorname_tl #3 #2 ##1 #4 - \tl_use:c { l_chemmacros_reaction_ \thereaction _tl } + \tl_use:N \g_chemmacros_reaction_description_tl } + \tl_gclear:N \g_chemmacros_reaction_description_tl } } } } +\tl_new:N \g_chemmacros_reaction_description_tl +\NewDocumentCommand \AddRxnDesc { m } + { + \tl_if_blank:nF { #1 } + { \tl_gset:Nn \g_chemmacros_reaction_description_tl { : ~ #1 } } + } + % define \listofreactions \tl_new:N \l_chemmacros_reaction_lorname_tl \tl_new:N \reactionlistname @@ -1886,7 +1943,7 @@ { \usetagform { CMreaction } } { \usetagform { reaction } } % => this is problematic because it disallows resetting the counter: - \tl_new:c { l_chemmacros_reaction_ \thereaction _tl } +% \tl_new:c { l_chemmacros_reaction_ \thereaction _tl } } % switch back to equation tags @@ -1930,12 +1987,7 @@ \NewEnviron { #2 } [ 2 ] [] { \chemmacros_begin_reaction: - \tl_if_blank:nF { ##1 } - { - \tl_set:cn - { l_chemmacros_reaction_ \thereaction _tl } - { : ~ ##1 } - } + \AddRxnDesc { ##1 } \begin { #3 } { ##2 } \chemmacros_equation_chemformula:o { \BODY } \end{ #3 } @@ -1955,12 +2007,7 @@ \NewEnviron { #2 } [ 1 ] [] { \chemmacros_begin_reaction: - \tl_if_blank:nF { ##1 } - { - \tl_set:cn - { l_chemmacros_reaction_ \thereaction _tl } - { : ~ ##1 } - } + \AddRxnDesc { ##1 } \begin { #3 } \chemmacros_equation_chemformula:o { \BODY } \end { #3 } @@ -3265,6 +3312,11 @@ Version history 2012/03/14 - version 3.1c - compatibility with KOMA's global option "version = <value>" - bugfix in the list of reactions +2012/03/20 - version 3.2 - new feature in chemformula + - improved list of reactions: resetting the "reaction" + counter now doesn't cause errors any more + - \AddRxnDesc added which allows to add descriptions + to each reaction in the "reactions" environment % --------------------------------------------------------------------------- % % TODO: diff --git a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty index 72e2ab854e7..4c91a0b8796 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty @@ -5,7 +5,7 @@ % - macros and commands for chemists - % % --------------------------------------------------------------------------- % % - Clemens Niederberger - % -% - 2012/03/14 - % +% - 2012/03/20 - % % --------------------------------------------------------------------------- % % - https://bitbucket.org/cgnieder/chemmacros/ - % % - contact@mychemistry.eu - % @@ -30,8 +30,8 @@ \RequirePackage{ expl3 } \ProvidesExplPackage {ghsystem} - {2012/03/14} - {3.1c} + {2012/03/20} + {3.2} {globally harmonised system} % --------------------------------------------------------------------------- % @@ -455,6 +455,7 @@ VERSION HISTORY 2012/02/26 - version 3.1a - changes in the chemmacros package 2012/03/03 - version 3.1b - changes in packages chemformula and chemmacros 2012/03/14 - version 3.1c - changes in packages chemformula and chemmacros +2012/03/20 - version 3.2 - changes in packages chemformula and chemmacros %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO: |