diff options
author | Karl Berry <karl@freefriends.org> | 2014-08-10 22:26:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-08-10 22:26:33 +0000 |
commit | 42bcd08cc7a71e0192916020b1ace6838c3c21cb (patch) | |
tree | fcfe4de6272df848a5a89e00052a7a525c3b88a9 /Master/texmf-dist/doc/latex/chemmacros | |
parent | 118ad5fd40d58a85598d9e7227466ebf8ad1a946 (diff) |
chemmacros (9aug14)
git-svn-id: svn://tug.org/texlive/trunk@34897 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/chemmacros')
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/README | 33 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf | bin | 959569 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex | 1718 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemformula_test_sub_and_superscripts.tex | 225 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.pdf | bin | 553804 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex | 513 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.pdf | bin | 910574 -> 908905 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex | 141 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf | bin | 789000 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex | 600 |
10 files changed, 70 insertions, 3160 deletions
diff --git a/Master/texmf-dist/doc/latex/chemmacros/README b/Master/texmf-dist/doc/latex/chemmacros/README index 73134e9bce9..befadaf28f7 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/README +++ b/Master/texmf-dist/doc/latex/chemmacros/README @@ -1,17 +1,11 @@ -------------------------------------------------------------------------- -the CHEMMACROS bundle 2014/08/06 - - chemmacros package v4.5a -> macros and commands for chemists - - chemformula package v4.7 -> typeset chemical compounds and reactions - - ghsystem package v4.5b -> typeset H & P statements and pictograms - from the globally harmonised system (GHS) - - chemgreek package v0.4 -> handle mapping of upright greek letters to - the \chemalpha ... commands --------------------------------------------------------------------------- -This bundle succeeds the chemmacros package which is now part of the -bundle +the CHEMMACROS package v4.6 2014/08/08 + + macros and commands for chemists + -------------------------------------------------------------------------- Clemens Niederberger -Web: https://bitbucket.org/cgnieder/chemmacros/ +Web: https://github.com/cgnieder/chemmacros/ E-Mail: contact@mychemistry.eu -------------------------------------------------------------------------- Copyright 2011-2014 Clemens Niederberger @@ -28,24 +22,9 @@ This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Clemens Niederberger. -------------------------------------------------------------------------- -The chemmacros bundle consists of the following files -package files: +The chemmacros package consists of the following files - chemmacros.sty, - - chemformula.sty, - - ghsystem.sty, - - chemgreek.sty, -image files: - - eps-, png-, pdf- and jpg-files for the GHS pictograms (4x31 pictures) -language-definition files: - - ghsystem_german.def, - - ghsystem_english.def, - - ghsystem_italian.def - - ghsystem_langtemplate.def -documentation and README: - chemmacros_en.tex, chemmacros_en.pdf, - - chemfurmula_en.tex, chemformula_en.pdf, - - ghsystem_en.tex, ghsystem_en.pdf, - - chemgreek_en.tex, chemgreek_en.pdf, - README -------------------------------------------------------------------------- If you have any ideas, questions, suggestions or bugs to report, please diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf Binary files differdeleted file mode 100644 index e9435b457f2..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex deleted file mode 100644 index 885b17f1395..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex +++ /dev/null @@ -1,1718 +0,0 @@ -% arara: pdflatex -% !arara: biber -% !arara: pdflatex -% arara: pdflatex -% -------------------------------------------------------------------------- -% the CHEMMACROS bundle -% chemformula_en.tex -% macros and commands for chemists -% -------------------------------------------------------------------------- -% Clemens Niederberger -% -------------------------------------------------------------------------- -% https://bitbucket.org/cgnieder/chemmacros/ -% contact@mychemistry.eu -% -------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% -------------------------------------------------------------------------- -% Copyright 2011-2013 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% -------------------------------------------------------------------------- -\documentclass[load-preamble+]{cnltx-doc} -\usepackage[utf8]{inputenc} -\usepackage[greek=newtx]{chemmacros} -\setcnltx{ - package = {chemformula}, - title = \huge the \chemmacros\ bundle, - url = https://bitbucket.org/cgnieder/chemmacros/ , - authors = Clemens Niederberger , - email = contact@mychemistry.eu , - info = { - packages \chemmacros\ (v\csname chemmacros@version\endcsname), - \chemformula\ (v\csname chemformula@version\endcsname), - \ghsystem\ (v\csname ghsystem@version\endcsname) and - \chemgreek\ (v\csname chemgreek@version\endcsname)\\[2ex] - {\Large documentation for the \chemformula\ package}} , - abstract = {% - \centering - \includegraphics{chemmacros-logo.pdf} - \par - } , - add-cmds = { - abinitio, activatechemgreekmapping, AddRxnDesc, anti, aq, aqi, - ba, bond, bridge, - cd, ce, ch, changechemgreeksymbol, charrow, chcpd, chemabove, chemalpha, - chembeta, chemgamma, chemdelta, chemDelta, chemformula@bondlength, - chemomega, chemphi, chemPhi, chemsetup, chlewis, chname , cip, cis, ch, - CNMR, - data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, - declarechemgreekmapping, DeclareChemIUPAC, DeclareChemLatin, - DeclareChemNMR, DeclareChemParticle, DeclareChemPhase, - DeclareChemReaction, DeclareChemState, delm, delp, Delta, Dfi, - el, ElPot, endo, Enthalpy, enthalpy, Entropy, - fmch, fpch, fscrm, fscrp, - gas, ghs, ghslistall, ghspic, Gibbs, gram, - hapto, HNMR, Helmholtz, hydrogen, - insitu, invacuo, iupac, - Ka, Kb, Kw, - Lfi, listofreactions, lqd, - mch, mega, meta, mhName, - NewChemArrow, NewChemBond, NewChemBondAlias, - newchemgreekmapping, NewChemIUPAC, NewChemLatin, - NewChemNMR, NewChemParticle, NewChemPhase, - NewChemReaction, NewChemState, - newman, nitrogen, NMR, Nu, Nuc, - orbital, ortho, ox, OX, oxygen, - para, pch, per, pH, phase, phosphorus, photon, pKa, pKb, pOH, pos, - positron, Pot, prt, - Rad, redox, RenewChemArrow, RenewChemBond, renewchemgreekmapping, - RenewChemIUPAC, RenewChemLatin, RenewChemNMR, RenewChemParticle, - RenewChemPhase, RenewChemState, - Sf, scrm, scrp, second, selectchemgreekmapping, setchemformula, - ShowChemArrow, ShowChemBond, sld, Sod, State, sulfur, - trans, - val - } , - add-silent-cmds = { - addplot, - bottomrule, - cancel, cdot, ce, cee, celsius, centering, chemfig, chemname, clap, - cnsetup, color, cstack, cstsetup, - DeclareInstance, DeclareSIUnit, definecolor, draw, - electronvolt, - footnotesize, - glqq, grqq, - hertz, hspace, - includegraphics, intertext, IUPAC, - joule, - kilo, - latin, lewis, Lewis, liquid, ltn, - metre, midrule, milli, mmHg, mole, - nano, nicefrac, num, numrange, - ominus, oplus, - percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, - renewtagform, rightarrow, - sample, scriptscriptstyle, setatomsep, setbondoffset, sfrac, shorthandoff, - si, SI, sisetup, square, subsection, - textcolor, textendash, textsuperscript, tiny, toprule, - upbeta, upeta, upgamma, usetikzlibrary, - volt, vphantom, vspave, - xspace, - z@, z@skip - } -} - -\usepackage{chemfig,booktabs,cancel,varioref} -\usepackage[version=3]{mhchem} - -% \usepackage{fontspec} -% \usepackage[oldstyle,proportional]{libertine} -\expandafter\def\csname libertine@figurestyle\endcsname{LF} -\usepackage[libertine]{newtxmath} -\expandafter\def\csname libertine@figurestyle\endcsname{OsF} - -% \usepackage{libertinehologopatch} -% \setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono} - -% \usepackage{selnolig} - -\usepackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\usepackage[accsupp]{acro} -\acsetup{ - long-format = \scshape , - short-format = \scshape -} -\DeclareAcronym{ghs}{ - short = ghs , - long = Globally Harmonized System of Classification and Labelling of - Chemicals , - pdfstring = GHS , - accsupp = GHS -} -\DeclareAcronym{eu}{ - short = EU , - long = European Union , - pdfstring = EU , - accsupp = EU -} -\DeclareAcronym{iupac}{ - short = iupac , - long = International Union of Pure and Applied Chemistry , - pdfstring = IUPAC , - accsupp = IUPAC -} -\DeclareAcronym{UN}{ - short = un , - long = United Nations , - pdfstring = UN , - accsupp = UN -} -\DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - pdfstring = DVI , - accsupp = DVO -} -\DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - pdfstring = PDF , - accsupp = PDF -} - -\chemsetup{ - option/synchronize , - chemformula/format = \libertineLF -} -% \colorlet{chemformula}{black!90} - -\sisetup{ - detect-mode=false, - mode=text, - text-rm=\libertineLF -} - -\usepackage{filecontents} - -\defbibheading{bibliography}{\addsec{References}} -\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\"om and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and - Franco Pavese and Martin Quack and J\"urgen Stohner and Herbert L. Strauss and - Michio Takami and Anders J Thor} , - title = {``Quantities, Symbols and Units in Physical Chemistry'', \acs{iupac} - Green Book} , - sorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - indexsorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - edition = {3rd Edition. 2nd Printing} , - year = {2008} , - publisher = {\acs{iupac} \&\ RSC Publishing, Cambridge} -} -@book{iupac:redbook, - author = {Neil G. Connelly and Ture Damhus and Richard M. Hartshorn and - Alan T. Hutton} , - title = {``Nomenclature of Inorganic Chemistry'', \acs{iupac} Red Book} , - sorttitle = {Nomenclature of Inorganic Chemistry} , - indexsorttitle = {Nomenclature of Inorganic Chemistry} , - year = {2005} , - publisher = { \acs{iupac} \&\ RSC Publishing, Cambridge} , - isbn = {0-85404-438-8} -} -@misc{eu:ghsystem_regulation, - author = {{The European Parliament and The Council of the European Union}}, - title = {Regulation (EC) No 1272/2008 of the European Parliament and of - the Council} , - subtitle = {on classification, labelling and packaging of substances and - mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and - amending Regulation (EC) No 1907/2006} , - 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} - { - scale-factor = 1 , - denominator-bot-sep = -.2ex , - denominator-format = \scriptsize #1 , - numerator-top-sep = -.2ex , - numerator-format = \scriptsize #1 , - slash-right-kern = .05em , - slash-left-kern = .05em - } - -\usetikzlibrary{calc,positioning,decorations.pathmorphing,patterns} - -\newpackagename\chemmacros{chemmacros} -% \newpackagename\chemformula{chemformula} -\newpackagename\ghsystem{ghsystem} -\newpackagename\chemgreek{chemgreek} - - -\newidxcmd\manual{\textsf{#1}}[\ (manual)] -\newidxcmd\arrowtype{\code{#1}}[\ (arrow type)] - -\makeatletter -\newcommand*\cf@arrow{% - \@ifstar - {\cf@arrow@star} - {\cf@arrow@nostar}% -} -\newrobustcmd*\cf@arrow@star[1]{% - \@ifnextchar[ - {\cf@arrow@star@opt{#1}} - {\cf@arrow@star@opt{#1}[]}% -} -\newrobustcmd*\cf@arrow@nostar[1]{% - \@ifnextchar[ - {\cf@arrow@nostar@opt{#1}} - {\cf@arrow@nostar@opt{#1}[]}% -} -\def\cf@arrow@star@opt#1[#2]{% - \ifblank{#2} - {\item\arrowtype*{#1}} - {\item\arrowtype*{#1}#2}% - \cnltx@checkdefault{\hfill\newline}% -} -\def\cf@arrow@nostar@opt#1[#2]{% - \ifblank{#2} - {\item\arrowtype{#1}} - {\item\arrowtype{#1}#2}% - \cnltx@checkdefault{\hfill\newline}% -} - -\newenvironment{codedesc} - {% - \def\Code##1{\item\code{##1}\hfill\newline}% - \cnltxlist - } - {\endcnltxlist} - -\newenvironment{arrows} - {% - \let\arrow\cf@arrow - \cnltxlist - } - {\endcnltxlist} -\makeatother - -\renewcommand*\AmS{\hologo{AmS}} - -\newcommand*\TikZ{Ti\textit{k}Z} - -\newname\hensel{Martin Hensel} - -\BeforeBeginEnvironment{example}{\vspace{\baselineskip}} -\AfterEndEnvironment{example}{\vspace{\baselineskip}} -\BeforeBeginEnvironment{sourcecode}{\vspace{\baselineskip}} -\AfterEndEnvironment{sourcecode}{\vspace{\baselineskip}} - -\begin{document} - -\section{Introduction} -Probably every chemist using \LaTeXe\ is aware of the great \pkg{mhchem} -package by \hensel. There have always been some difficulties intertwining it -with \chemmacros, though. Also, some other minor points in \pkg{mhchem} -always bothered me, but they hardly seemed enough for a new package. They -weren't even enough for a feature request to the \pkg{mhchem} author. The -challenge and the fun of creating a new package and the wish for a highly -customizable alternative led to \chemformula\ after all. - -\chemformula\ works very similar to \pkg{mhchem} but is more strict as to how -compounds, stoichiometric factors and arrows are input. In the same time -\chemformula\ offers \emph{many} possibilities to customize the output. - -\section{News} -\subsection{Version 4.0} -Since version 4.0\sinceversion{4.0}, the \chemformula\ package can be used -independently from \chemmacros. This means that if you say -\begin{sourcecode} - \usepackage{chemformula} -\end{sourcecode} -then \chemmacros\ will not be loaded. The \chemmacros\ package, however, -\emph{will} load \chemformula. - -\subsection{Version 4.2} -\begin{itemize} - \item New option \option{arrow-style}. - \item New command \cs{chlewis} that allows to add Lewis electrons to an - atom, see section~\ref{sec:lewis-formulae}. -\end{itemize} - -\subsection{Version 4.3} -\begin{itemize} - \item New option \option{stoich-print}. - \item New command \cs{chstoich}. - \item The commands \cs*{DeclareChem\meta{...}} now don't give an error any - more if the command already exists. This is more consistent with \LaTeX's - \cs*{DeclareRobustCommand}. For all those commands a version - \cs*{NewChem\meta{...}} is introduced that \emph{does} give an error if - the new command is already defined. -\end{itemize} - -\subsection{Version 4.4} -\begin{itemize} - \item A single dash \code{-} in \cs{ch} is now treated as a minus sign. - This is consistent with the behaviour of a \code{+}. -\end{itemize} - -\subsection{Version 4.5} -\begin{itemize} - \item New arrow types \arrowtype{>=<}, \arrowtype{>=<<}, \arrowtype{>>=<} - and \arrowtype{<==>}. - \item Internal changes to \cs{ch} allow usage of optional arguments of - \cs*{\textbackslash} and \cs*{label} in \chemmacros' \env*{reactions} - environment. -\end{itemize} - -\subsection{Version 4.6} -\begin{itemize} - \item New options \option{circled} and \option{circletype}. this allows to - set the behaviour as described on \chemmacros' manual for a specific usage - of \cs{ch}. -\end{itemize} - -\subsection{Version 4.7} -\begin{itemize} - \item Dependency change: \chemformula{} now requires the \TikZ{} library - \code{arrows.meta} instead of the library \code{arrows}. This requires - \TikZ{} version~3.0.0. -\end{itemize} - -\section{Licence and Requirements} -\license - -The \chemformula\ package needs and thus loads the packages -\bnd{l3kernel}~\cite{bnd:l3kernel}, \pkg{xparse}, \pkg{l3keys2e} and -\pkg{xfrac} (all three are part of the \bnd{l3packages} -bundle~\cite{bnd:l3packages}), -\pkg{tikz}\footnote{\CTANurl[graphics]{pgf}}~\cite{pkg:pgf}, -\pkg{amsmath}~\cite{pkg:amsmath}, \pkg{nicefrac}~\cite{pkg:nicefrac} and -\pkg{scrlfile} (from the \KOMAScript\footnote{\CTANurl{koma-script}} -bundle~\cite{bnd:koma-script}). - -\section{Setup} -All of \chemformula's options belong to \chemmacros' module -\module{chemformula}. This means they can be setup with -\begin{commands} - \command{chemsetup}[\Oarg{chemformula}\marg{options}] - Set up options for \chemformula\ exclusively, or - \command{chemsetup}[\Marg{chemformula/\meta{option1},chemformula/\meta{option2}}] - Set up options for \chemformula\ together with others of \chemmacros' - options. -\end{commands} -However, if you're using \chemformula\ as a standalone package the command -\cs{chemsetup} is not available. This is why \chemformula\ also has its own -setup command: -\begin{commands} - \command{setchemformula}[\marg{options}] - Set up \chemformula\ when using it independently from \chemmacros. -\end{commands} - -\section{The Basic Principle} -\chemformula\ offers one main command. -\begin{commands} - \command{ch}[\oarg{options}\marg{input}] - \chemformula's main command. -\end{commands} -The usage will seem very familiar to you if you're familiar with \pkg{mhchem}: -\begin{example}[side-by-side] - \ch{H2O} \par - \ch{Sb2O3} \par - \ch{H+} \par - \ch{CrO4^2-} \par - \ch{AgCl2-} \par - \ch{[AgCl2]-} \par - \ch{Y^{99}+} \par - \ch{Y^{99+}} \par - \ch{H2_{(aq)}} \par - \ch{NO3-} \par - \ch{(NH4)2S} \par - \ch{^{227}_{90}Th+} \par - $V_{\ch{H2O}}$ \par - \ch{Ce^{IV}} \par - \ch{KCr(SO4)2 * 12 H2O} -\end{example} - -However, there are differences. The most notable one: \chemformula\ -distinguishes between different types of input. These different parts -\emph{have} to be separated with blanks: -\begin{commands} - \command{ch}[\Marg{part1 part2 part3 part4}] -\end{commands} -A blank in the input \emph{never} is a blank in the output. This role of the -blank strictly holds and disregarding it can have unexpected results and even -lead to errors. - -Another notable difference: \chemformula\ tries to avoid math mode whenever -possible: -\begin{example}[side-by-side] - \ch{A + B ->[a] C} \par - \ce{A + B ->[a] C} -\end{example} - -This means that \cs{ch}\Marg{2H2O} is recognized as a \emph{single} part, -which in this case is recognized as a compound. -\begin{example}[side-by-side] - \ch{2H2O} \par - \ch{2 H2O} -\end{example} -This also means, that a part cannot contain a blank since this will -automatically divide it into two parts. If you need an extra blank in the -output you need to use \verbcode+~+. However, since commands in most cases -gobble a space after them a input like \cs{ch}\Marg{\cs*{command} ABC} will be -treated as a single part. If you want or need to divide them you need to add -an empty group: \cs{ch}\Marg{\cs*{command}\marg{} ABC}. The different input -types are described in the following sections. - -% TODO: Module überdenken, Beschreibung anpassen -There are some options to customize the output of the \cs{ch} command. They -can either be applied locally using the optional argument or can be set -globally using the setup command. All options of \chemformula\ belong to the -module \module{chemformula} and can be set in different ways: -\begin{commands} - \command{chemsetup}[\Oarg{chemformula}\marg{options}] - when loaded via \chemmacros - \command{chemsetup}[\Marg{chemformula/\meta{options}}] - when loaded via \chemmacros - \command{setchemformula}[\marg{options}] - independent from \chemmacros -\end{commands} - -\section{Stoichiometric Factors} -A stoichiometric factor may only contain of numbers and the signs -\verbcode+.,_/()+ -\begin{example}[side-by-side] - \ch{2} \par - \ch{12} - - % decimals: - \ch{.5} \par - \ch{5,75} - - % fractions: - \ch{3/2} \par - \ch{1_1/2} - - % ``iupac'': - \ch{(1/2)} -\end{example} - -As you can see if you input decimal numbers a missing leading zero is added. - -You have to be a little bit careful with the right syntax but I believe it is -rather intuitive. -\begin{sourcecode} - this won't work but will result in an error: \ch{1/1_1} -\end{sourcecode} - -If stoichiometric factors are enclosed with parentheses the fractions are not -recognized and missing leading zeros are not added. What's inside the -parentheses is typeset as is. -\begin{example} - \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} -\end{example} -You can find many examples like the following for stoichiometric factors in -parentheses in the \acs{iupac} Green Book~\cite{iupac:greenbook}: -\begin{reaction*} - (1/5) K "\ox*{7,Mn}" O4 + (8/5) HCl == (1/5) "\ox*{2,Mn}" Cl2 + (1/2) Cl2 + (1/5) KCl + (4/5) H2O -\end{reaction*} - -There are a few possibilities to customize the output. -\begin{options} - \keyval{decimal-marker}{marker}\Default{.} - The symbol to indicate the decimal. - \keychoice{frac-style}{math,xfrac,nicefrac}\Default{math} - Determines how fractions are displayed. - \keyval{frac-math-cmd}{command sequence}\Default{\cs*{frac}} - \sinceversion{4.1}Allows you to choose which command is used with - \keyis{frac-style}{math}. This needs to be a command sequence that takes - two arguments that are set in math mode. - \keyval{stoich-space}{skip}\Default{.1667em plus .0333em minus .0117em} - The space that is placed after the stoichiometric factor. A rubber - length. - \keybool{stoich-paren-parse}\Default{false} - If set to true stoichiometric factors enclosed by parentheses also are - parsed. - \keyval{stoich-print}{cs}\Default{\cs{chstoich}} - This option allows to redefine the macro that prints the stoichiometric - factors. \meta{cs} should be a macro that takes one mandatory argument. - \emph{Please note that using this option will disable \chemformula's - stoichiometric parsing as that is done by the default command - \cs{chstoich}.} -\end{options} - -\begin{example} - \ch[decimal-marker={,}]{3.5} \ch[decimal-marker={$\cdot$}]{3,5} -\end{example} - -The option \keyis{frac-style}{xfrac} uses the \verbcode+\sfrac+ command of the -\pkg{xfrac} package. The output strongly depends on the font you use. -\begin{example} - \ch[frac-style=xfrac]{3/2} \ch[frac-style=xfrac]{1_1/2} -\end{example} -\chemformula\ defines the instance \verbcode=formula-text-frac= which you can -redefine to your needs. See the \pkg{xfrac} documentation for further -information. The default definition is this: -\begin{sourcecode} - \DeclareInstance{xfrac}{chemformula-text-frac}{text} - { - slash-left-kern = -.15em , - slash-right-kern = -.15em - } -\end{sourcecode} -This document uses the font Linux Libertine~O and the following definition: -\begin{sourcecode} - \DeclareInstance{xfrac}{chemformula-text-frac}{text} - { - scale-factor = 1 , - denominator-bot-sep = -.2ex , - denominator-format = \scriptsize #1 , - numerator-top-sep = -.2ex , - numerator-format = \scriptsize #1 , - slash-right-kern = .05em , - slash-left-kern = .05em - } -\end{sourcecode} - -The option \keyis{frac-style}{nicefrac} uses the \verbcode+\nicefrac+ command -of the \pkg{nicefrac} package. -\begin{example} - \ch[frac-style=nicefrac]{3/2} \ch[frac-style=nicefrac]{1_1/2} -\end{example} - -The option \option{stoich-space} allows you to customize the space between -stoichiometric factor and the group following after it. -\begin{example}[side-by-side] - \ch{2 H2O} \par - \ch[stoich-space=.3em]{2 H2O} -\end{example} - -\section{Compounds}\label{ssec:compounds} -\chemformula\ determines compounds as the type that ``doesn't fit in anywhere -else.'' This point will become more clear when you know what the other types -are. -\begin{example}[side-by-side] - \ch{H2SO4} \par - \ch{[Cu(NH3)4]^2+} -\end{example} - -\subsection{Adducts} -\chemformula\ has two identifiers which will create adducts. -\begin{commands} - \command{ch}[\Marg{A.B}] \ch{A.B} - \command{ch}[\Marg{A*B}] \ch{A*B} -\end{commands} -\begin{example}[side-by-side] - \ch{CaSO4.H2O} \par - \ch{CaSO4*H2O} -\end{example} -Since numbers in a compound always are treated as subscripts (see -section~\ref{ssec:subscripts}) you sometimes need to introduce stoichiometric -factors for the right output: -\begin{example}[side-by-side] - \ch{Na3PO4*12H2O} \par - \ch{Na3PO4* 12 H2O} \par - \ch{Na3PO4 * 12 H2O} -\end{example} - -\subsection{Subscripts}\label{ssec:subscripts} -\emph{All} numbers in a compound are treated as subscripts. -\begin{example}[side-by-side] - \ch{H2SO4} -\end{example} -If you want a letter to be a subscript you can use the math syntax: -\begin{example}[side-by-side] - \ch{A_nB_m} -\end{example} -The subscript recognizes groups. You can also use math inside it. -\begin{example}[side-by-side] - \ch{A_{$n$}B_{$m$}} \par - \ch{NaCl_{(aq)}} -\end{example} - -\subsection{Commands} -Commands are allowed in a compound: -\begin{example}[side-by-side] - \ch{\textbf{A2}B3} \ch{A2\color{red}B3} -\end{example} - -However, if the commands demand numbers as argument, \eg, space commands or -\chemmacros' \verbcode+\ox+ command the direct use will fail. This is -because the numbers are treated as subscripts \emph{before} the command -expands. -\begin{sourcecode} - \ch{A\hspace{2mm}B} will raise an error because \hspace sees something like - this: \hspace{$_2$mm}. Actually not at all like it but equally bad\ldots -\end{sourcecode} -See section~\ref{ssec:text} for a way around this. - -\subsection{Charges and Other Superscripts} -\paragraph{Basics} -If a compound \emph{ends} with a plus or minus sign it will be treated as -charge sign and typeset as superscript. In other places a plus is treated as -a triple bond and a dash will be used as a single bond, see -section~\ref{ssec:bonds}. -\begin{example}[side-by-side] - \ch{A+B} \ch{AB+} \par - \ch{A-B} \ch{AB-} -\end{example} - -For longer charge groups or other superscripts you can use the math syntax. -It recognizes groups and you can use math inside them. Inside these groups -neither \code{+} nor \code{-} are treated as bonds. If a dot \code{.} is -inside a superscript it is treated as indicator for a radical. A \code{*} -gives the excited state. -\begin{example}[side-by-side] - \ch{A^{x-}} \par - \ch{A^x-} \par - \ch{A^{x}-} \par - \ch{A^{$x-$}} \par - \ch{RNO2^{-.}} \par - \ch{^31H} \par - \ch{^{14}6C} \par - \ch{^{58}_{26}Fe} \par - \ch{NO^*} -\end{example} - -Actually\changedversion{4.5a} a dot \code{.} is not always treated as -indicator for a radical: if the dot in the superscript is followed by a number -it is interpreted as a decimal sign. It is typeset according to the option -\option{decimal-marker}. This may be a good place to mention that a comma -\code{,} in a superscript is also typeset according to -\option{decimal-marker}. - -\begin{example}[side-by-side] - \ch{^{22,98}_{11}Na} - \ch{^{22.98}_{11}Na}\par - \setchemformula{decimal-marker={,}} - \ch{^{22,98}_{11}Na} - \ch{^{22.98}_{11}Na} -\end{example} - -Ions and ion composites with more than one charge can be typeset quite as -easy: -\begin{example}[side-by-side] - \ch{SO4^2-} \ch{Ca^2+ SO4^2-} -\end{example} - -\paragraph{Charge Commands} -You don't need to use \cs{mch} and related commands inside \cs{ch}. Indeed, -you \emph{shouldn't} use them as they might mess with the subscript and -superscript alignment. The \chemmacros\ option \code{circled} is obeyed by -\cs{ch}. -\begin{example} - \chemsetup[option]{circled=all} - \ch{H+ + OH- <=> H2O} -\end{example} - -\chemformula{} knows the options \option{circled} and \option{circletype} also -on its own: - -There are coupled with \chemmacros{} options, \ie, setting \chemmacros' -options will also set \chemformula's equivalents. The other way around the -options act independently: setting \chemformula's options will \emph{not} set -\chemmacros' options. -\begin{options} - \keychoice{circled}{formal,\default{all},none}\Default{formal} - \chemformula\ uses two different kinds of charges which indicate the usage - of real ($+/-$) and formal (\fplus/\fminus) charges. The choice - \code{formal} distinguishes between them, choice \code{none} displays them - all without circle, choice \code{all} circles all. - % circletype - \keychoice{circletype}{\default{chem},math}\Default{chem} - This option switches between two kinds of circled charge symbols: - \cs{fplus} \fplus\ and \verbcode+$\oplus$+ $\oplus$. -\end{options} - -\paragraph{Behaviour} -The supercripts behave differently depending on their position in a compound, -if there are super- and subscripts following each other directly. -\begin{example} - \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \par - \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} - \ch{B^{23}} \ch{B_{123}^{23}} \par - \ch{^{123}_{23}B} \ch{{}^{123}_{23}B} \ch{_{23}^{123}B} - \ch{B^{123}} \ch{B23^{123}} -\end{example} -\begin{itemize} - \item If a compound \emph{starts} with a sub- or superscript both sub- and - superscript are aligned to the \emph{right} else to the \emph{left}. - \item If a compound \emph{does not start} with a sub- or superscript and - there is both a sub- and a superscript, the superscript is shifted - additionally by a length determined from the option - \key{charge-hshift}{dim}, also see page~\pageref{desc:charge-hshift}f. -\end{itemize} -The second point follows \ac{iupac}'s recommendations: -\begin{cnltxquote}[{\acs{iupac} Green Book {\cite[][p.\,51]{iupac:greenbook}}}] - In writing the formula for a complex ion, spacing for charge number can be - added (staggered arrangement), as well as parentheses: - \ch[charge-hshift=full]{SO4^2-}, \ch{(SO4)^2-}. The staggered arrangement - is now recommended. -\end{cnltxquote} - -\subsection{Bonds}\label{ssec:bonds} -\subsubsection{Native Bonds} -There are three kinds of what I will call ``native bonds'': -\begin{example}[side-by-side] - single: \ch{CH3-CH3} \par - double: \ch{CH2=CH2} \par - triple: \ch{CH+CH} -\end{example} - -\subsubsection{Flexible Bonds} -\paragraph{Predefined Bonds} -In addition to the three native bonds there are a few more which can be called -by -\begin{commands} - \command{bond}[\marg{bond name}] - Prints the bond type specified by \meta{bond name}. -\end{commands} -The predefined bond types are shown in table~\vref{tab:bond_types}. - -\begin{table} - \centering - \caption{Bonds available with \cs*{bond}.} - \label{tab:bond_types} - \begin{tabular}{lcl} - \toprule - \bfseries name & \bfseries appearance & \bfseries aliases \\ - \midrule - \code{single} & \bond{single} & \code{normal}, \code{sb} \\ - \code{double} & \bond{double} & \code{db} \\ - \code{triple} & \bond{triple} & \code{tp} \\ - \code{dotted} & \bond{dotted} & \code{semisingle} \\ - \code{deloc} & \bond{deloc} & \code{semidouble} \\ - \code{tdeloc} & \bond{tdeloc} & \code{semitriple} \\ - \code{co>} & \bond{co>} & \code{coordright} \\ - \code{<co} & \bond{<co} & \code{coordleft} \\ - \bottomrule - \end{tabular} -\end{table} - -\begin{example} - \ch{C\bond{sb}C\bond{db}C\bond{tp}C\bond{deloc}C\bond{tdeloc}C\bond{co>}C\bond{<co}C} -\end{example} - -\paragraph{Own Bonds} -\chemformula\ offers commands to define own bond types: -\begin{commands} - \command{NewChemBond}[\marg{name}\marg{code}] - \sinceversion{4.3}Define the new bond type \meta{name}. Issue an error if - a bond \meta{name} already exists. - \command{DeclareChemBond}[\marg{name}\marg{code}] - Define the new bond type \meta{name} or overwrite it if it already - exists. - \command{RenewChemBond}[\marg{name}\marg{code}] - Redefine the existing bond type \meta{name}. Issue an error if a bond - \meta{name} doesn't exist. - \command{NewChemBondAlias}[\marg{new name}\marg{old name}] - \sinceversion{4.3}Declare the bond type \meta{new name} to be an alias of - \meta{old name}. Issue an error if a bond \meta{new name} already - exists. - \command{DeclareChemBondAlias}[\marg{new name}\marg{old name}] - Declare the bond type \meta{new name} to be an alias of \meta{old name}. - \command{ShowChemBond}[\marg{name}] - Print the definition of bond type \meta{name}. -\end{commands} -The usage is best described with an example. So let's see how the -\code{single} bond and the \code{co>} bond are defined: -\begin{sourcecode} - \NewChemBond{single} - { \draw[chembond] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \NewChemBond{coordright} - { - \draw[chembond,butt cap->] - (chemformula-bond-start) -- (chemformula-bond-end) ; - } - \NewChemBondAlias{co>}{coordright} -\end{sourcecode} -Two points are important: the names of the starting and the ending -coordinates, \code{chemformula-bond-start} and \code{chemformula-bond-end}, -and the \TikZ\ style of the bonds \code{chembond}. - -So, let's say you want to define a special kind of dashed bond. You could do -this: -\begin{example} - \usetikzlibrary{decorations.pathreplacing} - \makeatletter - \NewChemBond{dashed} - { - \draw[ - chembond, - decorate, - decoration={ - ticks, - segment length=\chemformula@bondlength/10,amplitude=1.5pt - }] - (chemformula-bond-start) -- (chemformula-bond-end) ; - } - \makeatother - \chemsetup[chemformula]{bond-length=2ex} - \ch{C\bond{dashed}C} -\end{example} - -The last example showed you another macro: \verbcode+\chemformula@bondlength+. -It only exists so you can use it to access the bond length as set with -\option{bond-length} directly. - -\subsection{Customization}\label{ssec:compounds:customization} -These options allow you to customize the ouptut of the compounds: -\begin{options} - \keyval{subscript-vshift}{dim}\Default{0pt} - Extra vertical shift of the subscripts. - \keychoice{subscript-style}{text,math}\Default{text} - Style that is used to typeset the subscripts. - \keyval{charge-hshift}{dim}\Default{.25em} - Shift of superscripts when following a subscript.\label{desc:charge-hshift} - \keyval{charge-vshift}{dim}\Default{0pt} - Extra vertical shift of the superscripts. - \keychoice{charge-style}{text,math}\Default{text} - Style that is used to typeset the superscripts. - \keychoice{circled}{formal,\default{all},none}\Default{formal} - \sinceversion{4.6}Like \chemmacros' package option but local to - \chemformula's \cs{ch}. That is: since \chemmacros' macros use - \chemformula's mechanism this is effectively an alias. - \keychoice{circletype}{\default{chem},math}\Default{chem} - \sinceversion{4.6}Like \chemmacros' package option but local to - \chemformula's \cs{ch}. That is: since \chemmacros' macros use - \chemformula's mechanism this is effectively an alias. - \keyval{adduct-space}{dim}\Default{.1333em} - Space to the left and the right of the adduct point. - \keyval{bond-length}{dim}\Default{.5833em} - The length of the bonds. - \keyval{bond-offset}{dim}\Default{.07em} - Space between bond and atoms. - \keyval{bond-style}{\TikZ}\Default - \TikZ\ options for the bonds. - \keyval{bond-penalty}{num}\Default{10000} - \sinceversion{4.0a}The penalty that is inserted after a bond for - (dis-)allowing line breaks. - \keyval{radical-style}{\TikZ}\Default - \TikZ\ options for the radical point. - \keyval{radical-radius}{dim}\Default{.2ex} - The radius of the radical point. - \keyval{radical-hshift}{dim}\Default{.15em} - Horizontal shift before the radical point is drawn. - \keyval{radical-vshift}{dim}\Default{.5ex} - Vertical shift relative to the current baseline. - \keyval{radical-space}{dim}\Default{.15em} - Horizontal shift after the radical point is drawn. -\end{options} - -Maybe you have noticed that charges of certain ions are shifted to the -right. -\begin{example}[side-by-side] - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{example} -They are shifted if they \emph{follow} a subscript which follows \ac{iupac} -recommendations~\cite[][p.\,51]{iupac:greenbook}. The amount of the shift can -be set with the option \option{charge-hshift}. -\begin{example} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \par - \chemsetup[chemformula]{charge-hshift=.5ex} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \par - \chemsetup[chemformula]{charge-hshift=.5pt} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{example} - -Despite \ac{iupac}'s recommendation \chemformula\ does not make fully staggered -arrangements in the default setting as I find it hard to read in some cases -and ugly in others. Since this is a subjective decision \chemformula\ not only -let's you define the absolute amount of the shift but also provides a -possibility for full staggered arrangements. For this you have to use -\keyis{charge-hshift}{full}. -\begin{example} - \ch[charge-hshift=0pt]{C5H11+} \ch[charge-hshift=0pt]{SO4^2-} \par - \ch{C5H11+} \ch{SO4^2-} \par - \ch[charge-hshift=1ex]{C5H11+} \ch[charge-hshift=1ex]{SO4^2-} \par - \ch[charge-hshift=full]{C5H11+} \ch[charge-hshift=full]{SO4^2-} -\end{example} - -If you don't want the charges to be typeset in text mode you can switch to -math mode: -\begin{example} - \ch{M^x+} \ch{SO4^2-} \par - \chemsetup[chemformula]{charge-style = math} - \ch{M^x+} \ch{SO4^2-} -\end{example} - -The option \option{subscript-vshift} can be used to adjust the vertical shift -of the subscripts: -\begin{example} - \ch{H2SO4} \ch{Na3PO4} \par - \chemsetup[chemformula]{subscript-vshift=.5ex} - \ch{H2SO4} \ch{Na3PO4} \par - \chemsetup[chemformula]{subscript-vshift=-.2ex} - \ch{H2SO4} \ch{Na3PO4} -\end{example} - -You can choose the mode subscripts are typeset in the same way as it is -possible for the charges: -\begin{example} - \ch{A_nB_m} \ch{H2SO4} \par - \chemsetup[chemformula]{subscript-style = math} - \ch{A_nB_m} \ch{H2SO4} -\end{example} - -The option \option{adduct-space} sets the space left and right to the adduct -symbol $\cdot$. -\begin{example} - \ch{Na3PO3*H2O} \par - \chemsetup[chemformula]{adduct-space=.2em} - \ch{Na3PO3*H2O} -\end{example} - -Changing the length of the bonds: -\begin{example} - \chemsetup[chemformula]{bond-length=4mm}% - single: \ch{CH3-CH3} \par - double: \ch{CH2=CH2} \par - triple: \ch{CH+CH} -\end{example} - -You can change the distance between bond and atom, too: -\begin{example} - \ch{H-H + N+N + O=O} \par - \ch[bond-offset=1pt]{H-H + N+N + O=O} -\end{example} - -\subsection{Standalone Formulae} -\chemformula\sinceversion{4.0} offers a command that \emph{only accepts} the -\enquote{compound} input type: -\begin{commands} - \command{chcpd}[\oarg{options}\marg{compound}] - Typeset single compounds. -\end{commands} - -\section{Special Input Types} -There are some \enquote{special type} input groups. - -\subsection{Single Token Groups} -The first kind are groups which consist of only one token, namely of the -following ones: -\begin{commands} - \command{ch}[\Marg{ + } \ch{ + }] - Creates the plus sign between compounds with space around it:\\ - \cs{ch}\Marg{2 Na + Cl2} \ch{2 Na + Cl2} - \command{ch}[\Marg{ - } \ch{ - }] - \sinceversion{4.3a}Creates the minus sign between compounds with space - around it:\\ - \cs{ch}\Marg{M - H} \ch{M - H} - \command{ch}[\Marg{ v } \ch{ v }] - Sign for precipitate: \cs{ch}\Marg{BaSO4 v} \ch{BaSO4 v} - \command{ch}[\Marg{ \textasciicircum\ } \ch{ ^ }] - Sign for escaping gas\footnotemark: \cs{ch}\Marg{H2 \textasciicircum} - \ch{H2 ^} -\end{commands} -\footnotetext{Is this the correct English term? Please correct me if it isn't.} - -The space left and right of the plus and the minus sign can be set with this -option: -\begin{options} - \keyval{plus-space}{skip}\Default{.3em plus .1em minus .1em} - A rubber length. - \keyval{plus-penalty}{num}\Default{700} - \sinceversion{4.0a}The penalty that is inserted after the plus and the - minus sign for (dis-)allowing line breaks. -\end{options} -\begin{example}[side-by-side] - \ch{A + B}\par - \ch[plus-space=4pt]{A + B} -\end{example} - -\subsection{Option Input} -Sometimes you might want to apply an option only to a part of a, say, -reaction. Of course you have the possibility to use \cs{ch} several times. -\begin{example} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \par - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} -\end{example} -This, however, interrupts the input in your source and \emph{may} mess with -the spacing. That's why there is an alternative: -\begin{commands} - \command{ch}[\Marg{ @\marg{options} }] - The options specified this way will be valid \emph{only} until the next - compound is set. -\end{commands} -\begin{example} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \par - \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \par - or of course:\par - \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\par\bigskip - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \par - \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} -\end{example} - -\section{Escaped Input} -In some cases it may be desirable to prevent \chemformula\ from parsing the -input. This can be done in two ways. - -\subsection{Text}\label{ssec:text} -If you put something between \verbcode+" "+ or \verbcode+' '+ then the input -will be treated as normal text, except that spaces are not allowed and have to -be input with \verbcode+~+. -\begin{commands} - \command{ch}[\Marg{ "\meta{escaped text}" }] - One of two possibilities to \emph{escape} \chemformula's parsing. - \command{ch}[\Marg{ '\meta{escaped text}' }] - The second of two possibilities to \emph{escape} \chemformula's parsing. -\end{commands} -\begin{example} - \ch{"\ox{2,Ca}" O} \par - \ch{"\ldots\," Na + "\ldots\," Cl2 -> "\ldots\," NaCl} \par - \ch{'A~->~B'} -\end{example} -In many cases you won't need to escape the input. But when you get into -trouble when using a command inside \cs{ch} try hiding it. - -\subsection{Math} -If you especially want to input math you just enclose it with \verbcode+$ $+. -This output is different from the escaped text as it is followed by a space. -The reasoning behind this is that I assume math will mostly be used to replace -stoichiometric factors. -\begin{commands} - \command{ch}[\Marg{ \string$\meta{escaped math}\string$ }] - One of two possibilities to \emph{escape} \chemformula's parsing into math - mode. - \command{ch}[\Marg{ \string\(\meta{escaped math}\string\) }] - The second of two possibilities to \emph{escape} \chemformula's parsing - into math mode. -\end{commands} -\begin{example}[side-by-side] - escaped text: \ch{"$x$" H2O} \par - escaped math: \ch{$x$ H2O} \par - also escaped math: \ch{\(x\) H2O} \par - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} -\end{example} - -The space that is inserted after a math group can be edited: -\begin{options} - \keyval{math-space}{skip}\Default{.1667em plus .0333em minus .0117em} - A rubber length. -\end{options} -\begin{example} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \par - \chemsetup[chemformula]{math-space=.25em} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \par - \ch{$A->B$} -\end{example} - -\section{Arrows}\label{sec:arrows} -\subsection{Arrow types} -Arrows are input in the same intuitive way they are with \pkg{mhchem}. -There are various different types: -\begin{arrows} - \arrow{->}[ \charrow{->}] - standard right arrow - \arrow{<-}[ \charrow{<-}] - standard left arrow - \arrow{-/>}[ \charrow{-/>}] - does not react (right) - \arrow{</-}[ \charrow{</-}] - does not react (left) - \arrow{<->}[ \charrow{<->}] - resonance arrow - \arrow{<>}[ \charrow{<>}] - reaction in both directions - \arrow{==}[ \charrow{==}] - stoichiometric equation - \arrow{<=>}[ \charrow{<=>}] - equilibrium arrow - \arrow{>=<}[ \charrow{>=<}] - reversed equilibrium arrow - \arrow{<=>>}[ \charrow{<=>>}] - unbalanced equilibrium arrow to the right - \arrow{>=<<}[ \charrow{>=<<}] - reversed unbalanced equilibrium arrow to the right - \arrow{<<=>}[ \charrow{<<=>}] - unbalanced equilibrium arrow to the left - \arrow{>>=<}[ \charrow{>>=<}] - reversed unbalanced equilibrium arrow to the left - \arrow{<o>}[ \charrow{<o>}] - isolobal arrow - \arrow{<==>}[ \charrow{<==>}] - I've seen this one used. I'm not sure it actually has a meaning in - chemical equations. If you have some official reference for this arrow - type please feel free to contact me. -\end{arrows} -All these arrows are drawn with \TikZ. -\begin{example} - \ch{H2 + Cl2 -> 2 HCl} \par - \ch{H2O + CO3^2- <=> OH- + HCO3-} \par - \ch{A <- B} \par - \ch{\{[CH2=CH-CH2]- <-> {}[CH2-CH=CH2]- \}} \par - \ch{A <> B} \par - \ch{H+ + OH- <=>> H2O} \par - \ch{2 NO2 <<=> N2O4} -\end{example} - -\subsection{Labels} -The arrows take two optional arguments to label them. -\begin{arrows} - \arrow*{->\oarg{above}\oarg{below}} - Add text above or under an arrow. -\end{arrows} -\begin{example}[side-by-side] - \ch{A ->[a] B} \par - \ch{A ->[a][b] B} \par - \ch{A ->[\SI{100}{\celsius}] B} -\end{example} -The label text can be parsed seperately from the arrow. The recipe is easy: -leave blanks. -\begin{example}[side-by-side] - \ch{A ->[H2O] B} \par - \ch{A ->[ H2O ] B} \par - \ch{A ->[ "\ox{2,Ca}" F2 ] B} \par - \ch{A ->[$\Delta$,~ \[H+ \]] B} -\end{example} -% TODO: correct info about [] - -If you leave the blanks \chemformula\ treats the groups inside the square -brackets as seperated input types. The arrow reads its arguments -\emph{afterwards}. As you can see the arrows \enquote{grow} with the length -of the labels. What stays constant is the part that protrudes the labels. As -you also can see in the last example square brackets inside the arrow -arguments can be produced using \cs*{[} and \cs*{]}. They keep their usual -meaning outside \cs{ch}. These commands were necessary since the usual -grouping (\ie, hiding the brackets inside curly brackets) didn't work due to -the way \cs{ch} read its argument. This is no longer true but meanwhile -\cs*{[} and \cs*{]} are kept for backwards compatibility. -\begin{example} - \ch{A ->[a] B} \par - \ch{A ->[ab] B} \par - \ch{A ->[abc] B} \par - \ch{A ->[abc~abc] B} \par - % needs the `chemfig' package: - \setatomsep{15pt} - \ch{A ->[ "\chemfig{-[:30]-[:-30]OH}" ] B} \par - \ch{A ->[[]] B} vs. \ch{A ->[\[\]] B} -\end{example} - -\subsection{Customization} -These are the options which enable you to customize the arrows: -\begin{options} - \keyval{arrow-offset}{dim}\Default{.75em} - This is the length that an arrow protrudes a label on both sides. This - means an empty arrow's length is two times \code{arrow-offset}. - \keyval{arrow-min-length}{dim}\Default{0pt} - \sinceversion{3.6b}The minimal length an error must have unless two times - \key{arrow-offset} plus the width of the label is larger. - \keyval{arrow-yshift}{dim}\Default{0pt} - Shifts an arrow up (positive value) or down (negative value). - \keyval{arrow-ratio}{<factor>}\Default{.6} - The ratio of the arrow lengths of the unbalanced equilibrium. \code{.4} - would mean that the length of the shorter arrow is $0.4\times$ the length - of the longer arrow. - \keyval{compound-sep}{dim}\Default{.5em} - The space between compounds and the arrows. - \keyval{label-offset}{dim}\Default{2pt} - The space between the labels and the arrows. - \keyval{label-style}{font command}\Default{\cs*{footnotesize}} - The relative font size of the labels. - \keyval{arrow-penalty}{num}\Default{0} - \sinceversion{4.0a}The penalty that is inserted after an arrow for - (dis-)allowing line breaks. - \keyval{arrow-style}{\TikZ}\Default - \sinceversion{4.1a}Additonal \TikZ\ keys for formatting the arrows. -\end{options} - -The following code shows the effect of the different options on the \verbcode+<=>>+ -arrow: -\begin{example} - standard: \ch{A <=>>[x][y] B} \par - longer: \ch[arrow-offset=12pt]{A <=>>[x][y] B} \par - higher: \ch[arrow-yshift=2pt]{A <=>>[x][y] B} \par - more balanced: \ch[arrow-ratio=.8]{A <=>>[x][y] B} \par - labels further away: \ch[label-offset=4pt]{A <=>>[x][y] B} \par - larger distance to compounds: \ch[compound-sep=2ex]{A <=>>[x][y] B} \par - smaller labels: \ch[label-style=\tiny]{A <=>[x][y] B} -\end{example} - -If you want to have different arrow tips\sinceversion{4.7} there is an easy -way to use existing arrow tips (as defined by \TikZ). \chemformula{} uses -three different arrow tips: \code{cf}, \code{left cf} and \code{right cf}. If -you want them to match those of \pkg{chemfig}~\cite{pkg:chemfig} for example -you could do: -\begin{sourcecode} - \pgfkeys{ - cf /.tip = {CF@full} , - left cf /.tip = {CF@half} - } -\end{sourcecode} -\pkg{chemfig} has no equivalent of \code{right cf}. This mechanism relies on -\TikZ{} version~3.0.0 and the new \code{arrows.meta} library. - -\subsection{Modify Arrow Types}\label{sec:arrows_modify} -The arrows are defined with the commands -\begin{commands} - \command{NewChemArrow}[\marg{type}\marg{\TikZ}] - Define the new arrow type \meta{type}. Issue an error if an arrow type - \meta{type} already exists. - \command{DeclareChemArrow}[\marg{type}\marg{\TikZ}] - Define the new arrow type \meta{type} or overwrite it if it already - exists. - \command{RenewChemArrow}[\marg{type}\marg{\TikZ}] - Redefine the arrow type \meta{type}. Issue an error if an arrow type - \meta{type} doesn't exist. - \command{ShowChemArrow}[\marg{type}] - Print out the current definition of the arrow type \meta{type}. -\end{commands} -\meta{type} is the sequence of tokens that is replaced with the actual arrow -code. For example the basic arrow is defined via -\begin{sourcecode} - \NewChemArrow{->}{ - \draw[chemarrow,-cf] (cf_arrow_start) -- (cf_arrow_end) ; - } -\end{sourcecode} -In order to define arrows yourself you need to know the basics of -\TikZ\footnote{Please see the \manual{pgfmanual} for details.}. The -predefined arrows use the arrow tips \code{cf}, \code{left cf} and \code{right - cf}. They also all except the net reaction arrow \code{==} use the -\TikZ-style \code{chemarrow} that you should use, too, if you want the option -\option{arrow-style} to have an effect. - -There are some predefined coordinates you can and should use. For -completeness' sake the arrow tips and the \TikZ-style are also listed: -\begin{codedesc} - \Code{(cf\_arrow\_start)} - The beginning of the arrow. - \Code{(cf\_arrow\_end)} - The end of the arrow. - \Code{(cf\_arrow\_mid)} - The mid of the arrow. - \Code{(cf\_arrow\_mid\_start)} - The beginning of the shorter arrow in types like \verbcode+<=>>+. - \Code{(cf\_arrow\_mid\_end)} - The end of the shorter arrow in types like \verbcode+<=>>+. - \Code{cf} - A double-sided arrow tip. - \Code{left cf} - A left-sided arrow tip. - \Code{right cf} - A right-sided arrow tip. - \Code{chemarrow} - \chemformula's \TikZ-style that is applied to the arrows and set with - \option{arrow-style} -\end{codedesc} -\begin{example} - \NewChemArrow{.>}{ - \draw[chemarrow,-cf,dotted,red] (cf_arrow_start) -- (cf_arrow_end); - } - \NewChemArrow{n>}{ - \draw[chemarrow,-cf] - (cf_arrow_start) - .. controls ([yshift=3ex]cf_arrow_mid) .. - (cf_arrow_end); - } - \ch{A .> B} \ch{A .>[a][b] B} \ch{A n> B} -\end{example} - -\begin{example} - \texttt{\ShowChemArrow{->}} \par - \RenewChemArrow{->}{\draw[chemarrow,->,red] (cf_arrow_start) -- (cf_arrow_end) ;} - \texttt{\ShowChemArrow{->}} \par - \ch{A -> B} -\end{example} - -\subsection{Standalone Arrows} -\chemformula\ offers\sinceversion{4.0} a command that \emph{only accepts} the -\enquote{arrow} input type: -\begin{commands} - \command{charrow}[\marg{type}\oarg{above}\oarg{below}] - Print the arrow type \meta{type}. -\end{commands} -This command is internally used for the arrows, too, when \cs{ch} is parsed. - -\section{Names} -\subsection{Syntax} -\chemformula\ has a built-in syntax to write text under a compound. In a way -it works very similar to the arrows. -\begin{commands} - \command{ch}[\Marg{ !(\meta{text})( \meta{formula} ) }] - Writes \meta{text} below \meta{formula}. -\end{commands} -If an exclamation mark is followed by a pair of parentheses \chemformula\ will -parse it this way: -\begin{example} - \ch{!(ethanol)( CH2CH2OH )} -\end{example} -The same what's true for the arrows arguments holds for these arguments: if -you leave blanks the different parts will be treated according to their input -type before the text is set below the formula. -\begin{example} - \ch{!(water)(H2O)} \quad - \ch{!( "\textcolor{blue}{water}" )( H2O )} \quad - \ch{!( $2n-1$ )( H2O )} \quad - \ch{!( H2O )( H2O )} \quad - \ch{!(oxonium)( H3O+ )} -\end{example} -If for some reason you want to insert an exclamation mark \emph{without} it -creating a name you only have to make sure it isn't followed by parentheses. -\begin{example}[side-by-side] - \ch{H2O~(!)} \par - \ch{A!{}()} -\end{example} - -\subsection{Customization} -\chemformula\ provides two options to customize the output of the names: -\begin{options} - \keyval{name-format}{commands}\Default{\cs*{scriptsize}\cs*{centering}} - The format of the name. This can be arbitrary input. - \keychoice{name-width}{\meta{dim},auto}\Default{auto} - The width of the box where the label is put into. \code{auto} will detect - the width of the name and set the box to this width. -\end{options} -\begin{example} - \ch{!(acid)( H2SO4 ) -> B} \par - \ch[name-format=\sffamily\small]{!(acid)( H2SO4 ) -> B} \par - \ch[name-format=\scriptsize N:~]{!(acid)( H2SO4 ) -> B} \par - \ch[name-width=3em,name-format=\scriptsize\raggedright]{!(acid)( H2SO4 ) -> B} -\end{example} - -\subsection{Standalone Names} -\chemformula\ offers a command\sinceversion{4.0} that allows the usage of the -\enquote{name} syntax in normal text. This is the command that a bang is -replaced with in \chemformula's formulas, actually. Both arguments are -mandatory. -\begin{commands} - \command{chname}[\darg{text~1}\darg{text~2}] - The command that is useed internally for placing \meta{text~1} below of - \meta{text~2}. -\end{commands} - -\section{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{example}[pre-output={\biolinumLF\libertineLF\chemsetup{chemformula/format=}}] - \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"} - } - \sample -\end{example} -\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"} -} - -Now we're going to change different aspects of the font a look what happens: -\begin{example}[pre-output={\biolinumLF\libertineLF\chemsetup{chemformula/format=}}] - \sffamily Hallo \sample \\ - \ttfamily Hallo \sample \normalfont \\ - \bfseries Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{example} -As you can see most features adapt to the surrounding font. - -If you want to change the default format you need to use this option: -\begin{options} - \keyval{format}{anything}\Default - Adds arbitrary code before the output of \cs{ch}. -\end{options} -\begin{example}[pre-output={\biolinumLF\libertineLF\chemsetup{chemformula/format=}}] - \definecolor{newblue}{rgb}{.1,.1,.5} - \chemsetup[chemformula]{format=\color{newblue}\sffamily} - \sffamily Hallo \sample \\ - \ttfamily Hallo \sample \normalfont \\ - \bfseries Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{example} - -You can also specifically change the fontfamily, fontseries and fontshape of -the output. -\begin{options} - \keyval{font-family}{family}\Default - Changes the fontfamily of the output with \cs*{fontfamily}\marg{family}. - \keyval{font-series}{series}\Default - Changes the fontseries of the output with \cs*{fontseries}\marg{series}. - \keyval{font-shape}{shape}\Default - Changes the fontshape of the output with \cs*{fontshape}\marg{shape}. -\end{options} -\begin{example}[pre-output={\biolinumLF\libertineLF\chemsetup{chemformula/format=}}] - \chemsetup[chemformula]{font-series=bx} - Hallo \sample \par - \sffamily Hallo \sample \normalfont \par - \chemsetup[chemformula]{font-family=lmss,font-series=m} Hallo \sample - \normalfont \par - \itshape Hallo \sample -\end{example} - -If you're using \XeLaTeX\ or \LuaLaTeX\ and have loaded \pkg{fontspec} you -have the possibilty to set the font with it: -\begin{options} - \keyval{font-spec}{font}\Default - Use font \meta{font} for \chemformula's formulas. -\end{options} -or with options -\begin{options} - \keychoice{font-spec}{\Marg{[\meta{options}]\meta{font}}} - Use font \meta{font} with options \meta{options} for \chemformula's - formulas. -\end{options} -Since this document is typeset with \pdfLaTeX\ the option cannot be -demonstrated here. - -\section{Usage In Math Equations} -The \cs{ch} command can be used inside math equations. It recognizes -\verbcode+\\+ and \verbcode+&+ and passes them on. However, you can't use the -optional arguments of \verbcode+\\+ inside \cs{ch}. -\begin{example} - \begin{align} - \ch{ - H2O & ->[a] H2SO4 \\ - Cl2 & ->[x][y] CH4 - } - \end{align} - \begin{align*} - \ch{ - RNO2 &<=>[ + e- ] RNO2^{-.} \\ - RNO2^{-.} &<=>[ + e- ] RNO2^2- - } - \end{align*} -\end{example} - -\section{Usage with \TikZ{} or \pkg*{pgfplots} and externalization} -Since \chemformula{} uses\sinceversion{4.1} \TikZ{} to draw reaction arrows -and bonds they would be externalized, too, if you use that facility with -\TikZ{} or \needpackage{pgfplots}~\cite{pkg:pgfplots}. This may not be -desirable since they are very small pictures maybe containing of a single -line. This is why \chemformula's default behaviour is to disable -externalization for it's bonds and arrows. This can be turned on and off -through the following option: -\begin{options} - \keybool{tikz-external-disable}\Default{true} - dis- or enable \TikZ' externalization mechanism for \chemformula's arrows - and bonds. -\end{options} - -If you should be using a formula that contains bonds or arrows inside of a -\code{tikzpicture} that is externalized you should locally enable it for -\chemformula, too: - -\begin{sourcecode} - \begin{tikzpicture} - \setchemformula{tikz-external-disable=false} - \begin{axis}[xlabel={\ch{2 H+ + 2 e- -> H2}}] - \addplot ... ; - \end{axis} - \end{tikzpicture} -\end{sourcecode} - -\section{Lewis Formulae}\label{sec:lewis-formulae} -\chemformula\ offers\sinceversion{4.2} a command to typeset Lewis formulae. -This does not mean Lewis structures! Those can be achieved using the -\pkg{chemfig} package~\cite{pkg:chemfig}. \chemformula\ provides the -possibility to draw electrons as dots and pairs of dots or a line around an -atom. - -\begin{commands} - \command{chlewis}[\oarg{options}\marg{electron spec}\marg{atom}] - Draws electrons around the \meta{atom} according to \meta{electron spec}. -\end{commands} - -Electrons are specified by the angle to the horizontal in the couter-clockwise -direction. The default appearance is a pair of electrons drawn as a pair of -dots. Other specifications can be chosen. The specification follows the -pattern \meta{angle}\meta{separator}. \meta{angle} is a positiv or negativ -integer denoting the angle counter clockwise to the horizontal where the -electrons should be drawn. \meta{separator} is either a dot (\code{.}, single -electron), a colon (\code{:}, electron pair), a vertical line (\code{|}, -electron pair), an o (\code{o}, empty pair), or a comma (\code{,} default -spec). - -\begin{commands} - \command{chlewis}[\Marg{\meta{angle1}\meta{type1}\meta{angle2}\meta{type2}}% - \marg{atom}] - For example: \cs{chlewis}\Marg{0,180}\Marg{O} gives \chlewis{0,180}{O} and - \cs{chlewis}\Marg{0.90.180.270.}\Marg{C} gives - \chlewis{0.90.180.270.}{C}. -\end{commands} - -The appearance can be influenced by a number of options: -\begin{options} - \keychoice{lewis-default}{.,:,|,o,single,pair,pair (dotted),pair - (line),empty}\Default{pair} - Sets the default type that is used when no type is given in \meta{electron - spec}. - \keyval{lewis-distance}{dim}\Default{1ex} - The distance of two electrons in a pair. - \keyval{lewis-line-length}{dim}\Default{1.5ex} - The length of the line representing an electron pair. - \keyval{lewis-line-width}{dim}\Default{1pt} - The thickness of a line representing an electron pair. - \keyval{lewis-offset}{dim}\Default{.5ex} - The distance of the symbols from the atom. -\end{options} -The dots are drawn according to the \option{radical-radius} option mentioned -in section~\ref{ssec:compounds:customization}. - -The basic usage should be more or less self-explaining: -\begin{example}[side-by-side] - \chlewis{0:90|180.270}{O} - \quad - \chlewis{45,135}{O} - \quad - \chlewis{0o}{Na} -\end{example} - -The next example shows the effect of some of the options: -\begin{example} - \chlewis[lewis-default=.]{23,68,113,158,203,248,293,338}{X} - \quad - \chlewis{0,90,180,270}{X} - \quad - \chlewis[lewis-distance=1.25ex]{0,90,180,270}{X} - \quad - \chlewis[lewis-distance=.75ex,radical-radius=.5pt]{0,90,180,270}{X} - \quad - \chlewis[ - radical-radius=.5pt, - lewis-default=. - ]{23,68,113,158,203,248,293,338}{X} -\end{example} - -\begin{example} - \ch{ - !($1s^22s^1$)( "\chlewis{180.}{Li}" ) + - !($1s^22s^22p^5$)( "\chlewis{0.90,180,270}{F}" ) - -> - !($1s^2$)( Li+ ) + !($1s^22s^22p^6$)( "\chlewis{0,90,180,270}{F}" {}- ) - } -\end{example} - -\section{Kröger-Vink Notation}\label{sec:kroger-vink-notation} - -\chemformula\ also supports the Kröger-Vink notation\sinceversion{4.5}. -\begin{options} - \keybool{kroeger-vink}\Default{false} - Enable the Kröger-Vink notation. As most options this can be enabled - globally via the setup command or locally as option to \cs{ch}. -\end{options} - -With this option enabled several changes come into effect: \code{'} prodoces a -prime, a \code{x} in a superscript produces $\times$, and both a \code{.} and -a \code{*} produce a little filled circle. In the Kröger-Vink notation a prime -denotes a negative relative charge, the circle a positive relative charge, and -the cross denotes a neutral relative charge. - -\begin{example}[side-by-side,add-sourcecode-options={literate=}] - \setchemformula{kroeger-vink=true} - \ch{Al_{Al}^'} - \ch{Al_{Al}'}\par - \ch{Ni_{Cu}^{x}}\par - \ch{V_{Cl}^.} - \ch{V_{Cl}^*}\par - \ch{Ca_i^{..}}\par - \ch{e^'}\par - \ch{Cl_i^'} - \ch{Cl_i'}\par - \ch{O_i^{''}} - \ch{O_i''} -\end{example} - -There are a number of options for customizations: -\begin{options} - \keyval{kv-positive-style}{\TikZ}\Default - \TikZ\ code for positive charge dot. - \keyval{kv-positive-radius}{dim}\Default{.3ex} - Radius of positive charge dot - \keyval{kv-positive-hshift}{dim}\Default{.15em} - Horizontal shift of positive charge dot - \keyval{kv-positive-vshift}{dim}\Default{.5ex} - Vertical shift positive charge dot - \keyval{kv-positive-offset}{dim}\Default{.4em} - The offset of two consecutive positive charge dots - \keyval{kv-neutral-symbol}{\TeX\ code}\Default{\$\cs*{times}\$} - Symbol for neutral particles. -\end{options} - -\section{Further Examples} -This section presents some examples of a possible usage. - -\begin{example} - \begin{reaction}[Synthese von Alkanen] - !(Synthesegas)( $n$ CO + $(2n+1)$ H2 ) - ->[\SI{200}{\celsius}][\[CoNi\]] - C_{$n$}H_{$2n+2$} + $n$ H2O - \end{reaction} -\end{example} - -\begin{example} - \begin{reactions*} - "a)" && CH4 + Cl2 &-> CH3Cl + HCl && "{\small Chlormethan/Methylchlorid}" \\ - "b)" && CH3Cl + Cl2 &-> CH2Cl2 + HCl && "{\small Dichlormethan/Methylenchlorid}" \\ - "c)" && CH2Cl2 + Cl2 &-> CHCl3 + HCl && "{\small Trichlormethan/Chloroform}" \\ - "d)" && CHCl3 + Cl2 &-> CCl4 + HCl && "{\small Tetrachlormethan/Tetrachlorkohlenstoff}" - \end{reactions*} -\end{example} - -\begin{example} - \chemsetup[ox]{parse=false} - \ch{ - "\ox{\delm,C}" -{} "\ox{\delp,M}" \qquad - ( <-> "\ox{\delp,C}" -{} "\ox{\delm,Br}" ) - } \\ - \ch[adduct-space=0pt]{X. + .Y <=> X-Y + Bindungsenergie} \\ - \ch[name-format=\normalsize]{ - !(\State{H}{f}\qquad)() !(\textcolor{red}{??})( CH4\gas{} ) + - !(\num{0})( 2 O2\gas{} ) - -> - !(\num{-94.3})( CO2\gas{} ) + - !(\num{-57.9})( H2O\lqd{} ) + - !(\num{-192.1})( "\State{H}" ) - } -\end{example} - -\begin{example} - \newcommand\cstack[1]{% - \clap{% - \begin{tabular}{c} - #1 - \end{tabular} - }% - } - \begin{reactions*} - CH3MgBr + "\ox*{1,Cu}" X & - -> "\glqq" CH3 "\ox*{1,Cu}\grqq" + MgBrX "\qquad X~$=$~Br,I,CN" \\ - 2 MeLi + CuI & - -> !(\cstack{Dimethylcuprat\\(Gilmann-Cuprat)})( Me2CuLi ) + Li - \end{reactions*} -\end{example} - -\begin{example} - % needs `chemfig' - \begin{reactions*} - H3C-CH3 + Cl2 & - ->[$\Delta$][$h\nu$] H3CCH2Cl + HCl & & - "\Enthalpy{-27.1}" \\ - H3C-CH3 + "\Lewis{0.,Cl}" & - -> H3CCH2 "\Lewis{0.,\vphantom{H}}" + HCl & & - "\Enthalpy{-5.0}" \\ - H3C-CH2 "\Lewis{0.,\vphantom{H}}" + Cl2 & - -> H3CCH2Cl + "\Lewis{0.,Cl}" & & - "\Enthalpy{-23.0}" - \end{reactions*} -\end{example} - -The following example shows how the cancelling of compounds could be -done\footnote{Inspired by a question on TeX.SE: - \url{http://tex.stackexchange.com/q/30118/5049}}. -\begin{example} - % needs `cancel' - \begin{align*} - \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} - \ch{H2O\lqd{} + H2O\lqd{} &<=> H3O^+\aq{} + OH^-\aq} - \end{align*} -\end{example} - -\end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemformula_test_sub_and_superscripts.tex b/Master/texmf-dist/doc/latex/chemmacros/chemformula_test_sub_and_superscripts.tex deleted file mode 100644 index 9bb056af395..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemformula_test_sub_and_superscripts.tex +++ /dev/null @@ -1,225 +0,0 @@ -\documentclass[parskip=full]{scrartcl} - -\usepackage{chemmacros} -\chemsetup[chemformula]{ - format=\color{blue} -} - -\newcommand*\cmd[2]{} -\begin{document} - -% {\chemsetup[chemformula]{charge-hshift=0pt} -% \ch{NO2^*} X\\ -% \ch{NO^*} X\\ -% \ch{H2O} X\\ -% \ch{^4S_{3/2}^-} X\\ -% \ch{C5H11-} X\\ -% \ch{^1H} X\\ -% \ch{^{12}1H} X -% } -% % \end{document} -% -% \ch{NO2^*} X\\ -% \ch{H2O} X\\ -% \ch{^4S_{3/2}^-} X\\ -% \ch{C5H11-} X\\ -% \ch{^1H} X\\ -% \ch{^{12}1H} X - -Isotop:\\ -\verb|\ch{^3B}| \ch{^3B +}\\ -\verb|\ch{3B}| \ch{3B +}\\ -\verb|\ch{_3B}| \ch{_3B +}\\ -\verb|\ch{3^3B}| \ch{3^3B +}\\ -\verb|\ch{_3^3B}| \ch{_3^3B +}\\ -\verb|\ch{^33B}| \ch{^33B +}\\ -\verb|\ch{^{23}123B}| \ch{^{23}123B +}\\ -\verb|\ch{^{23}_{123}B}| \ch{^{23}_{123}B +}\\ -\verb|\ch{^{123}23B}| \ch{^{123}23B +}\\ -\verb|\ch{^{123}_{23}B}| \ch{^{123}_{23}B +}\\ -\verb|\ch{123^{23}B}| \ch{123^{23}B +}\\ -\verb|\ch{_{123}^{23}B}| \ch{_{123}^{23}B +}\\ -\verb|\ch{23^{123}B}| \ch{23^{123}B +}\\ -\verb|\ch{_{23}^{123}B}| \ch{_{23}^{123}B +} \\ -\verb|\ch{_{23}^{123}B + _{23}^{123}B}| \ch{_{23}^{123}B + _{23}^{123}B} - -Formel:\\ -\verb|\ch{B3}| \ch{B3 +}\\ -\verb|\ch{B23}| \ch{B23 +}\\ -\verb|\ch{B123}| \ch{B123 +}\\ -\verb|\ch{B^3}| \ch{B^3 +}\\ -\verb|\ch{B^{23}}| \ch{B^{23} +}\\ -\verb|\ch{B^{123}}| \ch{B^{123} +}\\ -\verb|\ch{B3^3}| \ch{B3^3 +}\\ -\verb|\ch{B^33}| \ch{B^33 +}\\ -\verb|\ch{B123^{23}}| \ch{B123^{23} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{123}^{23} +}\\ -\verb|\ch{B^{23}123}| \ch{B^{23}123 +}\\ -\verb|\ch{B^{23}_{123}}| \ch{B^{23}_{123} +}\\ -\verb|\ch{B123^{23}}| \ch{B23^{123} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{23}^{123} +}\\ -\verb|\ch{B^{123}23}| \ch{B^{123}23 +}\\ -\verb|\ch{B^{123}_{23}}| \ch{B^{123}_{23} +} \\ -\verb|\ch{H2O}| \ch{H2O} \\ -\verb|\ch{H2SO4}| \ch{H2SO4} \\ -\verb|\ch{Na+}| \ch{Na+} \\ -\verb|\ch{NH4+}| \ch{NH4+} \\ -\verb|\ch{SO4^2-}| \ch{SO4^2-} - -full shift:\chemsetup[chemformula]{charge-hshift=full}\\ -\verb|\ch{B3}| \ch{B3 +}\\ -\verb|\ch{B23}| \ch{B23 +}\\ -\verb|\ch{B123}| \ch{B123 +}\\ -\verb|\ch{B^3}| \ch{B^3 +}\\ -\verb|\ch{B^{23}}| \ch{B^{23} +}\\ -\verb|\ch{B^{123}}| \ch{B^{123} +}\\ -\verb|\ch{B3^3}| \ch{B3^3 +}\\ -\verb|\ch{B^33}| \ch{B^33 +}\\ -\verb|\ch{B123^{23}}| \ch{B123^{23} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{123}^{23} +}\\ -\verb|\ch{B^{23}123}| \ch{B^{23}123 +}\\ -\verb|\ch{B^{23}_{123}}| \ch{B^{23}_{123} +}\\ -\verb|\ch{B123^{23}}| \ch{B23^{123} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{23}^{123} +}\\ -\verb|\ch{B^{123}23}| \ch{B^{123}23 +}\\ -\verb|\ch{B^{123}_{23}}| \ch{B^{123}_{23} +} \\ -\verb|\ch{H2O}| \ch{H2O} \\ -\verb|\ch{H2SO4}| \ch{H2SO4} \\ -\verb|\ch{Na+}| \ch{Na+} \\ -\verb|\ch{NH4+}| \ch{NH4+} \\ -\verb|\ch{SO4^2-}| \ch{SO4^2-} - -no shift:\chemsetup[chemformula]{charge-hshift=0pt}\\ -\verb|\ch{B3}| \ch{B3 +}\\ -\verb|\ch{B23}| \ch{B23 +}\\ -\verb|\ch{B123}| \ch{B123 +}\\ -\verb|\ch{B^3}| \ch{B^3 +}\\ -\verb|\ch{B^{23}}| \ch{B^{23} +}\\ -\verb|\ch{B^{123}}| \ch{B^{123} +}\\ -\verb|\ch{B3^3}| \ch{B3^3 +}\\ -\verb|\ch{B^33}| \ch{B^33 +}\\ -\verb|\ch{B123^{23}}| \ch{B123^{23} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{123}^{23} +}\\ -\verb|\ch{B^{23}123}| \ch{B^{23}123 +}\\ -\verb|\ch{B^{23}_{123}}| \ch{B^{23}_{123} +}\\ -\verb|\ch{B123^{23}}| \ch{B23^{123} +}\\ -\verb|\ch{B_{123}^{23}}| \ch{B_{23}^{123} +}\\ -\verb|\ch{B^{123}23}| \ch{B^{123}23 +}\\ -\verb|\ch{B^{123}_{23}}| \ch{B^{123}_{23} +} \\ -\verb|\ch{H2O}| \ch{H2O} \\ -\verb|\ch{H2SO4}| \ch{H2SO4} \\ -\verb|\ch{Na+}| \ch{Na+} \\ -\verb|\ch{NH4+}| \ch{NH4+} \\ -\verb|\ch{SO4^2-}| \ch{SO4^2-} - -Other tests: - -\ch{A^{x-}} \\ -\ch{A^x-} \\ -\ch{A^{x}-} \\ -\ch{A^{$x-$}} \\ -\ch{RNO2^{-.}} \\ -\ch{^31H} \\ -\ch{^{14}6C} \\ -\ch{^{58}_{26}Fe} \\ -\ch{NO^*} \\ -\ch{SO4^2-} \ch{Ca^2+ SO4^2-} - -\chemsetup[option]{circled=all} -\ch{H+ + OH- <=> H2O} - -\chemsetup{option/circled=formal,chemformula/charge-hshift=.5ex} -\ch{H^2} \ch[charge-vshift=.2ex]{H^2} H$^2$ - -\[ \ch{SO4^2-} K = \frac{[\ch{Na+}]^2[\ch{SO4^2-}]}{[\ch{Na2SO4}]} \] - -\( K = \frac{\bigl[\ch{Na+}\bigr]^2\bigl[\ch{SO4^2-}\bigr]}{\bigl[\ch{Na2SO4}\bigr]} \) - -$ A^{\ch{SO4^2-}}$ - -\ch{!(water)(H2O)} \quad -\ch{!( "\textcolor{blue}{water}" )( H2O )} \quad -\ch{!( $2n-1$ )( H2O )} \quad -\ch{!( H2O )( H2O )} \quad -\ch{!(oxonium)( H3O+ )} - -\ch{O2^{.-}} - -\ch[radical-vshift=.4ex]{O2^{.-}} - -\ch{.5 H2O} - -\ch{,5 H2O} - -\ch{1.5 H2O} - -\ch{1,5 H2O ->[a][ b2+ ] ?? <=>> CH2+CH2 == SO4^2- + Ca^2+} - -\ch{1/2 H2O} - -\ch{(1.5) H2O} \ch{( H2O )} \ch{!( bla )( H2O )} - -\ch{(1/5) H2O} - -\chemsetup[chemformula]{stoich-paren-parse = true} -\ch{(1/5) H2O} - -\ch{3_1/2 H2O} - -\Hpl - -\ghspic{skull} - -\Sconf - -\p{H} - -\pH{} \pOH - -\pKa{} \pKb - -\newman{1,2,3} - -\orbital{s} \orbital{p} \orbital{sp} \orbital{sp2} \orbital{sp3} - -\bigskip - -\OX{a,Na} $\rightarrow$ \OX{b,Na}\pch -\redox(a,b)[->,red]{ox} -\redox(a,b)[<-,blue][-1]{red} - -\bigskip - -\ch{"->"} - -\bigskip - -\chlewis{0:90|180.270}{O} -\quad -\chlewis{45,135}{O} -\quad -\chlewis{0o}{Na} - - -\chlewis[lewis-default=.]{23,68,113,158,203,248,293,338}{X} -\quad -\chlewis{0,90,180,270}{X} -\quad -\chlewis[lewis-distance=1.25ex]{0,90,180,270}{X} -\quad -\chlewis[lewis-distance=.75ex,radical-radius=.5pt]{0,90,180,270}{X} -\quad -\chlewis[ - radical-radius=.5pt, - lewis-default=. -]{23,68,113,158,203,248,293,338}{X} - - -\ch{ - !($1s^22s^1$)( "\chlewis{180.}{Li}" ) + - !($1s^22s^22p^5$)( "\chlewis{0.,90,180,270}{F}" ) - -> - !($1s^2$)( Li+ ) + !($1s^22s^22p^6$)( "\chlewis{0,90,180,270}{F}" {}- ) -} - -\end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.pdf Binary files differdeleted file mode 100644 index 1c8a1de5a87..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex deleted file mode 100644 index 6df2ffb9498..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex +++ /dev/null @@ -1,513 +0,0 @@ -% arara: pdflatex: { shell: on } -% arara: biber -% arara: pdflatex -% arara: pdflatex -% -------------------------------------------------------------------------- -% the CHEMMACROS bundle -% chemgreek_en.tex -% macros and commands for chemists -% -------------------------------------------------------------------------- -% Clemens Niederberger -% -------------------------------------------------------------------------- -% https://bitbucket.org/cgnieder/chemmacros/ -% contact@mychemistry.eu -% -------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% -------------------------------------------------------------------------- -% Copyright 2011-2013 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% -------------------------------------------------------------------------- -\documentclass[load-preamble+]{cnltx-doc} -\usepackage[utf8]{inputenc} -\usepackage[greek=newtx]{chemmacros} -\setcnltx{ - package = {chemgreek}, - title = \huge the \chemmacros\ bundle, - url = https://bitbucket.org/cgnieder/chemmacros/ , - authors = Clemens Niederberger , - email = contact@mychemistry.eu , - info = { - packages \chemmacros\ (v\csname chemmacros@version\endcsname), - \chemformula\ (v\csname chemformula@version\endcsname), - \ghsystem\ (v\csname ghsystem@version\endcsname) and - \chemgreek\ (v\csname chemgreek@version\endcsname)\\[2ex] - {\Large documentation for the \chemgreek\ package}} , - abstract = {% - \centering - \includegraphics{chemmacros-logo.pdf} - \par - } , - add-cmds = { - abinitio, activatechemgreekmapping, AddRxnDesc, anti, aq, aqi, - ba, bond, bridge, - cd, ch, changechemgreeksymbol, charrow, chcpd, chemabove, chemalpha, - chembeta, chemgamma, chemdelta, chemDelta, chemformula@bondlength, - chemomega, chemphi, chemPhi, chemsetup, chlewis, chname , cip, cis, ch, - CNMR, - data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, - declarechemgreekmapping, DeclareChemIUPAC, DeclareChemLatin, - DeclareChemNMR, DeclareChemParticle, DeclareChemPhase, - DeclareChemReaction, DeclareChemState, delm, delp, Delta, Dfi, - el, ElPot, endo, Enthalpy, enthalpy, Entropy, - fmch, fpch, fscrm, fscrp, - gas, ghs, ghslistall, ghspic, Gibbs, gram, - hapto, HNMR, Helmholtz, hydrogen, - insitu, invacuo, iupac, - Ka, Kb, Kw, - Lfi, listofreactions, lqd, - mch, mega, meta, mhName, - NewChemArrow, NewChemBond, NewChemBondAlias, - newchemgreekmapping, NewChemIUPAC, NewChemLatin, - NewChemNMR, NewChemParticle, NewChemPhase, - NewChemReaction, NewChemState, - newman, nitrogen, NMR, Nu, Nuc, - orbital, ortho, ox, OX, oxygen, - para, pch, per, pH, phase, phosphorus, photon, pKa, pKb, pOH, pos, - positron, Pot, prt, printchemgreekalphabet , - Rad, redox, RenewChemArrow, RenewChemBond, renewchemgreekmapping, - RenewChemIUPAC, RenewChemLatin, RenewChemNMR, RenewChemParticle, - RenewChemPhase, RenewChemState, - Sf, scrm, scrp, second, selectchemgreekmapping, setchemformula, - ShowChemArrow, ShowChemBond, sld, Sod, State, sulfur, - trans, - val - } , - add-silent-cmds = { - addplot, - bottomrule, - cancel, cdot, ce, cee, celsius, centering, chemfig, chemname, clap, - cnsetup, color, cstack, cstsetup, - DeclareInstance, DeclareSIUnit, definecolor, draw, - electronvolt, - footnotesize, - glqq, grqq, - hertz, hspace, - includegraphics, intertext, IUPAC, - joule, - kilo, - latin, lewis, Lewis, liquid, ltn, - metre, midrule, milli, mmHg, mole, - nano, nicefrac, num, numrange, - ominus, oplus, - percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, - renewtagform, rightarrow, - sample, scriptscriptstyle, setatomsep, setbondoffset, setmainfont, sfrac, - shorthandoff, si, SI, sisetup, square, subsection, - textcolor, textendash, textsuperscript, tiny, toprule, - upbeta, upeta, upgamma, upPhi, upphi, usetikzlibrary, - volt, vphantom, vspave, - xspace, - z@, z@skip - } -} - -\usepackage{chemfig,booktabs,cancel,varioref} -\usepackage[version=3]{mhchem} - -\expandafter\def\csname libertine@figurestyle\endcsname{LF} -\usepackage[libertine]{newtxmath} -\expandafter\def\csname libertine@figurestyle\endcsname{OsF} - -\usepackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\usepackage[accsupp]{acro} -\acsetup{ - long-format = \scshape , - short-format = \scshape -} -\DeclareAcronym{ghs}{ - short = ghs , - long = Globally Harmonized System of Classification and Labelling of - Chemicals , - pdfstring = GHS , - accsupp = GHS -} -\DeclareAcronym{eu}{ - short = EU , - long = European Union , - pdfstring = EU , - accsupp = EU -} -\DeclareAcronym{iupac}{ - short = iupac , - long = International Union of Pure and Applied Chemistry , - pdfstring = IUPAC , - accsupp = IUPAC -} -\DeclareAcronym{UN}{ - short = un , - long = United Nations , - pdfstring = UN , - accsupp = UN -} -\DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - pdfstring = DVI , - accsupp = DVO -} -\DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - pdfstring = PDF , - accsupp = PDF -} - -\chemsetup{ - option/synchronize , - chemformula/format = \libertineLF -} -% \colorlet{chemformula}{black!90} - -\sisetup{ - detect-mode=false, - mode=text, - text-rm=\libertineLF -} - -\usepackage{filecontents} - -\defbibheading{bibliography}{\addsec{References}} -\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\"om and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and - Franco Pavese and Martin Quack and J\"urgen Stohner and Herbert L. Strauss and - Michio Takami and Anders J Thor} , - title = {``Quantities, Symbols and Units in Physical Chemistry'', \acs{iupac} - Green Book} , - sorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - indexsorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - edition = {3rd Edition. 2nd Printing} , - year = {2008} , - publisher = {\acs{iupac} \&\ RSC Publishing, Cambridge} -} -@book{iupac:redbook, - author = {Neil G. Connelly and Ture Damhus and Richard M. Hartshorn and - Alan T. Hutton} , - title = {``Nomenclature of Inorganic Chemistry'', \acs{iupac} Red Book} , - sorttitle = {Nomenclature of Inorganic Chemistry} , - indexsorttitle = {Nomenclature of Inorganic Chemistry} , - year = {2005} , - publisher = { \acs{iupac} \&\ RSC Publishing, Cambridge} , - isbn = {0-85404-438-8} -} -@misc{eu:ghsystem_regulation, - author = {{The European Parliament and The Council of the European Union}}, - title = {Regulation (EC) No 1272/2008 of the European Parliament and of - the Council} , - subtitle = {on classification, labelling and packaging of substances and - mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and - amending Regulation (EC) No 1907/2006} , - 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} - { - scale-factor = 1 , - denominator-bot-sep = -.2ex , - denominator-format = \scriptsize #1 , - numerator-top-sep = -.2ex , - numerator-format = \scriptsize #1 , - slash-right-kern = .05em , - slash-left-kern = .05em - } - -\usetikzlibrary{calc,positioning,decorations.pathmorphing,patterns} - -\newpackagename\chemmacros{chemmacros} -\newpackagename\chemformula{chemformula} -\newpackagename\ghsystem{ghsystem} -% \newpackagename\chemgreek{chemgreek} - - -\newidxcmd\manual{\textsf{#1}}[\ (manual)] - -\newenvironment{codedesc} - {% - \def\Code##1{\item\code{##1}\hfill\newline}% - \cnltxlist - } - {\endcnltxlist} - -\renewcommand*\AmS{\hologo{AmS}} - -\newcommand*\TikZ{Ti\textit{k}Z} - -\newcommand*\tablehead[1]{\textrm{\bfseries#1}} - -\begin{document} - -\section{Introduction} -The \chemgreek\ package is an auxiliary package for other chemistry packages -such as \chemmacros. In chemistry there is often the need for upright greek -letters. The \chemgreek\ package provides an interface to various other -packages that provide upright greek letters. One could mention -\pkg{textgreek}, \pkg{upgreek}, \pkg{newtx} or \pkg{kpfonts}. All of these -packages provide upright greek letters, some a whole alphabet some only the -upright variants of the standard italic symbols for which macros are defined -in base \LaTeX. - -\chemgreek\ offers a possibility to map those different interfaces to a -unified set of macros for usage in a chemistry package. This is useful as -then for example names like \iupac{\b\-\D\-gluco\|pyranose} can be typeset -with a semantic interface and still have matching greek letters while the user -is not limited to a certain package or font. Consequently this package is -used by \chemmacros\ and its \acs{iupac} naming commands. - -\section{Licence and Requirements} -\license - -\chemgreek\ loads the following packages: -\pkg{expl3}\footnote{\CTANurl{l3kernel}}~\cite{bnd:l3kernel} and -\pkg{xparse}\footnote{\CTANurl{l3packages}}~\cite{bnd:l3packages}. - -\section{News} -\subsection{Version~0.2} -\begin{itemize} - \item The mapping ``mathdesign'' has been added. In order to use it you - need the \pkg{mathdesign} package~\cite{pkg:mathdesign} loaded. - \item The mapping ``fourier'' has been added. In order to use it you - need the \pkg{fourier} package~\cite{pkg:fourier} loaded. -\end{itemize} - -\subsection{Version~0.3} -\begin{itemize} - \item The provided macros have been renamed from \cs*{Chem\meta{\ldots}} - into \cs*{chem\meta{\ldots}}. The uppercase version still are provided - for backwards compatibility but issue a warning message and will be - removed some time in the future. - \item The commands for defining mappings have gotten an optional argument - which allows to specify the name of the package a mapping needs. The - command \cs{selectchemgreekmapping} now checks for this package and gives - a warning if it doesn't find it loaded. - \item The mapping ``textalpha'' has been added. In order to use it you - need the \pkg{textalpha} package (part of - \bnd{greek-fontenc}~\cite{bnd:greek-fontenc}) loaded. - \item If the package \pkg{hyperref}~\cite{pkg:hyperref} is loaded with the - \code{unicode} option \emph{and} the \pkg{textalpha} package has been - loaded at begin document all the \cs*{chem\meta{\ldots}} commands are let - to \pkg{textalpha}'s \cs*{text\meta{\ldots}} commands for the \acs{pdf} - bookmarks. This allows Greek letters in the bookmarks without worrying - about \cs*{texorpdfstring}. -\end{itemize} - -\subsection{Version~0.4} -\begin{itemize} - \item The mapping ``fontspec'' has been added. In order to use it you - need the \pkg{fontspec} package~\cite{pkg:fontspec} loaded. This means it - can only be used with \LuaLaTeX\ or \XeLaTeX. - \item New command \cs{printchemgreekalphabet}. -\end{itemize} - -\section{Define Mappings} -\selectchemgreekmapping{default} - -\chemgreek's main commands are: -\begin{commands} - \command{newchemgreekmapping}[\oarg{package}\marg{name}\marg{mapping list}] - \changedversion{0.3}Add a new mapping to \chemgreek. Issue an error if it - already exists. With the optional argument the package that is needed for - this mapping can (and should) be specified. - \command{renewchemgreekmapping}[\oarg{package}\marg{name}\marg{mapping list}] - \changedversion{0.3}Renew a \chemgreek\ mapping. Issue an error if it - doesn't exist yet. With the optional argument the package that is needed - for this mapping can (and should) be specified. - \command{declarechemgreekmapping}[\oarg{package}\marg{name}\marg{mapping list}] - \changedversion{0.3}Declare a new mapping to \chemgreek. If the mapping - already exists it will be overwritten. With the optional argument the - package that is needed for this mapping can (and should) be specified. -\end{commands} - -The command \cs{newchemgreekmapping} needs to get a comma separated list of -24 pairs divided by a slash. The first entry is the lowercase version und the -second the uppercase version for the corresponding greek letter at the current -position. This will become clearer if you look at how the \code{default} -mapping is defined: - -\begin{sourcecode} - \newchemgreekmapping{default} - { - \ensuremath{\alpha} / \ensuremath{\mathrm{A}} , % 1: alpha - \ensuremath{\beta} / \ensuremath{\mathrm{B}} , % 2: beta - \ensuremath{\gamma} / \ensuremath{\Gamma} , % 3: gamma - \ensuremath{\delta} / \ensuremath{\Delta} , % 4: delta - \ensuremath{\epsilon} / \ensuremath{\mathrm{E}} , % 5: epsilon - \ensuremath{\zeta} / \ensuremath{\mathrm{Z}} , % 6: zeta - \ensuremath{\eta} / \ensuremath{\mathrm{H}} , % 7: eta - \ensuremath{\theta} / \ensuremath{\Theta} , % 8: theta - \ensuremath{\iota} / \ensuremath{\mathrm{I}} , % 9: iota - \ensuremath{\kappa} / \ensuremath{\mathrm{K}} , % 10: kappa - \ensuremath{\lambda} / \ensuremath{\Lambda} , % 11: lambda - \ensuremath{\mu} / \ensuremath{\mathrm{M}} , % 12: mu - \ensuremath{\nu} / \ensuremath{\mathrm{N}} , % 13: nu - \ensuremath{\xi} / \ensuremath{\Xi} , % 14: xi - \ensuremath{o} / \ensuremath{\mathrm{O}} , % 15: omikron - \ensuremath{\pi} / \ensuremath{\Pi} , % 16: pi - \ensuremath{\rho} / \ensuremath{\mathrm{P}} , % 17: rho - \ensuremath{\sigma} / \ensuremath{\Sigma} , % 18: sigma - \ensuremath{\tau} / \ensuremath{\mathrm{T}} , % 19: tau - \ensuremath{\upsilon} / \ensuremath{\Upsilon} , % 20: upsilon - \ensuremath{\phi} / \ensuremath{\Phi} , % 21: phi - \ensuremath{\psi} / \ensuremath{\Psi} , % 22: psi - \ensuremath{\chi} / \ensuremath{\mathrm{X}} , % 23: chi - \ensuremath{\omega} / \ensuremath{\Omega} % 24: omega - } -\end{sourcecode} - -There \emph{must} be 24 pairs of entries, \ie, a complete mapping! Those -entries are the ones that will be used by the interface macros. For each -letter a pair \cs{chemalpha}/\cs{chemAlpha} is defined that uses the entries -of the currently active mapping. That means there are 48 (robust) macros -defined each beginning with \cs*{chem...} followed by the lowercase or -uppercase name of the Greek letter. - -The default mapping is -- as you can probably see -- \emph{not an upright - one}. This is because \chemgreek\ will not make any choice for a specific -package but let's the user (or another package) choose. The \chemmacros\ -package for example provides a package option that selects one of the -available mappings. - -\begin{example} - Default mapping: \chemphi\ and \chemPhi, $\phi$ and $\Phi$ -\end{example} - -\section{Predefined Mappings and Selection of a Mapping} -\chemgreek\ predefines some mappings. Some of the mappings require additional -packages to be loaded. The mapping names and the required packages are listed -in table~\ref{tab:mappings}. Ths mapping \code{fontspec} is a bit different -here: if you use this mapping then the fact is used that \pkg{fontspec} also -defines commands like \cs*{textalpha}. However, they only work if you also -use a font that has the Greek glyphs. - -\begin{table} - \centering - \begin{tabular}{>{\ttfamily}ll} - \toprule - \tablehead{mapping} & \tablehead{package} \\ - \midrule - default & --- \\ - var-default & --- \\ - textgreek & \pkg{textgreek} \cite{pkg:textgreek} \\ - upgreek & \pkg{upgreek} \cite{pkg:upgreek} \\ - newtx & \pkg*{newtxmath} \cite{pkg:newtx} \\ - kpfonts & \pkg{kpfonts} \cite{pkg:kpfonts} \\ - mathdesign & \pkg{mathdesign} \cite{pkg:mathdesign} \\ - fourier & \pkg{fourier} \cite{pkg:fourier} \\ - textalpha & \pkg{textalpha} \cite{bnd:greek-fontenc} \\ - fontspec & \pkg{fontspec} \cite{pkg:fontspec} \\ - \bottomrule - \end{tabular} - \caption{Predefined mappings.} - \label{tab:mappings} -\end{table} - -A mapping is selected and activated with one of the following commands: -\begin{commands} - \command{activatechemgreekmapping}[\sarg\marg{name}] - \changedversion{0.3}This commands selects and activates the mapping - \meta{name}. If the star variant is used also the package of mapping - \meta{name} (as defined with \cs{newchemgreekmapping} is loaded. The - command can only be used in the document preamble. - \command{selectchemgreekmapping}[\marg{name}] - \changedversion{0.3}This commands selects and activates the mapping - \meta{name}. A required package has to be loaded additionally the usual - way via \cs*{usepackage} or \cs*{RequirePackage}. If the package hasn't - been loaded a warning will be written to the log. The command can be used - throughout the document. -\end{commands} - -\begin{example} - % requires the `newtxmath' package to be loaded: - \chemphi\ and \chemPhi, $\phi$ and $\Phi$\par - \selectchemgreekmapping{newtx} - \chemphi\ and \chemPhi, $\upphi$ and $\upPhi$ -\end{example} - -Since the \code{fontspec} mapping is a little bit different than the others -I'd like to show a little example for it. The difference is subtle: you need -to choose a font containing the needed glyphs. - -\begin{example}[compile,program=lualatex,runs=1,add-frame=false] - \documentclass[margin=3pt]{standalone} - \usepackage{fontspec} - \setmainfont{Linux Libertine O}% need a font that has the glyphs! - \usepackage{chemgreek} - \selectchemgreekmapping{fontspec} - \begin{document} - \printchemgreekalphabet - \end{document} -\end{example} - -\section{Changing a Specific Symbol in an Existing Mapping} -If you should want to change a specific entry of a specific mapping it would -be rather tedious to redefine the whole mapping. That is why \chemgreek\ -provides a command for that purpose: -\begin{commands} - \command{changechemgreeksymbol}[\marg{mapping - name}\Marg{upper|lower}\marg{entry name}\marg{entry}] - Changes the \code{upper}- or \code{lower}case entry \meta{entry name} in - the mapping \meta{mapping name}. -\end{commands} - -In order to activate the change you need the (re-) activate the affected -mapping afterwards: -\begin{example} - \chemalpha - \changechemgreeksymbol{default}{lower}{alpha}{xxx}% - \selectchemgreekmapping{default} - \chemalpha -\end{example} - -\section{Inspecting a Mapping} -\selectchemgreekmapping{newtx} -If you want to check if a mapping has been correctly set you can use the -following commands: -\begin{commands} - \command{printchemgreekmapping}[\marg{mapping}] - \sinceversion{0.3}This will typeset a table (using a simple \code{tabular} - environment) with all~48 characters like the one shown in - table~\ref{tab:showmapping}. - \command{printchemgreekalphabet} - \sinceversion{0.4}This will print the twentyfour pairs of lower- and - uppercase letters of the currently active mapping: \printchemgreekalphabet. - \command{showchemgreekmapping}[\marg{mapping}] - \changedversion{0.3}This command will write information about the - definition of all 48~macros for a mapping to the log file. -\end{commands} - -\begin{table} - \centering - \printchemgreekmapping{newtx} - \caption{A demonstration of the \cs*{printchemgreekmapping} command.} - \label{tab:showmapping} -\end{table} - -\clearpage - -\end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.pdf Binary files differindex e4691b39d10..6d9e5a9ddfa 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.pdf +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex index 38972df6b74..cb611113813 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex @@ -3,19 +3,20 @@ % arara: pdflatex % arara: pdflatex % -------------------------------------------------------------------------- -% the CHEMMACROS bundle -% chemmacros_en.tex -% macros and commands for chemists +% the CHEMMACROS package +% +% macros and commands for chemists +% % -------------------------------------------------------------------------- % Clemens Niederberger % -------------------------------------------------------------------------- -% https://bitbucket.org/cgnieder/chemmacros/ +% https://github.com/cgnieder/chemmacros/ % contact@mychemistry.eu % -------------------------------------------------------------------------- % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- -% Copyright 2011-2013 Clemens Niederberger +% Copyright 2011-2014 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -34,16 +35,10 @@ \usepackage[greek=newtx]{chemmacros} \setcnltx{ package = {chemmacros}, - title = \huge the \chemmacros\ bundle, - url = https://bitbucket.org/cgnieder/chemmacros/ , + info = {macros and commands for chemists}, + url = https://github.com/cgnieder/chemmacros/ , authors = Clemens Niederberger , email = contact@mychemistry.eu , - info = { - packages \chemmacros\ (v\csname chemmacros@version\endcsname), - \chemformula\ (v\csname chemformula@version\endcsname), - \ghsystem\ (v\csname ghsystem@version\endcsname) and - \chemgreek\ (v\csname chemgreek@version\endcsname)\\[2ex] - {\Large documentation for the \chemmacros\ package}} , abstract = {% \centering \includegraphics{chemmacros-logo.pdf} @@ -176,7 +171,6 @@ option/synchronize , chemformula/format = \libertineLF } -% \colorlet{chemformula}{black!90} \sisetup{ detect-mode=false, @@ -285,7 +279,7 @@ \section{Licence, Requirements and \textsc{README}} \license -The \chemmacros\ bundle needs the bundles \bnd{l3kernel}~\cite{bnd:l3kernel} +The \chemmacros\ package needs the bundles \bnd{l3kernel}~\cite{bnd:l3kernel} and \bnd{l3packages}~\cite{bnd:l3packages}. It also needs the packages \needpackage{siunitx}~\cite{pkg:siunitx}, \needpackage{mathtools}~\cite{pkg:mathtools}, \needpackage{bm}~\cite{pkg:bm}, @@ -294,14 +288,16 @@ and \bnd{l3packages}~\cite{bnd:l3packages}. It also needs the packages \pkg{tikz}\footnote{\CTANurl[graphics]{pgf}}~\cite{pkg:pgf} and the \TikZ\ libraries \code{calc} and \code{arrows}. Language support is done with the help of the \needpackage{translations}~\cite{pkg:translations}. The -\chemmacros\ package also loads the other packages of this bundle. +\chemmacros\ package also loads the packages +\pkg{chemformula}~\cite{pkg:chemformula} and +\pkg{chemgreek}~\cite{pkg:chemgreek}. The package option \option{xspace} also loads the package \pkg{xspace}~\cite{pkg:xspace}. -The \chemmacros\ bundle bundles four packages: \chemmacros, \chemformula, -\ghsystem\ and \chemgreek. The package dependencies of the other packages are -described in the respective manuals. +The package option \option{ghsystem} also loads the package +\pkg{ghsystem}~\cite{pkg:ghsystem}. + \section{Motivation and Background} \chemmacros\ started some years ago as a growing list of custom macros that I @@ -319,14 +315,8 @@ with \chemmacros, though. Also, some other minor points in \pkg{mhchem} always bothered me, but they hardly seemed enough for a new package. They weren't even enough for a feature request to the \pkg{mhchem} author. The challenge and the fun of creating a new package and the wish for a highly -customizable alternative led to \chemformula\ after all. - -\chemformula\ works very similar to \pkg{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 \pkg{mhchem} -does not. Although \chemformula\ is meant as an \emph{alternative} to -\pkg{mhchem} \chemmacros\ only loads \chemformula\ and uses it at various -places internally, too. +customizable alternative led to \chemformula\ after all. \chemformula{} used +to part of \chemmacros{} for quite a while but now is an independent package. As a chemist you are probably aware of the fact that the \acl{UN} have developed the \ac{ghs} as a global replacement for the various different @@ -336,9 +326,11 @@ time. The package \ghsystem\ enables you to typeset all the hazard and precautionary statements and pictograms in a very easy way. The statements are taken from -\acs{eu} regulation 1272/2008~\cite{eu:ghsystem_regulation}. +\acs{eu} regulation 1272/2008~\cite{eu:ghsystem_regulation}. \ghsystem{} used +to be a part of \chemmacros{} for quite a while but now is an independent +package. -There are four points I hope I have achieved with this bundle: +There are four points I hope I have achieved with this package: \begin{itemize} \item intuitive usage as far as the syntax of the commands is concerned \item the commands shall not only make typesetting easier and faster but also @@ -427,6 +419,16 @@ With version~4.0 some changes have been made: \item Dutch translations. \end{itemize} +\subsection{Version 4.6} +\begin{itemize} + \item The packages \chemformula, \chemgreek{} and \ghsystem{} are no longer + distributed as a part of \chemmacros{} but as packages of their own. + \item Inside \cs{iupac} the characters \code{\textbar} and + \code{\textasciicircum} are active. The corresponding commands + \cs{\textbar} and \cs{\textasciicircum} are deprecated now and will be + dropped eventually. +\end{itemize} + \section{Package Options}\label{sec:options} \chemmacros\ has several package options. They all are used as key/value pairs like @@ -437,9 +439,6 @@ Some also can be used without value (\verbcode+\usepackage[option1]{chemmacros}+), which means that the \default{underlined} value is used. -Both \chemformula\ and \ghsystem\ don't have package options of their own. If -you load them explicitly any given option will silently fail. Options can -then only be set using the setup command. \begin{options} % circled \keychoice{circled}{formal,\default{all},none}\Module{option}\Default{formal} @@ -452,7 +451,7 @@ then only be set using the setup command. This option switches between two kinds of circled charge symbols: \cs{fplus} \fplus\ and \verbcode+$\oplus$+ $\oplus$. % ghsystem - \keybool{ghsystem}\Module{option}\Default{true} + \keybool{ghsystem}\Module{option}\Default{false} \keyis{ghsystem}{false} disables the automatic loading of the \ghsystem\ package. % greek @@ -496,10 +495,10 @@ then only be set using the setup command. \section{Setup}\label{sec:setup} -Various of \chemmacros', \chemformula's and \ghsystem's commands have -key/value pairs with which they can be customized. Most times they can be -used as (optional) argument of the commands themselves. They also can most -times be used with the \cs{chemsetup} command. +Various of \chemmacros' commands have key/value pairs with which they can be +customized. Most times they can be used as (optional) argument of the +commands themselves. They also can most times be used with the \cs{chemsetup} +command. \begin{commands} \command{chemsetup}[\oarg{module}\Marg{\meta{key} = \meta{value}}] Set up the options for module \meta{module} only or @@ -530,7 +529,8 @@ Keys \emph{not} belonging to a module \emph{cannot} be used with \cs{chemsetup}! All options of \chemformula\ belong to the module \module{chemformula} and all -of \ghsystem's options belong to the module \module{ghsystem}. +of \ghsystem's options belong to the module \module{ghsystem} which means that +their options can also be set up using \cs{chemsetup}. \section{Language Settings}\label{sec:languages} @@ -627,7 +627,7 @@ Choosing the language \code{italian} defines two additional \ac{iupac} commands: \command{sin} \iupac{\sin} \end{commands} -\part{\chemmacros}\label{part:chemmacros} +\part{The Package's Features}\label{part:chemmacros} \section{Particles, Ions and Symbols}\label{sec:particles} \subsection{Predefined} @@ -766,14 +766,17 @@ following command does. \command{iupac}[\marg{IUPAC name}] Inside this command use \cs{\textbar} and \cs{-} to indicate a breaking point or a breaking dash. Use \cs{\textasciicircum} as a shortcut for - \cs*{textsuperscript}. + \cs*{textsuperscript}. In fact, \sinceversion{4.6}since version~4.6 the + characters \code{\textbar} and \code{\textasciicircum} are active inside + \cs{iupac}. Using \code{\textbar} is equivalent to \cs{\textbar} and using + \code{\textasciicircum} is equivalent to \cs{\textasciicircum}. \end{commands} \begin{example} \begin{minipage}{.4\linewidth} \iupac{% - Tetra\|cyclo[2.2.2.1\^{1,4}]\-un\|decane-2\-dodecyl\-% - 5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)% + Tetra|cyclo[2.2.2.1^{1,4}]\-un|decane-2\-dodecyl\-% + 5\-(hepta|decyl|iso|dodecyl|thio|ester)% } \end{minipage} \end{example} @@ -786,7 +789,7 @@ There are some subtleties: \cs{-} inserts a small space before the hyphen and removes a small space after it. The command \cs{\textbar} not only prevents ligatures but also inserts a small space. \begin{example}[side-by-side] - \huge\iupac{2,4\-Di\|chlor\|pentan} \par + \huge\iupac{2,4\-Di|chlor|pentan} \par 2,4-Dichlorpentan \end{example} @@ -892,8 +895,8 @@ please read page~\pageref{desc:one-letter-commands} first before you use them. \begin{example} \iupac{5\chemalpha\-androstan\-3\chembeta\-ol} \par - \iupac{\chemalpha\-(tri\|chloro\|methyl)\-\chemomega - \-chloro\|poly(1,4\-phenylene\|methylene)} + \iupac{\chemalpha\-(tri|chloro|methyl)\-\chemomega + \-chloro|poly(1,4\-phenylene|methylene)} \end{example} \paragraph{Hetero Atoms and added Hydrogen} @@ -924,7 +927,7 @@ few macros for the most common ones. it.) \end{commands} \begin{example}[side-by-side] - \iupac{\nitrogen\-methyl\|benz\|amide} + \iupac{\nitrogen\-methyl|benz|amide} \iupac{3\hydrogen\-pyrrole} @@ -1010,15 +1013,15 @@ Although these commands are provided I like to cite~\cite{iupac:bluebook}: Examples:\nopagebreak \begin{example} - \iupac{\dexter\-Wein\|s\"aure} = - \iupac{\cip{2S,3S}\-Wein\|s\"aure} \par + \iupac{\dexter\-Wein|s\"aure} = + \iupac{\cip{2S,3S}\-Wein|s\"aure} \par \iupac{\dexter\-($-$)\-Threose} = - \iupac{\cip{2S,3R}\-($-$)\-2,3,4\-Tri\|hydroxy\|butanal} \par + \iupac{\cip{2S,3R}\-($-$)\-2,3,4\-Tri|hydroxy|butanal} \par \iupac{\cis\-2\-Butene} = \iupac{\zusammen\-2\-Butene}, \par - \iupac{\cip{2E,4Z}\-Hexa\|diene} \par + \iupac{\cip{2E,4Z}\-Hexa|diene} \par \iupac{\meta\-Xylol} = - \iupac{1,3\-Di\|methyl\|benzene} + \iupac{1,3\-Di|methyl|benzene} \end{example} \paragraph{Coordination Chemistry} @@ -1033,8 +1036,8 @@ Examples:\nopagebreak \sinceversion{4.3}Denote denticity. \end{commands} \begin{example} - Ferrocene = \iupac{bis(\hapto{5}cyclo\|penta\|dienyl)iron} \par - \iupac{tetra\-\bridge{3}iodido\-tetrakis[tri\|methyl\|platinum(IV)]} + Ferrocene = \iupac{bis(\hapto{5}cyclo|penta|dienyl)iron} \par + \iupac{tetra\-\bridge{3}iodido\-tetrakis[tri|methyl|platinum(IV)]} \end{example} Two options allow customization: @@ -1071,7 +1074,7 @@ overwrite an existing \ac{iupac} command. \begin{example} \NewChemIUPAC\endo{\textit{endo}} \RenewChemIUPAC\anti{\textit{anti}} - \iupac{(2\-\endo,7\-\anti)\-2\-bromo\-7\-fluoro\|bicyclo[2.2.1]heptane} + \iupac{(2\-\endo,7\-\anti)\-2\-bromo\-7\-fluoro|bicyclo[2.2.1]heptane} \end{example} \cs{RenewChemIUPAC} allows you to redefine the existing \ac{iupac} naming @@ -2491,31 +2494,12 @@ changed. \vspace{1cm} \end{example} -\part{Other Packages of the Bundle} - -The other three packages, \chemformula, \ghsystem\ and \chemgreek, all have -their own documentation (if you click on the name the corresponding file will -open): -\begin{itemize} - \item \url{chemformula_en.pdf} - \item \url{ghsystem_en.pdf} - \item \url{chemgreek_en.pdf} -\end{itemize} - -This change has been made \sinceversion{4.0}with version~4.0 since with this -version every of those packages can be used independently from the -\chemmacros\ package. It made sense to give each of them an own documentation -file. You should be able to find them in the same folder as this document as -well as via the \code{texdoc} program. You can also try and click on the -names in the list above. They are links and \emph{should} open the respective -file. - \appendix \part{Appendix} \addsec{Suggestions and Bug Reports} -Feedback on \chemmacros, \chemformula, \chemgreek, and \ghsystem\ is highly -appreciated and welcome! +Feedback on \chemmacros{} (and also on \chemformula, \chemgreek, 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, @@ -2524,18 +2508,21 @@ 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. +\url{https://github.com/cgnieder/chemmacros/} instead. Many thanks to all the people who already provided me with feedback, especially (in alphabetical order): \begin{itemize} \item Peter Cao + \item Ignacio Fernández Galván for his translation of the hazard and + precautionary statements of the \ghsystem{} package into Spanish \item Christina Lüdigk \item Dr.~Paul King \item Jonas Rivetti (Special thanks for his translation of the hazard and - precautionary statements into Italian!) + precautionary statements of the \ghsystem{} package into Italian!) \item Christoph Schäfer \item Timo Stein + \item Herbert Voß \end{itemize} \end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf Binary files differdeleted file mode 100644 index ff52b0d07f1..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex deleted file mode 100644 index b345dd08df1..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex +++ /dev/null @@ -1,600 +0,0 @@ -% arara: pdflatex -% arara: biber -% arara: pdflatex -% arara: pdflatex -% -------------------------------------------------------------------------- -% the CHEMMACROS bundle -% ghsystem_en.tex -% macros and commands for chemists -% -------------------------------------------------------------------------- -% Clemens Niederberger -% -------------------------------------------------------------------------- -% https://bitbucket.org/cgnieder/chemmacros/ -% contact@mychemistry.eu -% -------------------------------------------------------------------------- -% If you have any ideas, questions, suggestions or bugs to report, please -% feel free to contact me. -% -------------------------------------------------------------------------- -% Copyright 2011-2013 Clemens Niederberger -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Clemens Niederberger. -% -------------------------------------------------------------------------- -\documentclass[load-preamble+]{cnltx-doc} -\usepackage[utf8]{inputenc} -\usepackage[greek=newtx]{chemmacros} -\setcnltx{ - package = {ghsystem}, - date = \csname ghsystem@date\endcsname , - version = v\csname ghsystem@version\endcsname , - title = \huge the \chemmacros\ bundle, - url = https://bitbucket.org/cgnieder/chemmacros/ , - authors = Clemens Niederberger , - email = contact@mychemistry.eu , - info = { - packages \chemmacros\ (v\csname chemmacros@version\endcsname), - \chemformula\ (v\csname chemformula@version\endcsname), - \ghsystem\ (v\csname ghsystem@version\endcsname) and - \chemgreek\ (v\csname chemgreek@version\endcsname)\\[2ex] - {\Large documentation for the \ghsystem\ package}} , - abstract = {% - \centering - \includegraphics{chemmacros-logo.pdf} - \par - } , - add-cmds = { - abinitio, activatechemgreekmapping, AddRxnDesc, anti, aq, aqi, - ba, bond, bridge, - cd, ch, changechemgreeksymbol, charrow, chcpd, chemabove, Chemalpha, - Chembeta, Chemgamma, Chemdelta, ChemDelta, chemformula@bondlength, - Chemomega, Chemphi, ChemPhi, chemsetup, chlewis, chname , cip, cis, ch, - CNMR, - data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, - declarechemgreekmapping, DeclareChemIUPAC, DeclareChemLatin, - DeclareChemNMR, DeclareChemParticle, DeclareChemPhase, - DeclareChemReaction, DeclareChemState, delm, delp, Delta, Dfi, - el, ElPot, endo, Enthalpy, enthalpy, Entropy, - fmch, fpch, fscrm, fscrp, - gas, ghs, ghslistall, ghspic, Gibbs, gram, - hapto, HNMR, Helmholtz, - insitu, invacuo, iupac, - Ka, Kb, Kw, - Lfi, listofreactions, lqd, ltn, - mch, mega, meta, mhName, - newchemgreekmapping, - newman, NMR, Nu, Nuc, - orbital, ortho, ox, OX, - para, pch, per, pH, phase, photon, pKa, pKb, pOH, pos, positron, - Pot, prt, - Rad, redox, RenewChemArrow, RenewChemBond, renewchemgreekmapping, - RenewChemIUPAC, RenewChemLatin, RenewChemNMR, RenewChemParticle, - RenewChemPhase, RenewChemState, - Sf, scrm, scrp, second, selectchemgreekmapping, setchemformula, - ShowChemArrow, ShowChemBond, sld, Sod, State, - trans, - val - } , - add-silent-cmds = { - addplot, - bottomrule, - cancel, cdot, ce, cee, celsius, centering, chemfig, chemname, clap, - cnsetup, color, cstack, cstsetup, - DeclareInstance, DeclareSIUnit, definecolor, draw, - electronvolt, - footnotesize, - glqq, grqq, - hertz, hspace, - includegraphics, intertext, IUPAC, - joule, - kilo, - latin, lewis, Lewis, - metre, midrule, milli, mmHg, mole, - nano, nicefrac, num, numrange, - ominus, oplus, - percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, - renewtagform, rightarrow, - sample, scriptscriptstyle, setatomsep, setbondoffset, sfrac, shorthandoff, - si, SI, sisetup, square, subsection, - textcolor, textendash, textsuperscript, tiny, toprule, - upbeta, upeta, upgamma, usetikzlibrary, - volt, vphantom, vspave, - xspace - } -} - -\usepackage{chemfig,booktabs,cancel,varioref} -\usepackage[version=3]{mhchem} - -\expandafter\def\csname libertine@figurestyle\endcsname{LF} -\usepackage[libertine]{newtxmath} -\expandafter\def\csname libertine@figurestyle\endcsname{OsF} - -\usepackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\usepackage[accsupp]{acro} -\acsetup{ - long-format = \scshape , - short-format = \scshape -} -\DeclareAcronym{ghs}{ - short = ghs , - long = Globally Harmonized System of Classification and Labelling of - Chemicals , - pdfstring = GHS , - accsupp = GHS -} -\DeclareAcronym{eu}{ - short = EU , - long = European Union , - pdfstring = EU , - accsupp = EU -} -\DeclareAcronym{iupac}{ - short = iupac , - long = International Union of Pure and Applied Chemistry , - pdfstring = IUPAC , - accsupp = IUPAC -} -\DeclareAcronym{UN}{ - short = un , - long = United Nations , - pdfstring = UN , - accsupp = UN -} -\DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - pdfstring = DVI , - accsupp = DVO -} -\DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - pdfstring = PDF , - accsupp = PDF -} - -\chemsetup{ - option/synchronize , - chemformula/format = \libertineLF -} -% \colorlet{chemformula}{black!90} - -\sisetup{ - detect-mode=false, - mode=text, - text-rm=\libertineLF -} - -\usepackage{filecontents} - -\defbibheading{bibliography}{\addsec{References}} -\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\"om and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and - Franco Pavese and Martin Quack and J\"urgen Stohner and Herbert L. Strauss and - Michio Takami and Anders J Thor} , - title = {``Quantities, Symbols and Units in Physical Chemistry'', \acs{iupac} - Green Book} , - sorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - indexsorttitle = {Quantities, Symbols and Units in Physical Chemistry} , - edition = {3rd Edition. 2nd Printing} , - year = {2008} , - publisher = {\acs{iupac} \&\ RSC Publishing, Cambridge} -} -@book{iupac:redbook, - author = {Neil G. Connelly and Ture Damhus and Richard M. Hartshorn and - Alan T. Hutton} , - title = {``Nomenclature of Inorganic Chemistry'', \acs{iupac} Red Book} , - sorttitle = {Nomenclature of Inorganic Chemistry} , - indexsorttitle = {Nomenclature of Inorganic Chemistry} , - year = {2005} , - publisher = { \acs{iupac} \&\ RSC Publishing, Cambridge} , - isbn = {0-85404-438-8} -} -@misc{eu:ghsystem_regulation, - author = {{The European Parliament and The Council of the European Union}}, - title = {Regulation (EC) No 1272/2008 of the European Parliament and of - the Council} , - subtitle = {on classification, labelling and packaging of substances and - mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and - amending Regulation (EC) No 1907/2006} , - 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} - { - scale-factor = 1 , - denominator-bot-sep = -.2ex , - denominator-format = \scriptsize #1 , - numerator-top-sep = -.2ex , - numerator-format = \scriptsize #1 , - slash-right-kern = .05em , - slash-left-kern = .05em - } - -\usetikzlibrary{calc,positioning,decorations.pathmorphing,patterns} - -\newpackagename\chemmacros{chemmacros} -\newpackagename\chemformula{chemformula} -% \newpackagename\ghsystem{ghsystem} -\newpackagename\chemgreek{chemgreek} - - -\newidxcmd\manual{\textsf{#1}}[\ (manual)] - -\newenvironment{codedesc} - {% - \def\Code##1{\item\code{##1}\hfill\newline}% - \cnltxlist - } - {\endcnltxlist} - -\renewcommand*\AmS{\hologo{AmS}} - -\newcommand*\TikZ{Ti\textit{k}Z} - -\newcommand*\tablehead[1]{\textrm{\bfseries#1}} - -\begin{document} - -\section{Introduction} -As a chemist you are probably aware of the fact that the \acl{UN} have -developed the \ac{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 is 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 \acs{eu} regulation 1272/2008~\cite{eu:ghsystem_regulation}. - -\section{Licence and Requirements} -\license - -\ghsystem\ loads the following packages: -\pkg{expl3}\footnote{\CTANurl{l3kernel}}~\cite{bnd:l3kernel}, \pkg{xparse} and -\pkg{l3keys2e}\footnote{\CTANurl{l3packages}}~\cite{bnd:l3packages}, -\needpackage{translations}~\cite{pkg:translations}, -\needpackage{siunitx}~\cite{pkg:siunitx}, -\needpackage{graphicx}~\cite{pkg:graphicx}, -\needpackage{longtable}~\cite{pkg:longtable} and -\needpackage{ifpdf}~\cite{pkg:ifpdf}. - -\section{Setup} -The simplest way is to load \chemmacros\ which loads \ghsystem\ implicitily. -All of \ghsystem's options belong to the module \module{ghsystem}. This means -they can be setup with -\begin{sourcecode} - \chemsetup[ghsystem]{<options>} or - \chemsetup{ghsystem/<option1>,ghsystem/<option2>} -\end{sourcecode} -\sinceversion{4.0}However, \ghsystem\ can be loaded as a standalone package -and thus provides its own setup command: -\begin{commands} - \command{ghssetup}[\marg{options}] - Setup command for \ghsystem. -\end{commands} - -\section{Get Hazard and Precautionary Statements} -\subsection{Simple Statements} -The general usage is simple: you use the command -\begin{commands} - \command{ghs}[\sarg\oarg{options}\marg{type}\marg{number}] - Get statement number \meta{number} of type \meta{type}. -\end{commands} -There are three types available: \code{h}, \code{euh} and \code{p}. The -\meta{type} argument is case insensitive, so just type them in as you like. -\begin{example}[side-by-side] - \ghs{h}{200} \par - \ghs{H}{224} \par - \ghs{euh}{001} \par - \ghs{Euh}{202} \par - \ghs{p}{201} -\end{example} - -The starred version hides the identifier and only gives the statement. If you -want to hide the statement itself instead you can use the option: -\begin{options} - \keybool{hide}\Default{false} - Hide the statement. -\end{options} - -There is an option to customize the output, too. -\begin{options} - \keyval{space}{space command}\Default - Space between \meta{type} and \meta{number}. -\end{options} -\begin{example}[side-by-side] - \ghs{h}{200} \par - \ghs[space=\,]{h}{200} \par - \ghs*{h}{200} \par - \ghs[hide]{h}{200} -\end{example} - -\subsection{Statements with Placeholders} -Some of the statements contain placeholders. They can be one of the -following: -\begin{itemize} - \item \textit{\textless state route of exposure if it is conclusively proven - that no other routes of exposure cause the hazard\textgreater} - \item \textit{\textless state specific effect if known\textgreater} - \item \textit{\textless or state all organs affected, if known\textgreater} - \item \textit{\textless name of sensitising substance\textgreater} -\end{itemize} - -Except the last one which needs to be filled in, they are hidden per default. -They can be made visible with the option -\begin{options} - \keybool{fill-in}\Default{false} - Show placeholders. -\end{options} -\begin{example} - \ghs{h}{340} \par - \ghs[fill-in]{h}{340} \par - \ghs{h}{360} \par - \ghs[fill-in]{h}{360} \par - \ghs{h}{370} \par - \ghs[fill-in]{h}{370} \par - \ghs{euh}{208} \par - \ghs[fill-in]{euh}{208} -\end{example} - -These placeholders can be replaced with one of these options: -\begin{options} - \keyval{exposure}{text}\Default - exposure placeholder - \keyval{effect}{text}\Default - effect placeholder - \keyval{organs}{text}\Default - organ placeholder - \keyval{substance}{text}\Default - substance placeholder -\end{options} -\begin{example} - \ghs[exposure=This is how you get exposed.]{h}{340} \par - \ghs[effect=These are the effects.]{h}{360} \par - \ghs[organs=to this organ]{h}{370} \par - \ghs[substance=substance]{euh}{208} -\end{example} - -\subsection{Statements with Gaps} -Some of the statements have gaps that can be filled. -\begin{example}[side-by-side] - \ghs{p}{301} \par - \ghs{p}{401} \par - \ghs{p}{411} \par - \ghs{p}{413} -\end{example} - -These gaps can be filled using these options: -\begin{options} - \keyval{text}{text} - Fill the \code{text} gap. - \keyval{dots}{text} - Fill the \code{dots} gap. - \keyval{C-temperature}{num} - Fill the Celsius temperature gap. - \keyval{F-temperature}{num} - Fill the Fahrenheit temperature gap. - \keyval{kg-mass}{num} - Fill the \si{\GHSkilogram} mass gap. - \keyval{lbs-mass}{num} - Fill the \si{\GHSpounds} mass gap. -\end{options} -\begin{example} - \ghs[text=contact physician!]{p}{301} \par - \ghs[dots=here]{p}{401} \par - \ghs[C-temperature=50, F-temperature=122]{p}{411} \par - \ghs[kg-mass=5.0, lbs-mass=11, C-temperature=50, F-temperature=122]{p}{413} -\end{example} - -\subsection{Combined Statements} -There are some combinations of statements. They are input with a \code{+} -between the numbers: -\begin{example} - \ghs{p}{235+410} \\ - \ghs{p}{301+330+331} -\end{example} - -Note that you can only get combinations that officially exist. \emph{You - can't combine freely}. - -\section{Pictograms} -\subsection{The Pictures} -The \ac{ghs} defines a number of pictograms: - -\ghspic{explos} \ghspic{flame} \ghspic{flame-O} \ghspic{bottle} \ghspic{acid} -\ghspic{skull} \ghspic{exclam} \ghspic{health} \ghspic{aqpol} - -\begin{commands} - \command{ghspic}[\oarg{options}\marg{name}] - Load pictogram \meta{name}. -\end{commands} -Table~\ref{tab:ghs_pictograms} shows all available pictograms and their names. -To be more precise: it shows the names to use with the \cs{ghspic} command. -The file names are \code{ghsystem\_\meta{name}.\meta{filetype}} where -\meta{filetype} is \code{eps}, \code{pdf}, \code{jpg} or \code{png}, see also -section~\ref{ssec:picture_type}. -\begin{example}[side-by-side] - \ghspic{skull} -\end{example} - -If you don't like the default size you can change it using this option: -\begin{options} - \keyval{scale}{factor}\Default{1} - Scales the pictogram. -\end{options} -The pictures are actually quite large. The default setting scales them by a -factor of $\frac{1}{20}$. -\begin{example}[side-by-side] - \ghspic[scale=2]{skull} -\end{example} - -If you want to use some specific \cs*{includegraphics} options, \eg, if -you want to rotate the pictogram for some reason, use this option: -\begin{options} - \keyval{includegraphics}{includegraphics keyvals} - Pass options to the underlying \cs*{includegraphics} command. -\end{options} -\begin{example} - \ghspic[includegraphics={angle=90}]{skull} -\end{example} - -\begin{longtable}{>{\ttfamily}ll>{\ttfamily}ll} - \caption{All available \ac{ghs} pictograms.\label{tab:ghs_pictograms}} \\ - \toprule - \normalfont\bfseries name & \bfseries pictogram & - \normalfont\bfseries name & \bfseries pictogram \\ - \midrule\endfirsthead - \toprule - \normalfont\bfseries name & \bfseries pictogram & - \normalfont\bfseries name & \bfseries pictogram \\ - \midrule\endhead - \bottomrule\endfoot - explos & \ghspic{explos} & explos-1 & \ghspic{explos-1} \\ - explos-2 & \ghspic{explos-2} & explos-3 & \ghspic{explos-3} \\ - explos-4 & \ghspic{explos-4} & explos-5 & \ghspic{explos-5} \\ - explos-6 & \ghspic{explos-6} & & \\ - flame & \ghspic{flame} & flame-2-white & \ghspic{flame-2-white} \\ - flame-2-black & \ghspic{flame-2-black} & flame-3-white & \ghspic{flame-3-white} \\ - flame-3-black & \ghspic{flame-3-black} & flame-4-1 & \ghspic{flame-4-1} \\ - flame-4-2 & \ghspic{flame-4-2} & - flame-4-3-white & \ghspic{flame-4-3-white} \\ - flame-4-3-black & \ghspic{flame-4-3-black} & - flame-5-2-white & \ghspic{flame-5-2-white} \\ - flame-5-2-black & \ghspic{flame-5-2-black} & & \\ - flame-O & \ghspic{flame-O} & flame-O-5-1 & \ghspic{flame-O-5-1} \\ - bottle & \ghspic{bottle} & bottle-2-black & \ghspic{bottle-2-white} \\ - bottle-2-white & \ghspic{bottle-2-black} & & \\ - acid & \ghspic{acid} & acid-8 & \ghspic{acid-8} \\ - skull & \ghspic{skull} & skull-2 & \ghspic{skull-2} \\ - skull-6 & \ghspic{skull-6} & & \\ - exclam & \ghspic{exclam} & & \\ - health & \ghspic{health} & & \\ - aqpol & \ghspic{aqpol} & & \\ -\end{longtable} - -\subsection{Picture Type Depending on Engine}\label{ssec:picture_type} -As you probably know you can't use every picture type with every compiler -engine. \pdfTeX{} in \acs{dvi} mode \emph{needs} \code{eps} pictures while -\pdfTeX{} in \acs{pdf} mode, \XeTeX{} and \LuaTeX{} convert \code{eps} -pictures into \code{pdf} files, given they have the rights to write in the -directory the pictures are saved in. - -However, the latter can include \code{jpg} and \code{png} without any -problems, while \pdfTeX{} in \acs{dvi} mode can't. - -To resolve this \ghsystem\ tests which engine is used and if \pdfTeX{} which -mode is used and then chooses either \code{eps} or \code{pdf} for the -pictograms. You are free to choose the picture type yourself with the option -\begin{options} - \keychoice{pic-type}{eps,pdf,jpg,png} - Choose the picture type. -\end{options} - -\section{Available Languages}\label{sec:ghsystem_language} -Right now the H and P statements are only available in English, German, -Italian and Spanish. The package adapts \chemmacros' option \option{language} -or if the option hasn't been used recognizes the language settings made with -\pkg{babel} or \pkg{polyglossia}. To be more precise: the language selected -at begin document is recognized. Later changes won't affect \ghsystem. If -you want to use different languages you have to use \ghsystem's language -option then. - -You can also choose the language explicitly. -\begin{options} - \keychoice{language}{english,german,italian,spanish}\Default{english} - Selects and loads language file. Falls back to \code{english} if the - chosen file doesn't exist. -\end{options} -\begin{example}[side-by-side] - \ghs{h}{201} - - \chemsetup[ghsystem]{language=german} - \ghs{h}{201} -\end{example} - -There is another alternative: -\begin{commands} - \command{loadghsystemlanguage}[\marg{language}] - \sinceversion{4.0}Load the language used by \ghsystem. -\end{commands} - -I will add other languages some time in future. This may take a while, -though. If you would be willing to contribute and write the statements of -another language please feel free to contact -me\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. I -would provide you with a template file, a \acs{pdf} containing the official -translations, and help to all your questions. - -\section{List of All Statements} -If for some reason you want to list all sentences you can use -\begin{commands} - \command{ghslistall}[\oarg{options}] - Print a table with all defined statements. -\end{commands} - -This command has a number of options to customize the table, which is created -with the \env{longtable} environment of the \pkg{longtable} package. -\begin{options} - \keyval{table-head-number}{text}\Default{Identifier} - The table head for the number. - \keyval{table-head-text}{text}\Default{Statement} - The table head for the statement. - \keyval{table-next-page}{text}\Default{continues on next page} - The hint for a next page. - \keyval{table-caption}{text}\Default{All H, EUH, and P Statements.} - The \meta{text} in \cs*{caption}\marg{text}. - \keyval{table-caption-short}{short text}\Default - The \meta{short text} in \cs*{caption}\oarg{short text}\marg{text}. - \keyval{table-label}{text}\Default{tab:ghs-hp-statements} - The label to refer to the table with \cs*{ref} and similar commands. - \keyval{table-row-sep}{dim}\Default{3pt} - The separation of the table rows. A \TeX\ dimension. - \keychoice{table-rules}{\default{default},booktabs,none}\Default{default} - The style of the horizontal rules in the table. \code{default} uses - \cs*{hline}, \code{booktabs} uses \cs*{toprule}, \cs*{midrule} and - \cs*{bottomrule}, resp. This option needs the \pkg{booktabs} package - which you have to load yourself then. - \keychoice{table-top-head-rule}{\default{default},booktabs,none}\Default{default} - Change top rule explicitly. - \keychoice{table-head-rule}{\default{default},booktabs,none}\Default{default} - Change rule below head explicitly. - \keychoice{table-foot-rule}{\default{default},booktabs,none}\Default{default} - Change foot rule explicitly. - \keychoice{table-last-foot-rule}{\default{default},booktabs,none}\Default{default} - Change last foot rule explicitly. -\end{options} - -The code below shows how table~\ref{tab:ghs-hp-statements} was created: -\begin{sourcecode} - \ghslistall[fill-in,table-rules=booktabs] -\end{sourcecode} - -\ghslistall[fill-in,table-rules=booktabs] - -\end{document} |