diff options
author | Karl Berry <karl@freefriends.org> | 2013-07-09 22:44:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-07-09 22:44:28 +0000 |
commit | e125f261f3433bb88672b645160d97b4ac2ea3f6 (patch) | |
tree | 1bd4b6e1451dc821f7178ebafe235826a1a8e0e8 /Master/texmf-dist | |
parent | 20abcceaa3fb6a4c4417a871772b4edc49bab39d (diff) |
upmethodology (7jul13)
git-svn-id: svn://tug.org/texlive/trunk@31148 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
21 files changed, 6626 insertions, 10967 deletions
diff --git a/Master/texmf-dist/doc/latex/chemmacros/README b/Master/texmf-dist/doc/latex/chemmacros/README index 8cf1cfdf0af..4e707a06fc2 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/README +++ b/Master/texmf-dist/doc/latex/chemmacros/README @@ -1,10 +1,12 @@ -------------------------------------------------------------------------- -the CHEMMACROS bundle v3.6b --> chemmacros package -> macros and commands for chemists --> chemformula package -> typeset chemical compounds and reactions --> ghsystem package -> typeset H & P statements and pictograms - from the globally harmonised system (GHS) -2013/03/19 +the CHEMMACROS bundle +-> chemmacros package v4.0 -> macros and commands for chemists +-> chemformula package v4.0 -> typeset chemical compounds and reactions +-> ghsystem package v4.0 -> typeset H & P statements and pictograms + from the globally harmonised system (GHS) +-> chemgreek package v0.1a -> handle mapping of upright greek letters to + the \chemalpha ... commands +2013/07/06 -------------------------------------------------------------------------- This bundle succeeds the chemmacros package which is now part of the bundle @@ -35,21 +37,27 @@ and the regarding files in it (*.def or *.eps,*.jpg,*png, or *.pdf respectively) in the _same_ directory as the style files. (probably something like $TEXMF/texmf/tex/latex/chemmacros/) -------------------------------------------------------------------------- -The chemmacros bundle consists of the files +The chemmacros bundle consists of the following files +package files: - chemmacros.sty, - chemformula.sty, - ghsystem.sty, - - chemmacros-version1.cfg, + - chemgreek.sty, + - chemmacros-version1.cfg +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, - - chemmacros_de.tex, chemmacros_de.pdf, - - README, - - 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 + - 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 feel free to contact me. ---------------------------------------------------------------------------
\ No newline at end of file +-------------------------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf Binary files differnew file mode 100644 index 00000000000..d998e09c4b7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex new file mode 100644 index 00000000000..fe4a075664b --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/chemformula_en.tex @@ -0,0 +1,1377 @@ +% arara: xelatex +% !arara: biber +% !arara: xelatex +% !arara: xelatex +\documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} +\docsetup{ + pkg = {[greek=newtx]chemmacros}, + language = en, + title = the \Chemmacros\ bundle, + subtitle = { + 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}}, + modules = true, + code-box = {skipabove=1ex,skipbelow=1ex}, + label = {}, + name = chemformula, + url = https://bitbucket.org/cgnieder/chemmacros/ +} + +\usepackage{chemfig,booktabs,cancel} +\usepackage[version=3]{mhchem} +\usepackage{fontspec} +\usepackage[oldstyle,proportional]{libertine} +\usepackage[libertine]{newtxmath} +\usepackage{libertinehologopatch} +\setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono} + +\cnpkgusecolorscheme{friendly} +\renewcommand*\othersectionlevelsformat[3]{% + \textcolor{main}{#3\autodot}\enskip} +\renewcommand*\partformat{% + \textcolor{main}{\partname~\thepart\autodot}} + +\usepackage{fnpct} +\usepackage[biblatex]{embrac} +\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] +\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] + +\pagestyle{headings} + +\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/font-spec={[Numbers=Lining]Linux Libertine O} +} +\colorlet{chemformula}{darkgray} + +\sisetup{ + detect-mode=false, + mode=text, + text-rm=\addfontfeatures{Numbers={Proportional,Lining}} +} + +\usepackage{filecontents} + +\begin{filecontents*}{\jobname.ist} + preamble "\\begin{theindex}\n Section titles are indicated \\textbf{bold}, + packages \\textsf{sans serif}, commands \\code{\\textbackslash\\textcolor{code}{brown}}, + options \\textcolor{key}{\\code{yellow}} and modules (only \\chemmacros) + \\textcolor{module}{\\code{blue}}.\\newline\n\n" + heading_prefix "{\\bfseries " + heading_suffix "\\hfil}\\nopagebreak\n" + headings_flag 1 + delim_0 "\\dotfill\\hyperpage{" + delim_1 "\\dotfill\\hyperpage{" + delim_2 "\\dotfill\\hyperpage{" + delim_r "}\\textendash\\hyperpage{" + delim_t "}" + suffix_2p "\\nohyperpage{\\,f.}" + suffix_3p "\\nohyperpage{\\,ff.}" +\end{filecontents*} + +\usepackage[backend=biber,style=alphabetic,maxbibnames=20]{biblatex} +\addbibresource{\jobname.bib} +\begin{filecontents*}{\jobname.bib} +@book{iupac:greenbook, + author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and + Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and + Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and + Michio Takami and Anders J Thor}, + title = {“Quantities, Symbols and Units in Physical Chemistry”, \acs{iupac} + Green Book}, + 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}, + 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} + +\pgfdeclaredecoration{penciline}{initial}{ + \state{initial}[ + width=+\pgfdecoratedinputsegmentremainingdistance, + auto corner on length=1mm + ]{ + \pgfpathcurveto% + {% From + \pgfqpoint + {\pgfdecoratedinputsegmentremainingdistance} + {\pgfdecorationsegmentamplitude} + } + {% Control 1 + \pgfmathrand + \pgfpointadd + {\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}} + {% + \pgfqpoint + {-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}% + {\pgfmathresult\pgfdecorationsegmentamplitude} + } + } + {%TO + \pgfpointadd + {\pgfpointdecoratedinputsegmentlast} + {\pgfpoint{1pt}{1pt}} + } + } + \state{final}{} +} +\tikzset{pencil/.style={decorate,decoration=penciline}} + +\TitlePicture{% + \ch[font-spec={Augie}]{ + 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 + -> + 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- + } + \redox(o1,o2)[red,pencil,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} + \redox(r1,r2)[blue,pencil,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} + +\addcmds{ + a, abinitio, AddRxnDesc, anti, aq, aqi, + b, ba, bond, bottomrule, bridge, + cancel, cd, cdot, ce, cee, celsius, centering, chemabove, Chemalpha, + Chembeta, Chemgamma, Chemdelta, ChemDelta, chemfig, chemname, Chemomega, + chemsetup, cip, cis, ch, clap, cnsetup, CNMR, color, cstack, cstsetup, + d, D, data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, + DeclareChemIUPAC, DeclareChemLatin, DeclareChemNMR, DeclareChemParticle, + DeclareChemPhase, DeclareChemReaction, DeclareChemState, DeclareInstance, + DeclareSIUnit, definecolor, delm, delp, Delta, Dfi, draw, + E, el, electronvolt, ElPot, endo, Enthalpy, enthalpy, Entropy, + footnotesize, fmch, fpch, fscrm, fscrp, + g, gas, ghs, ghslistall, ghspic, Gibbs, glqq, gram, grqq, + H, hapto, HNMR, Helmholtz, hertz, hspace, + includegraphics, insitu, intertext, invacuo, iupac, IUPAC, + J, joule, + Ka, Kb, kilo, Kw, + L, latin, lewis, Lewis, Lfi, listofreactions, lqd, ltn, + mch, mega, meta, metre, mhName, midrule, milli, mmHg, mole, + N, nano, nicefrac, newman, NMR, Nu, Nuc, num, numrange, + O, ominus, orbital, ortho, oplus, ox, OX, + p, P, para, pch, per, percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, + pH, phase, photon, pKa, pKb, pOH, pos, positron, Pot, prt, + R, Rad, redox, RenewChemArrow, RenewChemBond, RenewChemIUPAC, + RenewChemLatin, RenewChemNMR, RenewChemParticle, RenewChemPhase, + RenewChemState, renewtagform, rightarrow, + S, Sf, sample, scriptscriptstyle, scrm, scrp, second, setatomsep, + setbondoffset, setchemformula, sfrac, shorthandoff, ShowChemArrow, + ShowChemBond, si, SI, sisetup, sld, Sod, square, State, subsection, + textcolor, textendash, textsuperscript, tiny, toprule, trans, + upbeta, upeta, upgamma, + val, volt, vphantom, vspave, + w, xspace, Z +} + +\usepackage{imakeidx} +\indexsetup{othercode=\footnotesize} +\makeindex[columns=3,intoc,options={-sl \jobname.ist}] + +\newcommand*\Chemmacros{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemmacros% + }% +} +\providecommand*\chemmacros{{\scshape\textcolor{main}{chemmacros}}\xspace} + +\newcommand*\Chemformula{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemformula% + }% +} +\providecommand*\chemformula{{\scshape\textcolor{main}{chemformula}}\xspace} + +\newcommand*\Ghsystem{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + ghsystem% + }% +} +\providecommand*\ghsystem{{\scshape\textcolor{main}{ghsystem}}\xspace} + +\newcommand*\Chemgreek{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemgreek% + }% +} +\providecommand*\chemgreek{{\scshape\textcolor{main}{chemgreek}}\xspace} + +\renewcommand*\AmS{\hologo{AmS}} + +\newcommand*\Default[1]{% + \hfill\llap{% + \ifblank{#1} + {(initially~empty)} + {Default:~\code{#1}}% + }\newline +} + +\usepackage{marginnote,ragged2e} +\makeatletter +\providecommand*\sinceversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Introduced in version~#1}}% + \@esphack} +\providecommand*\changedversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Changed in version~#1}}% + \@esphack} + +\RenewDocumentCommand\CTANurl{O{macros/latex/contrib}m} + {% + on CTAN: % + \hyper@linkurl{#2}{http://mirrors.ctan.org/#1/#2/}% + } +\ExplSyntaxOn +\RenewDocumentCommand \paket { sO{macros/latex/contrib}m } + { + \paketfont { #3 } + \index { #3 @ \paketfont { #3 } } + \prop_if_in:NnF \g_cnpkgdoc_pakete_prop { #3 } + { + \prop_gput:Nnn \g_cnpkgdoc_pakete_prop { #3 } {} + \IfBooleanF { #1 } + { \footnote { \CTANurl[]{#3} } } + } + } +\ExplSyntaxOff +\makeatother + +\begin{document} + +\section{Introduction} +Probably every chemist using \LaTeXe\ is aware of the great \paket{mhchem} +package by Martin Hensel. There have always been some difficulties +intertwining it with \chemmacros, though. Also, some other minor points in +\paket{mhchem} always bothered me, but they hardly seemed enough for a new +package. They weren't even enough for a feature request to the \paket{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 \paket{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. + +\sinceversion{4.0}Since version 4.0, the \chemformula\ package can be used +independently from \chemmacros. This means that if you say +\begin{beispiel}[code only] + \usepackage{chemformula} +\end{beispiel} +then \chemmacros\ will not be loaded. The \chemmacros\ package, however, +\emph{will} load \chemformula. + +\section{Licence and Requirements} +Permission is granted to copy, distribute and/or modify this software under +the terms of the \LaTeX\ project public license (lppl) version 1.3 or later +(\url{http://www.latex-project.org/lppl.txt}). The package has the status +``maintained.'' + +The \chemformula\ package needs and thus loads the packages \paket*{expl3} +(from the \paket*{l3kernel}\footnote{\CTANurl{l3kernel}}), \paket*{xparse}, +\paket*{l3keys2e} and \paket*{xfrac} (from the +\paket*{l3packages}\footnote{\CTANurl{l3packages}}), +\paket*{tikz}\footnote{\CTANurl[graphics]{pgf}}, \paket{amsmath}, +\paket*{nicefrac} and \paket*{scrlfile} (from the +\KOMAScript\footnote{\CTANurl{koma-script}} bundle). + +\section{Setup} +All of \chemformula's options belong to \chemmacros' module +\textcolor{module}{\code{chemformula}}. This means they can be setup with +\begin{beispiel}[code only] + \chemsetup[chemformula]{<options>} or + \chemsetup{chemformula/<option1>,chemformula/<option2>} +\end{beispiel} +However, if you're using \chemformula\ as a standalone package the command +\cmd{chemsetup} is not available. This is why \chemformula\ also has its own +setup command: +\begin{beispiel}[code only] + \setchemformula{<options>} +\end{beispiel} + +\section{The Basic Principle} +\chemformula\ offers one main command. +\begin{beschreibung} + \Befehl{ch}[<options>]{<input>} +\end{beschreibung} +The usage will seem very familiar to you if you're familiar with \paket{mhchem}: +\begin{beispiel} + \ch{H2O} \\ + \ch{Sb2O3} \\ + \ch{H+} \\ + \ch{CrO4^2-} \\ + \ch{AgCl2-} \\ + \ch{[AgCl2]-} \\ + \ch{Y^{99}+} \\ + \ch{Y^{99+}} \\ + \ch{H2_{(aq)}} \\ + \ch{NO3-} \\ + \ch{(NH4)2S} \\ + \ch{^{227}_{90}Th+} \\ + $V_{\ch{H2O}}$ \\ + \ch{Ce^{IV}} \\ + \ch{KCr(SO4)2 * 12 H2O} +\end{beispiel} + +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{beschreibung} + \Befehl{ch}{part1 part2 part3 part4} +\end{beschreibung} +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{beispiel} + \ch{A + B ->[a] C} \\ + \ce{A + B ->[a] C} +\end{beispiel} + +This means that \cmd{ch}{2H2O} is recognized as a \emph{single} part, which in +this case is recognized as a compound. +\begin{beispiel} + \ch{2H2O} \\ + \ch{2 H2O} +\end{beispiel} +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 \lstinline+~+. However, since commands in most cases +gobble a space after them a input like \cmd{ch}{\textbackslash command ABC} +will be treated as a single part. If you want or need to divide them you need +to add an empty group: \cmd{ch}{\textbackslash command\{\} 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 \cmd{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 \textcolor{module}{\code{chemformula}} and can be set in different +ways: +\begin{beschreibung} + \Befehl{chemsetup}[chemformula]{<options>} (when loaded via \chemmacros) + \Befehl{chemsetup}{chemformula/<options>} (when loaded via \chemmacros) + \Befehl{setchemformula}{<options>} (independent from \chemmacros) +\end{beschreibung} + +\section{Stoichiometric Factors}\secidx{Stoichiometric Factors} +A stoichiometric factor may only contain of numbers and the signs +\lstinline+.,_/()+ +\begin{beispiel} + \ch{2} \\ + \ch{12} + + % decimals: + \ch{.5} \\ + \ch{5,75} + + % fractions: + \ch{3/2} \\ + \ch{1_1/2} + + % ``iupac'': + \ch{(1/2)} +\end{beispiel} + +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{beispiel}[code only] + this won't work but will result in an error: \ch{1/1_1} +\end{beispiel} + +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{beispiel} + \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} +\end{beispiel} +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{beschreibung} + \Option{decimal-marker}{<marker>}\Default{.} + The symbol to indicate the decimal. + \Option{frac-style}{math|xfrac|nicefrac}\Default{math} + Determines how fractions are displayed. + \Option{stoich-space}{<skip>}\Default{.1667em plus .0333em minus .0117em} + The space that is placed after the stoichiometric factor. A rubber + length. + \Option{stoich-paren-parse}{\default{true}|false}\Default{false} + If set to true stoichiometric factors enclosed by parentheses also are + parsed. +\end{beschreibung} +\begin{beispiel} + \ch[decimal-marker={,}]{3.5} \ch[decimal-marker={$\cdot$}]{3,5} +\end{beispiel} + +The option \key{frac-style}{xfrac} uses the \lstinline+\sfrac+ command of the +\paket{xfrac} package. The output strongly depends on the font you +use.\secidx[xfrac]{Stoichiometric Factors} +\begin{beispiel} + \ch[frac-style=xfrac]{3/2} \ch[frac-style=xfrac]{1_1/2} +\end{beispiel} +\chemformula\ defines the instance \lstinline=formula-text-frac= which you can +redefine to your needs. See the \paket{xfrac} documentation for further +information. The default definition is this: +\begin{beispiel}[code only] + \DeclareInstance{xfrac}{chemformula-text-frac}{text} + { + slash-left-kern = -.15em , + slash-right-kern = -.15em + } +\end{beispiel} +This document uses the font Linux Libertine~O and the following definition: +\begin{beispiel}[code only] + \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{beispiel} + +The option \key{frac-style}{nicefrac} uses the \lstinline+\nicefrac+ command +of the \paket{nicefrac} package.\secidx[nicefrac]{Stoichiometric Factors} +\begin{beispiel} + \ch[frac-style=nicefrac]{3/2} \ch[frac-style=nicefrac]{1_1/2} +\end{beispiel} + +The option \key{stoich-space} allows you to customize the space between +stoichiometric factor and the group following after +it.\secidx[space]{Stoichiometric Factors} +\begin{beispiel} + \ch{2 H2O} \\ + \ch[stoich-space=.3em]{2 H2O} +\end{beispiel} +\secidx*{Stoichiometric Factors} + +\section{Compounds}\label{ssec:compounds}\secidx{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{beispiel} + \ch{H2SO4} \\ + \ch{[Cu(NH3)4]^2+} +\end{beispiel} + +\subsection{Adducts}\secidx[adducts]{Compounds} +\chemformula\ has two identifiers which will create adducts. +\begin{beschreibung} + \Befehl{ch}{A.B}\newline \ch{A.B} + \Befehl{ch}{A*B}\newline \ch{A*B} +\end{beschreibung} +\begin{beispiel} + \ch{CaSO4.H2O} \\ + \ch{CaSO4*H2O} +\end{beispiel} +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{beispiel} + \ch{Na3PO4*12H2O} \\ + \ch{Na3PO4* 12 H2O} \\ + \ch{Na3PO4 * 12 H2O} +\end{beispiel} + +\subsection{Subscripts}\label{ssec:subscripts}\secidx[subscripts]{Compounds} +\emph{All} numbers in a compound are treated as subscripts. +\begin{beispiel} + \ch{H2SO4} +\end{beispiel} +If you want a letter to be a subscript you can use the math syntax: +\begin{beispiel} + \ch{A_nB_m} +\end{beispiel} +The subscript recognizes groups. You can also use math inside it. +\begin{beispiel} + \ch{A_{$n$}B_{$m$}} \\ + \ch{NaCl_{(aq)}} +\end{beispiel} + +\subsection{Commands}\secidx[commands]{Compounds} +Commands are allowed in a compound: +\begin{beispiel} + \ch{\textbf{A2}B3} \ch{A2\color{red}B3} +\end{beispiel} + +However, if the commands demand numbers as argument, \eg, space commands or +\chemmacros' \lstinline+\ox+ command the direct use will fail. This is +because the numbers are treated as subscripts \emph{before} the command +expands. +\begin{beispiel}[code only] + \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{beispiel} +See section~\ref{ssec:text} for a way around this. + +\subsection{Charges and Other Superscripts}\secidx[charges]{Compounds}\secidx[superscripts]{Compounds} +\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{beispiel} + \ch{A+B} \ch{AB+} \\ + \ch{A-B} \ch{AB-} +\end{beispiel} + +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{beispiel} + \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^*} +\end{beispiel} + +Ions and ion composites with more than one charge can be typeset quite as +easy: +\begin{beispiel} + \ch{SO4^2-} \ch{Ca^2+ SO4^2-} +\end{beispiel} + +\paragraph{Charge Commands}\secidx[superscripts!charge commands]{Compounds} +You don't need to use \cmd{mch} and related commands inside \cmd{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 +\cmd{ch}. +\begin{beispiel} + \chemsetup[option]{circled=all} + \ch{H+ + OH- <=> H2O} +\end{beispiel} + +\paragraph{Behaviour}\secidx[superscripts!behaviour]{Compounds} +The supercripts behave differently depending on their position in a compound, +if there are super- and subscripts following each other directly. +\begin{beispiel} + \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \\ + \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} \ch{B^{23}} \ch{B_{123}^{23}} \\ + \ch{^{123}_{23}B} \ch{{}^{123}_{23}B} \ch{_{23}^{123}B} \ch{B^{123}} \ch{B23^{123}} +\end{beispiel} +\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{zitat}[{\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{zitat} + +\subsection{Bonds}\label{ssec:bonds}\secidx[bonds]{Compounds} +\subsubsection{Native Bonds} +There are three kinds of what I will call ``native bonds'': +\begin{beispiel} + single: \ch{CH3-CH3} \\ + double: \ch{CH2=CH2} \\ + triple: \ch{CH+CH} +\end{beispiel} + +\subsubsection{Flexible Bonds} +\paragraph{Predefined Bonds} +In addition to the three native bonds there are a few more which can be called +by +\begin{beschreibung} + \Befehl{bond}{<bond name>} +\end{beschreibung} +The predefined bond types are shown in table~\ref{tab:bond_types}. + +\begin{table} + \centering + \caption{Bonds available with \protect\cmd{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{beispiel} + \ch{C\bond{sb}C\bond{db}C\bond{tp}C\bond{deloc}C\bond{tdeloc}C\bond{co>}C\bond{<co}C} +\end{beispiel} + +\paragraph{Own Bonds} +\chemformula\ offers commands to define own bond types: +\begin{beschreibung} + \Befehl{DeclareChemBond}{<name>}\ma{<code>} + \Befehl{RenewChemBond}{<name>}\ma{<code>} + \Befehl{DeclareChemBondAlias}{<new name>}\ma{<old name>} + \Befehl{ShowChemBond}{<name>} +\end{beschreibung} +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{beispiel}[code only] + \DeclareChemBond{single} + { \draw[chembond] (chemformula-bond-start) -- (chemformula-bond-end) ; } + \DeclareChemBond{coordright} + { \draw[chembond,butt cap->] (chemformula-bond-start) -- (chemformula-bond-end) ; } + \DeclareChemBondAlias{co>}{coordright} +\end{beispiel} +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{beispiel} + \usetikzlibrary{decorations.pathreplacing} + \makeatletter + \DeclareChemBond{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{beispiel} + +The last example showed you another macro: +\makeatletter\cmd{chemformula@bondlength}\makeatother. It only exists so you +can use it to access the bond length as set with \key{bond-length} +directly. + +\subsection{Customization}\secidx[customization]{Compounds}\label{ssec:compounds:customization} +These options allow you to customize the ouptut of the compounds: +\begin{beschreibung} + \Option{subscript-vshift}{<dim>}\Default{0pt} + Extra vertical shift of the subscripts. + \Option{subscript-style}{text|math}\Default{text} + Style that is used to typeset the subscripts. + \Option{charge-hshift}{<dim>}\Default{.25em} + Shift of superscripts when following a subscript.\label{desc:charge-hshift} + \Option{charge-vshift}{<dim>}\Default{0pt} + Extra vertical shift of the superscripts. + \Option{charge-style}{text|math}\Default{text} + Style that is used to typeset the superscripts. + \Option{adduct-space}{<dim>}\Default{.1333em} + Space to the left and the right of the adduct point. + \Option{bond-length}{<dim>}\Default{.5833em} + The length of the bonds. + \Option{bond-offset}{<dim>}\Default{.07em} + Space between bond and atoms. + \Option{bond-style}{<tikz>}\Default{} + \TikZ\ options for the bonds. + \Option{radical-style}{<tikz>}\Default{} + \TikZ\ options for the radical point. + \Option{radical-radius}{<dim>}\Default{.2ex} + The radius of the radical point. + \Option{radical-hshift}{<dim>}\Default{.15em} + Horizontal shift before the radical point is drawn. + \Option{radical-vshift}{<dim>}\Default{.5ex} + Vertical shift relative to the current baseline. + \Option{radical-space}{<dim>}\Default{.15em} + Horizontal shift after the radical point is drawn. +\end{beschreibung} + +Maybe you have noticed that charges of certain ions are shifted to the +right.\secidx[charges!shift]{Compounds} +\begin{beispiel} + \ch{SO4^2-} \ch{NH4+} \ch{Na+} +\end{beispiel} +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 \key{charge-hshift}. +\begin{beispiel} + \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ + \chemsetup[chemformula]{charge-hshift=.5ex} + \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ + \chemsetup[chemformula]{charge-hshift=.5pt} + \ch{SO4^2-} \ch{NH4+} \ch{Na+} +\end{beispiel} + +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 +\key{charge-hshift}{full}. +\begin{beispiel} + \ch[charge-hshift=0pt]{C5H11+} \ch[charge-hshift=0pt]{SO4^2-} \\ + \ch{C5H11+} \ch{SO4^2-} \\ + \ch[charge-hshift=1ex]{C5H11+} \ch[charge-hshift=1ex]{SO4^2-} \\ + \ch[charge-hshift=full]{C5H11+} \ch[charge-hshift=full]{SO4^2-} +\end{beispiel} + +If you don't want the charges to be typeset in text mode you can switch to +math mode: +\begin{beispiel} + \ch{M^x+} \ch{SO4^2-} \\ + \chemsetup[chemformula]{charge-style = math} + \ch{M^x+} \ch{SO4^2-} +\end{beispiel} + +The option \key{subscript-vshift} can be used to adjust the vertical shift of +the subscripts:\secidx[subscripts!shift]{Compounds} +\begin{beispiel} + \ch{H2SO4} \ch{Na3PO4} \\ + \chemsetup[chemformula]{subscript-vshift=.5ex} + \ch{H2SO4} \ch{Na3PO4} \\ + \chemsetup[chemformula]{subscript-vshift=-.2ex} + \ch{H2SO4} \ch{Na3PO4} +\end{beispiel} + +You can choose the mode subscripts are typeset in the same way as it is +possible for the charges: +\begin{beispiel} + \ch{A_nB_m} \ch{H2SO4} \\ + \chemsetup[chemformula]{subscript-style = math} + \ch{A_nB_m} \ch{H2SO4} +\end{beispiel} + +The option \key{adduct-space} sets the space left and right to the adduct +symbol $\cdot$. +\begin{beispiel} + \ch{Na3PO3*H2O} \\ + \chemsetup[chemformula]{adduct-space=.2em} + \ch{Na3PO3*H2O} +\end{beispiel} + +Changing the length of the bonds:\secidx[bonds!length]{Compounds} +\begin{beispiel} + \chemsetup[chemformula]{bond-length=4mm}% + single: \ch{CH3-CH3} \\ + double: \ch{CH2=CH2} \\ + triple: \ch{CH+CH} +\end{beispiel} + +You can change the distance between bond and atom, too: +\begin{beispiel} + \ch{H-H + N+N + O=O} \\ + \ch[bond-offset=1pt]{H-H + N+N + O=O} +\end{beispiel} + +\subsection{Standalone Formulae}\secidx[standalone]{Compounds} +\noindent\sinceversion{4.0}\chemformula\ offers a command that \emph{only + accepts} the \enquote{compound} input type: +\begin{beschreibung} + \Befehl{chcpd}[<options>]{<compound>} +\end{beschreibung} +\secidx*{Compounds} + +\section{Special Input Types}\secidx{Special Types} +There are some \enquote{special type} input groups. + +\subsection{Single Token Groups}\secidx[single token groups]{Special Types} +The first kind are groups which consist of only one token, namely of the +following ones: +\begin{beschreibung} + \Befehl{ch}{ + } \ch{ + }\newline + Creates the plus sign between compounds with space around it:\\ + \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} + \Befehl{ch}{ v } \ch{ v }\newline + Sign for precipitate: \cmd{ch}{BaSO4 v} \ch{BaSO4 v} + \Befehl{ch}{ \lstinline+^+ } \ch{ ^ }\newline + Sign for escaping gas\footnotemark: \cmd{ch}{\lstinline=H2 ^=} + \ch{H2 ^} +\end{beschreibung} +\footnotetext{Is this the correct English term? Please correct me if it isn't.} + +The space left and right of the plus sign can be set with this option: +\begin{beschreibung} + \Option{plus-space}{<skip>}\Default{.3em plus .1em minus .1em} + A rubber length. +\end{beschreibung} +\begin{beispiel} + \ch{A + B}\\ + \ch[plus-space=4pt]{A + B} +\end{beispiel} + +\subsection{Option Input}\secidx[option input]{Special Types} +Sometimes you might want to apply an option only to a part of a, say, +reaction. Of course you have the possibility to use \cmd{ch} several times. +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} +\end{beispiel} +This, however, interrupts the input in your source and \emph{may} mess with +the spacing. That's why there is an alternative: +\begin{beschreibung}\makeatletter + \Befehl{ch}{ @\{<options>\} }\newline + The options specified this way will be valid \emph{only} until the next + compound is set. +\end{beschreibung} +\begin{beispiel} + \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ + or of course:\\ + \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] + \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ + \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} +\end{beispiel} +\secidx*{Special Types} + +\section{Escaped Input}\secidx{Escaped Input} +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}\secidx[text]{Escaped Input} +If you put something between \lstinline+" "+ or \lstinline+' '+ then the input +will be treated as normal text, except that spaces are not allowed and have to +be input with \lstinline+~+. +\begin{beschreibung} + \Befehl{ch}{ "<escaped text>" } + \Befehl{ch}{ '<escaped text>' } +\end{beschreibung} +\begin{beispiel} + \ch{"\ox{2,Ca}" O} \\ + \ch{"\ldots\," Na + "\ldots\," Cl2 -> "\ldots\," NaCl} \\ + \ch{'A~->~B'} +\end{beispiel} +In many cases you won't need to escape the input. But when you get into +trouble when using a command inside \cmd{ch} try hiding it. + +\subsection{Math}\secidx[math]{Escaped Input} +If you especially want to input math you just enclose it with \lstinline+$ $+. +This output is different from the escaped text as it is followed by a space. +The reasoning behind this is that I assume math will mostly be used to replace +stoichiometric factors. +\begin{beschreibung} + \Befehl{ch}{ \string$<escaped math>\string$ } + \Befehl{ch}{ \string\(<escaped math>\string\) } +\end{beschreibung} +\begin{beispiel} + escaped text: \ch{"$x$" H2O} \\ + escaped math: \ch{$x$ H2O} \\ + also escaped math: \ch{\(x\) H2O} \\ + \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} +\end{beispiel} + +The space that is inserted after a math group can be edited: +\begin{beschreibung} + \Option{math-space}{<skip>}\Default{.1667em plus .0333em minus .0117em} + A rubber length. +\end{beschreibung} +\begin{beispiel} + \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ + \chemsetup[chemformula]{math-space=.25em} + \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ + \ch{$A->B$} +\end{beispiel} +\secidx*{Escaped Input} + +\section{Arrows}\label{sec:arrows}\secidx{Arrows} +\subsection{Arrow types}\secidx[types]{Arrows} +Arrows are input in the same intuitive way they are with \paket{mhchem}. +There are various different types: +\begin{beschreibung} + \Befehl{ch}{ -> } \ch{->}\newline + standard right arrow + \Befehl{ch}{ <- } \ch{<-}\newline + standard left arrow + \Befehl{ch}{ -/> } \ch{-/>}\newline + does not react (right) + \Befehl{ch}{ </- } \ch{}</-\newline + does not react (left) + \Befehl{ch}{ <-> } \ch{<->}\newline + resonance arrow + \Befehl{ch}{ <> } \ch{<>}\newline + reaction in both directions + \Befehl{ch}{ == } \ch{==}\newline + stoichiometric equation + \Befehl{ch}{ <=> } \ch{<=>}\newline + equilibrium arrow + \Befehl{ch}{ \lstinline+<=>>+ } \ch{<=>>}\newline + unbalanced equilibrium arrow to the right + \Befehl{ch}{ \lstinline+<<=>+ } \ch{<<=>}\newline + unbalanced equilibrium arrow to the left + \Befehl{ch}{ <o> } \ch{<o>}\newline + isolobal arrow +\end{beschreibung} +All these arrows are drawn with \TikZ. +\begin{beispiel} + \ch{H2 + Cl2 -> 2 HCl} \\ + \ch{H2O + CO3^2- <=> OH- + HCO3-} \\ + \ch{A <- B} \\ + \ch{\{[CH2=CH-CH2]- <-> [CH2-CH=CH2]- \}} \\ + \ch{A <> B} \\ + \ch{H+ + OH- <=>> H2O} \\ + \ch{2 NO2 <<=> N2O4} +\end{beispiel} + +% TODO: add description for \charrow + +\subsection{Labels}\secidx[labels]{Arrows} +The arrows take two optional arguments to label them. +\begin{beschreibung} + \Befehl{ch}{ ->[<above>][<below>] } +\end{beschreibung} +\begin{beispiel} + \ch{A ->[a] B} \\ + \ch{A ->[a][b] B} \\ + \ch{A ->[\SI{100}{\celsius}] B} +\end{beispiel} +The label text can be parsed seperately from the arrow. The recipe is easy: +leave blanks. +\begin{beispiel} + \ch{A ->[H2O] B} \\ + \ch{A ->[ H2O ] B} \\ + \ch{A ->[ "\ox{2,Ca}" F2 ] B} \\ + \ch{A ->[$\Delta$,~ \[H+ \]] B} +\end{beispiel} +% 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 should be produced using \cmd{[} and \cmd{]}. They keep their usual +meaning outside \cmd{ch}. These commands are necessary since the usual +grouping (\ie hiding the brackets inside curly brackets) doesn't work due to +the way \cmd{ch} reads its argument. +\begin{beispiel} + \ch{A ->[a] B} \\ + \ch{A ->[ab] B} \\ + \ch{A ->[abc] B} \\ + \ch{A ->[abc~abc] B} \\ + % needs the `chemfig' package: + \setatomsep{15pt} + \ch{A ->[ "\chemfig{-[:30]-[:-30]OH}" ] B} \\ + \ch{A ->[[]] B} vs. \ch{A ->[\[\]] B} +\end{beispiel} + +\subsection{Customization}\secidx[customization]{Arrows} +These are the options which enable you to customize the arrows: +\begin{beschreibung} + \Option{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}. + \Option{arrow-min-length}{<dim>}\Default{0pt} + The minimal length an error must have unless two times \key{arrow-offset} + plus the width of the label is larger. + \Option{arrow-yshift}{<dim>}\Default{0pt} + Shifts an arrow up (positive value) or down (negative value). + \Option{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. + \Option{compound-sep}{<dim>}\Default{.5em} + The space between compounds and the arrows. + \Option{label-offset}{<dim>}\Default{2pt} + The space between the labels and the arrows. + \Option{label-style}{<font command>}\Default{\cmd*{footnotesize}} + The relative font size of the labels. +\end{beschreibung} + +The following code shows the effect of the different options on the \lstinline+<=>>+ +arrow: +\begin{beispiel} + standard: \ch{A <=>>[x][y] B} \\ + longer: \ch[arrow-offset=12pt]{A <=>>[x][y] B} \\ + higher: \ch[arrow-yshift=2pt]{A <=>>[x][y] B} \\ + more balanced: \ch[arrow-ratio=.8]{A <=>>[x][y] B} \\ + labels further away: \ch[label-offset=4pt]{A <=>>[x][y] B} \\ + larger distance to compounds: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ + smaller labels: \ch[label-style=\tiny]{A <=>[x][y] B} +\end{beispiel} + +\subsection{Modify Arrow Types}\label{sec:arrows_modify}\secidx[types!modify]{Arrows} +The arrows are defined with the command +\begin{beschreibung} + \Befehl{DeclareChemArrow}{<tokens>}\ma{<tikz>} +\end{beschreibung} +\ma{<tokens>} is the sequence of tokens that is replaced with the actual arrow +code. For example the basic arrow is defined via +\begin{beispiel}[code only] + \DeclareChemArrow{->}{\draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ;} +\end{beispiel} +In order to define arrows yourself you need to know the basics of +\TikZ\footnote{Please see the \textsf{pgfmanual} for details.}. There are +some predefined coordinates you can and should use: +\begin{description} + \item[\code{(cf\_arrow\_start)}] The beginning of the arrow. + \item[\code{(cf\_arrow\_end)}] The end of the arrow. + \item[\code{(cf\_arrow\_mid)}] The mid of the arrow. + \item[\code{(cf\_arrow\_mid\_start)}] The beginning of the shorter arrow in + types like \lstinline+<=>>+. + \item[\code{(cf\_arrow\_mid\_end)}] The end of the shorter arrow in types like + \lstinline+<=>>+. + \item[\code{cf}, \code{left cf}, \code{right cf}] \chemformula's own arrow + heads. +\end{description} +\begin{beispiel} + \DeclareChemArrow{.>}{\draw[-cf,dotted,red] (cf_arrow_start) -- (cf_arrow_end);} + \DeclareChemArrow{n>}{\draw[-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{beispiel} +If you want to redefine an existing arrow there are two commands you can use: +\begin{beschreibung} + \Befehl{RenewChemArrow}{<tokens>}\ma{<tikz>} + \Befehl{ShowChemArrow}{<tokens>} +\end{beschreibung} +The second one gives the current definition, the first one redefines an existing +arrow. +\begin{beispiel} + \texttt{\ShowChemArrow{->}} \\ + \RenewChemArrow{->}{\draw[->,red] (cf_arrow_start) -- (cf_arrow_end) ;} + \texttt{\ShowChemArrow{->}} \\ + \ch{A -> B} +\end{beispiel} + +\subsection{Standalone Arrows}\secidx[standalone]{Arrows} +\noindent\sinceversion{4.0}\chemformula\ offers a command that \emph{only + accepts} the \enquote{arrow} input type: +\begin{beschreibung} + \Befehl{charrow}{<arrow>}\oa{<above>}\oa{<below>} +\end{beschreibung} +\secidx*{Arrows} + +\section{Names}\secidx{Names} +\subsection{Syntax}\secidx[syntax]{Names} +\chemformula\ has a built-in syntax to write text under a compound. In a way +it works very similar to the arrows. +\begin{beschreibung} + \Befehl{ch}{ !(<name>)( <formula> ) } +\end{beschreibung} +If an exclamation mark is followed by a pair of parentheses \chemformula\ will +parse it this way: +\begin{beispiel} + \ch{!(ethanol)( CH2CH2OH )} +\end{beispiel} +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{beispiel} + \ch{!(water)(H2O)} \quad + \ch{!( "\textcolor{blue}{water}" )( H2O )} \quad + \ch{!( $2n-1$ )( H2O )} \quad + \ch{!( H2O )( H2O )} \quad + \ch{!(oxonium)( H3O+ )} +\end{beispiel} +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{beispiel} + \ch{H2O~(!)} \\ + \ch{A!{}()} +\end{beispiel} + +% TODO add description of \chname command + +\subsection{Customization}\secidx[customization]{Names} +\chemformula\ provides two options to customize the output of the names: +\begin{beschreibung} + \Option{name-format}{<commands>}\Default{\cmd*{scriptsize}\cmd*{centering}} + The format of the name. This can be arbitrary input. + \Option{name-width}{<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{beschreibung} +\begin{beispiel} + \ch{!(acid)( H2SO4 ) -> B} \\ + \ch[name-format=\sffamily\small]{!(acid)( H2SO4 ) -> B} \\ + \ch[name-format=\scriptsize N:~]{!(acid)( H2SO4 ) -> B} \\ + \ch[name-width=3em,name-format=\scriptsize\raggedright]{!(acid)( H2SO4 ) -> B} +\end{beispiel} + +\subsection{Standalone Names}\secidx[standalone]{Names} +\noindent\sinceversion{4.0}\chemformula\ offers a command 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{beschreibung} + \Befehl{chname}\da{<under>}\da{<text>} +\end{beschreibung} +\secidx*{Names} + +\section{Format and Font}\secidx{Format and Font}\label{sec:format} +In the standard setting \chemformula\ doesn't make any default changes to the +font of the formula output. Let's take a look at a nonsense input which shows +all features: +\begin{beispiel} + \newcommand*\sample{% + \ch{H2C-C+C-CH=CH+ + CrO4^2- + <=>[x][y] + 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"} + } + \sample +\end{beispiel} +\newcommand*\sample{% + \ch{H2C-C+C-CH=CH+ + CrO4^2- + <=>[x][y] + 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"} +} + +Now we're going to change different aspects of the font a look what happens: +\begin{beispiel}[below] + \sffamily Hallo \sample \\ + \ttfamily Hallo \sample \normalfont \\ + \bfseries Hallo \sample \normalfont \\ + \itshape Hallo \sample +\end{beispiel} +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{beschreibung} + \Option{format}{<anything>}\Default{} + Adds arbitrary code before the output of \cmd{ch}. +\end{beschreibung} +\begin{beispiel} + \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{beispiel} + +You can also specifically change the fontfamily, fontseries and fontshape of +the output. +\begin{beschreibung} + \Option{font-family}{<family>}\Default{} + Changes the fontfamily of the output with + \lstinline+\fontfamily{<family>}\selectfont+. + \Option{font-series}{<series>}\Default{} + Changes the fontseries of the output with + \lstinline+\fontseries{<series>}\selectfont+. + \Option{font-shape}{<shape>}\Default{} + Changes the fontshape of the output with + \lstinline+\fontshape{<shape>}\selectfont+. +\end{beschreibung} +\begin{beispiel} + \chemsetup[chemformula]{font-series=bx} + Hallo \sample \\ + \sffamily Hallo \sample \normalfont \\ + \chemsetup[chemformula]{font-family=lmr,font-series=m} Hallo \sample \normalfont \\ + \itshape Hallo \sample +\end{beispiel} + +If you're using \XeLaTeX\ or \LuaLaTeX\ and have loaded \paket{fontspec} you +have the possibilty to set the font with it: +\begin{beschreibung} + \Option{font-spec}{\{<font>\}}\Default{} + or with options + \Option{font-spec}{\{[<options>]<font>\}} +\end{beschreibung} +\begin{beispiel} + \chemsetup[chemformula]{font-spec={Linux Biolinum O}} \sample \\ + \chemsetup[chemformula]{font-spec={Augie}} \sample \\ + \chemsetup[chemformula]{font-spec={Latin Modern Sans}} \sample \\ + \bfseries \sample \normalfont +\end{beispiel} +\secidx*{Format and Font} + +\section{Usage In Math Equations}\secidx{Math Environments} +The \cmd{ch} command can be used inside math equations. It recognizes +\lstinline+\\+ and \lstinline+&+ and passes them on. However, you can't use +the optional arguments of \lstinline+\\+ inside \cmd{ch}. +\begin{beispiel} + \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{beispiel} +\secidx*{Math Environments} + +\section{Further Examples} +This section presents some examples of a possible usage. + +\begin{beispiel} + \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{beispiel} + +\begin{beispiel} + \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{beispiel} + +\begin{beispiel} + \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{beispiel} + +\begin{beispiel} + \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{beispiel} + +\begin{beispiel} + % 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{beispiel} + +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{beispiel} + % 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{beispiel} + +\printbibliography + +{\catcode`\^=11 \catcode`\#=11 +\printindex} + +\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 differnew file mode 100644 index 00000000000..c049a7d9937 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex b/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex new file mode 100644 index 00000000000..fd4470c097a --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/chemgreek_en.tex @@ -0,0 +1,497 @@ +% arara: xelatex +% !arara: biber +% !arara: xelatex +% !arara: xelatex +\documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} +\docsetup{ + pkg = {[greek=math]chemmacros}, + language = en, + title = the \Chemmacros\ bundle, + subtitle = { + 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}}, + modules = true, + code-box = {skipabove=1ex,skipbelow=1ex}, + label = {}, + name = chemgreek, + url = https://bitbucket.org/cgnieder/chemmacros/ +} + +\usepackage{chemfig,booktabs,cancel} +\setlength\heavyrulewidth{1pt} +\setlength\lightrulewidth{.4pt} +\usepackage[version=3]{mhchem} +\usepackage{fontspec} +\usepackage[oldstyle,proportional]{libertine} +\usepackage[libertine]{newtxmath} +\usepackage{libertinehologopatch} +\setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono} + +\cnpkgusecolorscheme{friendly} +\renewcommand*\othersectionlevelsformat[3]{% + \textcolor{main}{#3\autodot}\enskip} +\renewcommand*\partformat{% + \textcolor{main}{\partname~\thepart\autodot}} + +\usepackage{fnpct} +\usepackage[biblatex]{embrac} +\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] +\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] + +\pagestyle{headings} + +\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/font-spec={[Numbers=Lining]Linux Libertine O} +} +\colorlet{chemformula}{darkgray} + +\sisetup{ + detect-mode=false, + mode=text, + text-rm=\addfontfeatures{Numbers={Proportional,Lining}} +} + +\usepackage{filecontents} + +\begin{filecontents*}{\jobname.ist} + preamble "\\begin{theindex}\n Section titles are indicated \\textbf{bold}, + packages \\textsf{sans serif}, commands \\code{\\textbackslash\\textcolor{code}{brown}}, + options \\textcolor{key}{\\code{yellow}} and modules (only \\chemmacros) + \\textcolor{module}{\\code{blue}}.\\newline\n\n" + heading_prefix "{\\bfseries " + heading_suffix "\\hfil}\\nopagebreak\n" + headings_flag 1 + delim_0 "\\dotfill\\hyperpage{" + delim_1 "\\dotfill\\hyperpage{" + delim_2 "\\dotfill\\hyperpage{" + delim_r "}\\textendash\\hyperpage{" + delim_t "}" + suffix_2p "\\nohyperpage{\\,f.}" + suffix_3p "\\nohyperpage{\\,ff.}" +\end{filecontents*} + +\usepackage[backend=biber,style=alphabetic,maxbibnames=20]{biblatex} +\addbibresource{\jobname.bib} +\begin{filecontents*}{\jobname.bib} +@book{iupac:greenbook, + author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and + Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and + Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and + Michio Takami and Anders J Thor}, + title = {“Quantities, Symbols and Units in Physical Chemistry”, \acs{iupac} + Green Book}, + 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}, + 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} + +\pgfdeclaredecoration{penciline}{initial}{ + \state{initial}[ + width=+\pgfdecoratedinputsegmentremainingdistance, + auto corner on length=1mm + ]{ + \pgfpathcurveto% + {% From + \pgfqpoint + {\pgfdecoratedinputsegmentremainingdistance} + {\pgfdecorationsegmentamplitude} + } + {% Control 1 + \pgfmathrand + \pgfpointadd + {\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}} + {% + \pgfqpoint + {-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}% + {\pgfmathresult\pgfdecorationsegmentamplitude} + } + } + {%TO + \pgfpointadd + {\pgfpointdecoratedinputsegmentlast} + {\pgfpoint{1pt}{1pt}} + } + } + \state{final}{} +} +\tikzset{pencil/.style={decorate,decoration=penciline}} + +\TitlePicture{% + \ch[font-spec={Augie}]{ + 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 + -> + 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- + } + \redox(o1,o2)[red,pencil,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} + \redox(r1,r2)[blue,pencil,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} + +\addcmds{ + a, abinitio, AddRxnDesc, anti, aq, aqi, + b, ba, bond, bottomrule, bridge, + cancel, cd, cdot, ce, cee, celsius, centering, changechemgreeksymbol, + chemabove, Chemalpha, Chembeta, Chemgamma, ChemGamma, Chemdelta, + ChemDelta, chemfig, chemname, Chemomega, Chemphi, ChemPhi, chemsetup, cip, + cis, ch, clap, cnsetup, CNMR, color, cstack, + cstsetup, + d, D, data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, + DeclareChemIUPAC, DeclareChemLatin, DeclareChemNMR, DeclareChemParticle, + DeclareChemPhase, DeclareChemReaction, DeclareChemState, DeclareInstance, + DeclareSIUnit, definecolor, delm, delp, Delta, Dfi, draw, + E, el, electronvolt, ElPot, endo, Enthalpy, enthalpy, Entropy, + footnotesize, fmch, fpch, fscrm, fscrp, + g, gas, ghs, ghslistall, ghspic, Gibbs, glqq, gram, grqq, + H, hapto, HNMR, Helmholtz, hertz, hspace, + includegraphics, insitu, intertext, invacuo, iupac, IUPAC, + J, joule, + Ka, Kb, kilo, Kw, + L, latin, lewis, Lewis, Lfi, listofreactions, lqd, ltn, + mch, mega, meta, metre, mhName, midrule, milli, mmHg, mole, + N, nano, nicefrac, newchemgreekmapping, newman, NMR, Nu, Nuc, num, numrange, + O, ominus, orbital, ortho, oplus, ox, OX, + p, P, para, pch, per, percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, + pH, phase, phi, Phi, photon, pKa, pKb, pOH, pos, positron, Pot, prt, + R, Rad, redox, RenewChemArrow, RenewChemBond, RenewChemIUPAC, + RenewChemLatin, RenewChemNMR, RenewChemParticle, RenewChemPhase, + RenewChemState, renewtagform, rightarrow, + S, Sf, sample, scriptscriptstyle, scrm, scrp, second, + selectchemgreekmapping, setatomsep, setbondoffset, setchemformula, sfrac, + shorthandoff, ShowChemArrow, ShowChemBond, si, SI, sisetup, sld, Sod, + square, State, subsection, + textcolor, textendash, textsuperscript, tiny, toprule, trans, + upbeta, upeta, upgamma, upphi, upPhi, Upphi, + val, volt, vphantom, vspave, + w, xspace, Z +} + +\usepackage{imakeidx} +\indexsetup{othercode=\footnotesize} +\makeindex[columns=3,intoc,options={-sl \jobname.ist}] + +\newcommand*\Chemmacros{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemmacros% + }% +} +\providecommand*\chemmacros{{\scshape\textcolor{main}{chemmacros}}\xspace} + +\newcommand*\Chemformula{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemformula% + }% +} +\providecommand*\chemformula{{\scshape\textcolor{main}{chemformula}}\xspace} + +\newcommand*\Ghsystem{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + ghsystem% + }% +} +\providecommand*\ghsystem{{\scshape\textcolor{main}{ghsystem}}\xspace} + +\newcommand*\Chemgreek{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemgreek% + }% +} +\providecommand*\chemgreek{{\scshape\textcolor{main}{chemgreek}}\xspace} + +\renewcommand*\AmS{\hologo{AmS}} + +\newcommand*\Default[1]{% + \hfill\llap{% + \ifblank{#1} + {(initially~empty)} + {Default:~\code{#1}}% + }\newline +} + +\usepackage{marginnote,ragged2e} +\makeatletter +\providecommand*\sinceversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Introduced in version~#1}}% + \@esphack} +\providecommand*\changedversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Changed in version~#1}}% + \@esphack} + +\RenewDocumentCommand\CTANurl{O{macros/latex/contrib}m} + {% + on CTAN: % + \hyper@linkurl{#2}{http://mirrors.ctan.org/#1/#2/}% + } +\ExplSyntaxOn +\RenewDocumentCommand \paket { sO{macros/latex/contrib}m } + { + \paketfont { #3 } + \index { #3 @ \paketfont { #3 } } + \prop_if_in:NnF \g_cnpkgdoc_pakete_prop { #3 } + { + \prop_gput:Nnn \g_cnpkgdoc_pakete_prop { #3 } {} + \IfBooleanF { #1 } + { \footnote { \CTANurl[]{#3} } } + } + } +\ExplSyntaxOff +\makeatother + +\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 +\paket{textgreek}, \paket{upgreek}, \paket[fonts]{newtx} or +\paket[fonts]{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. + +\section{Licence and Requirements} +Permission is granted to copy, distribute and/or modify this software under +the terms of the \LaTeX\ project public license (lppl) version 1.3 or later +(\url{http://www.latex-project.org/lppl.txt}). The package has the status +``maintained.'' + +\chemgreek\ loads the following packages: +\paket*{expl3}\footnote{\CTANurl{l3kernel}} and +\paket*{xparse}\footnote{\CTANurl{l3packages}}. + +\section{Define Mappings} + +\chemgreek's main commands are: +\begin{beschreibung} + \Befehl{newchemgreekmapping}{<name>}\ma{<mapping list>}\newline + Add a new mapping to \chemgreek. Issue an error if it already exists. + \Befehl{renewchemgreekmapping}{<name>}\ma{<mapping list>}\newline + Renew a \chemgreek\ mapping. Issue an error if it doesn't exist yet. + \Befehl{newchemgreekmapping}{<name>}\ma{<mapping list>}\newline + Declare a new mapping to \chemgreek. If the mapping already exists it + will be overwritten. +\end{beschreibung} + +The command \cmd{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{beispiel}[code only] +\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{beispiel} + +There \emph{must} be 24 pairs of entries, i.e., a complete mapping! Those +entries are the ones that will be used by the interface macros. For each +letter a pair \cmd{Chemalpha}/\cmd{ChemAlpha} is defined that uses the entries +of the currently active mapping. That means there are 48 (robust) macros +defined each beginning with \cmd*{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{beispiel} + Default mapping: \Chemphi\ and \ChemPhi, $\phi$ and $\Phi$ +\end{beispiel} + +\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}. + +\begin{table}[hbp] + \centering + \begin{tabular}{>{\ttfamily}ll} + \toprule + \tablehead{mapping} & \tablehead{package} \\ + \midrule + default & --- \\ + var-default & --- \\ + textgreek & \paket*{textgreek} \\ + upgreek & \paket*{upgreek} \\ + newtx & \paket*{newtxmath} \\ + kpfonts & \paket*{kpfonts} \\ + \bottomrule + \end{tabular} + \caption{Predefined mappings.} + \label{tab:mappings} +\end{table} + +A mapping is selected and activated with one of the following commands: +\begin{beschreibung} + \Befehl{activatechemgreekmapping}*[<options>]{<name>}\newline + This commands selects and activates the mapping \code{<name>}. If the + star variant is used also the package \code{<name>} is loaded with options + \code{<options>}. This obviously only makes sense if the package name is + the same as the mapping name. The command can only be used in the + document preamble. + \Befehl{selectchemgreekmapping}{<name>} + This commands selects and activates the mapping \code{<name>}. A required + package has to be loaded additionally the usual way via \cmd*{usepackage} + or \cmd*{RequirePackage}. The command can be used throughout the + document. +\end{beschreibung} + +\begin{beispiel} + % requires the `newtxmath' package to be loaded: + \Chemphi\ and \ChemPhi, $\phi$ and $\Phi$\par + \selectchemgreekmapping{newtx} + \Chemphi\ and \ChemPhi, $\upphi$ and $\upPhi$ +\end{beispiel} + +\section{Changing a Specific Symbol in an Existing Mapping} +If you should want to change a specifig 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{beschreibung} + \Befehl{changechemgreeksymbol}{<mapping name>}\ma{upper|lower}\ma{<entry + name>}\ma{<entry>}\newline + Changes the \code{upper}- or \code{lower}case entry \code{<entry name>} in + the mapping \code{<mapping name>}. +\end{beschreibung} + +In order to activate the change you need the (re-) activate the affected +mapping afterwards: +\begin{beispiel} + \changechemgreeksymbol{default}{lower}{alpha}{xxx} + \selectchemgreekmapping{default} + \Chemalpha +\end{beispiel} + +\appendix + +\printindex + +\end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.pdf Binary files differdeleted file mode 100644 index d1f6d89a1db..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.tex deleted file mode 100644 index d9363e0dadb..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_de.tex +++ /dev/null @@ -1,3544 +0,0 @@ -% arara: xelatex -% arara: biber -% arara: xelatex -% arara: xelatex -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ----------------------------------------------------------------------------- -% - the CHEMMACROS bundle -% - chemmacros_de.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. -% ----------------------------------------------------------------------------- -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% if you want to compile this documentation -% a) you'll need the document class `cnpkgdoc' which you can get here: -% https://bitbucket.org/cgnieder/cnpkgdoc/ -% the class is licensed LPPL 1.3 or later -% b) you need the following compilation order: -% > xelatex chemmacros_de (2 or probably 3 times) -% > biber chemmacros_de -% > xelatex chemmacros_de (2 times) -% -% -\documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} -\docsetup{ - pkg = chemmacros, - title = Das \Chemmacros-Bundle, - language = de, - subtitle = {Pakete \Chemmacros, \Chemformula\ und \Ghsystem}, - modules = true, - code-box = {skipabove=1ex,skipbelow=1ex}, - label = {}, -} - -\usepackage{chemfig,upgreek,textgreek,booktabs,cancel} -\usepackage[version=3]{mhchem} -\usepackage{hologo} -\newcommand*\pdfTeX{\hologo{pdfTeX}} -\newcommand*\XeTeX{\hologo{XeTeX}} -\newcommand*\LuaTeX{\hologo{LuaTeX}} -\newcommand*\XeLaTeX{\hologo{XeLaTeX}} -\newcommand*\LuaLaTeX{\hologo{LuaLaTeX}} - -\usepackage{fnpct} -\usepackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\pagestyle{headings} - -\usepackage{acro} -\acsetup{long-format=\scshape} -\DeclareAcronym{ghs}{ - short = GHS , - long = Globally Harmonized System of Classification and Labelling of Chemicals -} -\DeclareAcronym{eu}{ - short = EU , - long = European Union -} -\DeclareAcronym{iupac}{ - short = IUPAC , - long = International Union of Pure and Applied Chemistry -} -\DeclareAcronym{UN}{ - short = UN , - long = United Nations -} -\DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - format = \scshape -} -\DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - format = \scshape -} - -\chemsetup[option]{synchronize,language=german} -\colorlet{chemformula}{darkgray} - -\sisetup{ - detect-mode=false, - mode=text, - text-rm=\addfontfeatures{Numbers={Proportional,Lining}} -} - -\usepackage{filecontents} - -\begin{filecontents*}{\jobname.ist} - preamble "\\begin{theindex}\n Überschriften werden \\textbf{fett}, Pakete - \\textsf{serifenlos}, Befehle \\code{\\textbackslash\\textcolor{code}{braun}}, - Optionen \\textcolor{key}{\\code{grün}} und Module (nur \\chemmacros) - \\textcolor{module}{\\code{rot}} gesetzt.\\newline\n\n" - heading_prefix "{\\bfseries " - heading_suffix "\\hfil}\\nopagebreak\n" - headings_flag 1 - delim_0 "\\dotfill\\hyperpage{" - delim_1 "\\dotfill\\hyperpage{" - delim_2 "\\dotfill\\hyperpage{" - delim_r "}\\textendash\\hyperpage{" - delim_t "}" - suffix_2p "\\nohyperpage{\\,f.}" - suffix_3p "\\nohyperpage{\\,ff.}" -\end{filecontents*} - -\usepackage[backend=biber,style=alphabetic,maxbibnames=20]{biblatex} -\addbibresource{\jobname.bib} -\begin{filecontents*}{\jobname.bib} -@book{iupac:greenbook, - author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and - Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and - Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and - Michio Takami and Anders J Thor}, - title = {“Quantities, Symbols and Units in Physical Chemistry”, \ac{iupac} Green - Book}, - edition = {3rd Edition. 2nd Printing}, - year = {2008}, - publisher = { \ac{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”, \ac{iupac} Red Book}, - year = {2005}, - publisher = { \ac{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 - } - -\newcommand*\chemformula{{\scshape\textcolor{cnpkgblue}{chemformula}}\xspace} -\newcommand*\ghsystem{{\scshape\textcolor{cnpkgblue}{ghsystem}}\xspace} - -\newcommand*\Chemmacros{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemmacros}} -\newcommand*\Chemformula{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemformula}} -\newcommand*\Ghsystem{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}ghsystem}} - -\renewcommand*\AmS{\hologo{AmS}} - -\TitlePicture{% - \ch[font-spec={[Color=chemformula]Augie}]{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- } - \redox(o1,o2)[red,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} - \redox(r1,r2)[blue,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} - -\addcmds{ - a,abinitio,AddRxnDesc,anti,aq,aqi, - b,ba,bond,bottomrule,bridge, - cancel,cd,cdot,ce,cee,celsius,centering,chemabove,Chemalpha,Chembeta,Chemgamma, - Chemdelta,ChemDelta,chemfig,chemname,Chemomega,chemsetup,cip,cis,ch,cnsetup, - CNMR,color,cstsetup, - d,D,data,DeclareChemArrow,DeclareChemBond,DeclareChemBondAlias,DeclareChemIUPAC, - DeclareChemLatin,DeclareChemNMR,DeclareChemParticle,DeclareChemPhase, - DeclareChemReaction,DeclareChemState,DeclareInstance,DeclareSIUnit,definecolor, - delm,delp,Delta,Dfi,draw, - E,el,electronvolt,ElPot,endo,Enthalpy,enthalpy,Entropy, - footnotesize,fmch,fpch,fscrm,fscrp, - g,gas,ghs,ghslistall,ghspic,Gibbs,glqq,gram,grqq, - H,hapto,HNMR,Helmholtz,hertz,hspace, - includegraphics,insitu,intertext,invacuo,iupac,IUPAC,J,joule, - Ka,Kb,kilo,Kw, - L,latin,lewis,Lewis,Lfi,listofreactions,lqd,ltn, - mch,mega,meta,metre,mhName,midrule,milli,mmHg,mole, - N,nano,nicefrac,newman,NMR,Nu,Nuc,num,numrange, - O,ominus,orbital,ortho,oplus,ox,OX, - p,P,para,pch,per,percent,pgfarrowsdeclarealias,pgfarrowsrenewalias,pH,phase, - photon,pKa,pKb,pOH,pos,positron,Pot,prt, - R,Rad,redox,RenewChemArrow,RenewChemBond,RenewChemIUPAC,RenewChemLatin,RenewChemNMR, - RenewChemParticle,RenewChemPhase,RenewChemState,renewtagform,rightarrow, - S,Sf,sample,scriptscriptstyle,scrm,scrp,second,setatomsep,setbondoffset,sfrac, - shorthandoff,ShowChemArrow,ShowChemBond,si,SI,sisetup,sld,Sod,square,State, - subsection, - textcolor,textendash,textsuperscript,tiny,toprule,trans, - upbeta,upeta,upgamma, - val,volt,vphantom,vspave, - w,xspace,Z} - -\usepackage{imakeidx} -\indexsetup{othercode=\footnotesize} -\makeindex[columns=3,intoc,options={-sl \jobname.ist}] - -\begin{document} -\chemsetup[chemformula]{ - font-spec = - {[Color=chemformula,Numbers={Proportional,Lining}]Latin Modern Sans} -} -\def\glqq{„} -\def\grqq{“} - -\part{Bevor es los geht}\secidx{BEVOR ES LOS GEHT} -\section{Lizenz, Voraussetzungen und README} -Das \chemmacros-Bundle steht unter der \LaTeX\ Project Public License (LPPL) Version -1.3 oder später (\url{http://www.latex-project.org/lppl.txt}) und hat den Status -„maintained“. - -Das \chemmacros-Bundle benötigt aktuelle Versionen der \paket{l3kernel}- und -\paket{l3packages}-Bundles. Außerdem werden die Pakete \paket{siunitx}, -\paket{mathtools}, \paket{bm}, \paket{nicefrac} und \paket{environ} sowie -\paket*{tikz}\footnote{CTAN: \href{http://www.ctan.org/pkg/pgf/}{pgf}} und die -\TikZ libraries \code{calc} und \code{arrows} benötigt. - -Die Paketoption \key{bpchem} (Abschnitt \ref{sec:optionen}) benötigt \paket{bpchem}, -die Paketoption \key{xspace} benötigt \paket{xspace} und die Paketoption -\key{method}{mhchem} benötigt \paket{mhchem}. - -Mit v3.0 wurde das \chemmacros-Paket mit den neuen Paketen \chemformula und \ghsystem -gebündelt. \chemformula ist eine Alternative zu \paket{mhchem}. Das führte zu -einigen internen Änderungen bei \chemmacros. Gleichzeitig wurde die Dokumentation -komplett überarbeitet. - -Vielleicht erinnern Sie Sich, dass \chemmacros' Optionen alle verschiedenen Modulen -angehören, siehe Abschnitt \ref{sec:setup} für weitere Informationen. Sie werden -in den linken Rand geschrieben, wenn die Option das erste Mal erwähnt wird. Abschnitt -\ref{sec:overview} listet alle Optionen von \chemmacros und ihre Module auf. In -diesem Dokument werden Optionen \textcolor{key}{\code{grün}} und Module -\textcolor{module}{\code{rot}} dargestellt. - -Das Paket \ghsystem benötigt die Pakete \chemmacros, \paket{tabu}, \paket{longtable}, -\paket{ifpdf} und \paket{graphicx}. - -\achtung{Es gibt einige veraltete Befehle und Optionen, die in dieser Dokumentation -nicht mehr beschrieben werden. Um Kompatibilität mit älteren Dokumenten zu -gewährleisten, sind sie immer noch definiert. Diese Befehle geben eine Warnung aus. -In Zukunft könnten sie nicht mehr definiert sein.} - -\section{Motivation und Hintergrund} -\chemmacros entstand vor einigen Jahren als wachsende Liste von Makros, die ich -häufig verwendete. Ich kann mich nicht mehr genau erinnern, wann und warum ich -entschied, sie als Paket zu veröffentlichen. Nun \textendash\ hier ist es und ich -hoffe, Sie werden das eine oder andere ebenfalls nützlich finden. - -Die Makros und ihre Funktionsweise haben sich im Laufe der Zeit leicht verändert. -Es sind außerdem eine ganze Reihe hinzugekommen. Insgesamt hat sich mit der Zeit -vieles vereinheitlicht und es sind viele Anpassungsmöglichkeiten hinzugekommen. - -Wohl fast jeder Chemiker, der \LaTeX\ für seine Dokumente verwendet, dürfte das -großartige Paket \paket{mhchem} von Martin Hensel kennen. Es gab immer ein paar -Schwierigkeiten, \paket{mhchem} und \chemmacros zur Zusammenarbeit zu bewegen. -Ein paar Kleinigkeiten in \paket{mhchem} haben mich zudem immer gestört, aber sie -schienen nicht genug für ein neues Paket. Noch nicht einmal genug, um ein -\enquote{feature request} an den Autoren von \paket{mhchem} zu senden. Die -Herausforderung und der Spaß, ein neues Paket zu erschaffen, sowie der Wunsch nach -größtmöglicher Flexibilität führten so doch noch zu \chemformula. - -\chemformula funktioniert sehr ähnlich wie \paket{mhchem}, ist aber strenger was -das Eingeben von Verbindungen, stöchiometrischen Faktoren und Pfeilen angeht. -Gleichzeitig bietet \chemformula ein paar Möglichkeiten, den Output anzupassen, -die \paket{mhchem} nicht bietet. Da \chemformula als Alternative zu \paket{mhchem} -gedacht ist, bietet \chemmacros eine Option, mit der Sie zwischen \paket{mhchem} -und \chemformula wählen können. - -Als Chemiker wissen Sie vermutlich, dass die \acl{UN} das \ac{ghs} als weltweiten -Ersatz für die zahlreichen ähnlichen aber doch verschiedenen Systeme der einzelnen -Länder entwickelt haben. Obwohl es noch nicht in allen Ländern umgesetzt -wurde~\cite{unece:ghsystem_implementation}, ist das nur eine Frage der Zeit. -Das Paket \ghsystem gibt Ihnen nun die Möglichkeit, alle \enquote{hazard and -precautionary statements} auf einfache Weise einzugeben und aufzurufen. Die Sätze -wurden der EU-Verordnung 1272/2008 entnommen~\cite{eu:ghsystem_regulation}. - -Ich hoffe, folgende vier Punkte in diesem Bundle umgesetzt zu haben: -\begin{itemize} - \item intuitive Verwendung, vor allem im Hinblick auf die Syntax der Befehle - \item die Befehle sollen nicht nur das Schreiben erleichtern sondern auch den - Quelltext besser lesbar machen, indem er semantisch logischer wird - (\lstinline=\ortho-dichlorobenzene= kann man leichter lesen und verstehen als - \lstinline=\textsl{o}-dichlorobenzene=) - \item so große Flexibilität und so viele Anpassungsmöglichkeiten wie möglich, - damit jeder Anwender die Befehle nach eigenen Bedürfnissen anpassen kann. - \item mit \ac{iupac} konforme Voreinstellungen -\end{itemize} -Vor allem der letzte Punkt benötigte zwar einige Schubser von Anwendern\footnote{% -Vielen Dank an Dr.~Paul~King!}, um die richtigen Einstellungen an vielen Stellen -zu bekommen. Wenn Ihnen etwas auf\-fällt, das nicht der \ac{iupac}-Empfehlung -entspricht\footnote{Das gilt nicht für den \cmd{ox}-Befehl. Die \ac{iupac}-Fassung dazu -ist \cmd[oxa]{ox*}.}, würde ich mich über eine E-Mail sehr freuen! - -Bei einem Paket dieser Größe mit alten und neuen Teilen (die man noch als in der -Beta-Phase befindlich betrachten muss) ist es unvermeidbar, dass es Fehler und Bugs -gibt. Ich bin sehr daran interessiert, dieses Paket zu korrigieren und verbessern, -daher eine Bitte: wenn Ihnen etwas auf{}fällt, das Sie stört, egal wie geringfügig -es erscheint, senden Sie mir bitte eine E-Mail und ich werde sehen, was ich tun -kann. Besonders interessiert bin ich an Feedback zu \chemformula (siehe -Teil~\ref{part:chemformula}) und \ghsystem (siehe Teil~\ref{part:ghsystem}), freue -mich aber natürlich auch über Feedback zu jedem anderen Teil des Bundles. - -\section{Installation und Laden des Bundles}\secidx{Laden des Bundles}\secidx{Installation} -Das Bundle enthält drei Style-Dateien\footnote{Die mit der Endung \code{sty}.}, -einem Ordner namens \code{language/}, der die Sprach-De\-fi\-ni\-tions-Dateien für -\ac{ghs} enthält (Endung \code{def}) und einem Ordner \code{pictures/}, der \code{eps}-, -\code{jpg}-, \code{pdf} und \code{png}-Dateien enthält (die \ac{ghs} Piktogramme). -Wenn Sie das Bundle von Hand installieren, \emph{bitte achten Sie darauf, die Ordner -\code{language/} und \code{pictures/} in den \emph{gleichen} Ordner wie die -Style-Dateien zu kopieren}. - -Das Laden von \chemmacros via -\begin{beispiel}[code only] - \usepackage{chemmacros} % `chemmacros', `chemformula' and `ghsystem' are loaded -\end{beispiel} -wird ebenso \chemformula und \ghsystem laden. Sie können jedoch \chemmacros davon -abhalten, \ghsystem zu laden: -\begin{beispiel}[code only] - \usepackage[ghsystem=false]{chemmacros} % `chemmacros' and `chemformula' are loaded -\end{beispiel} -Das Laden von \chemformula kann nicht verhindert werden, da \chemmacros und -\chemformula miteinander interagieren. - -Das explizite Laden von \chemformula \bzw\ \ghsystem ist möglich und wird -\chemmacros in jedem Fall laden, falls das noch nicht geschehen ist. Dadurch -laden sie sich implizit gegenseitig. -\begin{beispiel}[code only] - \usepackage{chemformula} - or - \usepackage{ghsystem} -\end{beispiel} - -Es wird jedoch empfohlen, lediglich \lstinline=\usepackage{chemmacros}= zu -verwenden und die gewünschten Optionen mit \lstinline=\chemsetup= vorzunehmen -(siehe auch Abschnitt \ref{sec:setup}). -\secidx*{Installation}\secidx*{Laden des Bundles} - -\section{Paketoptionen}\label{sec:optionen}\secidx{Paketoptionen} -\chemmacros hat einige Optionen. Sie alle folgen einen Schlüssel/Wert-Prinzip: -\begin{beispiel}[code only] - \usepackage[option1 = <value1>, option2 = <value2>]{chemmacros} -\end{beispiel} -Die meisten können auch ohne Wert verwendet werden -(\lstinline+\usepackage[option]{chemmacros}+). Sie verwenden dann den -\default{unter\-stri\-che\-nen} Wert. - -Sowohl \chemformula als auch \ghsystem haben keine eigenen Paketoptionen. Wenn Sie -sie explizit laden, verpuffen alle als Paketoptionen gegebenen Optionen. Sie können -dann nur mit dem Setup-Befehl gesetzt werden. -\begin{beschreibung} - % bpchem - \option[option]{bpchem}{\default{true}|false} Diese Option lädt \paket{bpchem} - und passt das Layout von \cmd{NMR} den \paket{bpchem}-Befehlen \lstinline+\HNMR+ - und \lstinline+\CNMR+ an. Default = \code{false} - % circled - \option[option]{circled}{\default{formal}|all|none} \chemmacros unterscheidet - zwischen zwei Typen von Ladungen\footnote{Vielen Dank an Christoph Schäfer, - der mich darauf aufmerksam machte, dass v1.1 die Ladungen zu nachlässig behandelte!}: - reale ($+/-$) und formale (\fplus/\fminus) Ladungen. Die Option \code{formal} - unterscheidet zwischen ihnen, \code{none} stellt alle ohne Umkreisung dar, - \code{all} umkreist alle. Default = \code{formal} - % circletype - \option[option]{circletype}{\default{chem}|math} Diese Option schaltet zwischen - zwei Darstellungsmöglichkeiten für formale Ladungen hin und her: \cmd{fplus} - \fplus\ und \lstinline+$\oplus$+ $\oplus$. Default = \code{chem} - % cmversion - \option[option]{cmversion}{1|2|bundle} Diese Option stellt die Definition einiger - Befehle wieder her, so dass Dokumente, die mit v1.* gesetzt wurden, Korrekt - kompilieren. Default = \code{bundle}. Eigentlich sind \code{2} und \code{bundle} - Aliase. Diese Option kann nur in der Präambel gesetzt werden. - % ghsystem - \option[option]{ghsystem}{\default{true}|false} Das Paket \ghsystem abschalten. - Die Einstellung \key{ghs}{false} wird das Laden von \ghsystem unterbinden. - Default = \code{true} - % greek - \option[option]{greek}{auto|math|textgreek|\default{upgreek}} Diese Option bestimmt, - wie die Buchstaben \cmd{Chemalpha} und seine Verwandten dargestellt werden. - Siehe Seite~\pageref{desc:upgreek} für weitere Informationen. Diese Option - kann nur in der Präambel gesetzt werden. Bitte beachten Sie, dass diese - Option weder \paket{upgreek} noch \paket{textgreek} lädt! Sie bestimmt - lediglich welches verwendet wird, falls es geladen wurde. Wenn Sie beispielsweise - \code{upgreek} wählen, müssen Sie auch das entsprechende Paket laden. - Default = \code{auto} - % iupac - \option[option]{iupac}{auto|restricted|strict} Einstellen, wie die Nomenklatur-Befehle - definiert werden. Siehe Seite~\pageref{desc:iupac}. Default = \code{auto} - % language - \option[option]{language}{american|british|english|french|german|italian|ngerman} - Sprachspezifische Einstellungen laden. \code{english}, \code{american} und - \code{british} sind Aliase, ebenso \code{german} und \code{ngerman}. Diese - Option kann nur in der Präambel gesetzt werden. Default = \code{english} - % method - \option[option]{method}{\default{chemformula}|mhchem} Sie können wählen, ob - \chemmacros \paket{mhchem} oder \chemformula für die Reaktionsumgebungen - (siehe Abschnitt~\ref{sec:reactions}) und die Teilchen (siehe - Abschnitt~\ref{sec:teilchen}) verwendet. Default = \code{chemformula}. Diese - Option kann nur in der Präambel gesetzt werden. - % Nu - \option[option]{Nu}{\default{chemmacros}|mathspec} Das Paket \paket{mathspec} - definiert ebenfalls ein Makro \cmd{Nu}. Diese Option entscheidet, welche - Definition gilt, siehe Seite~\pageref{Nu}. Default = \code{chemmacros}. Diese - Option kann nur in der Präambel gesetzt werden. - % strict - \option[option]{strict}{\default{true}|false} Die Einstellung \key{strict}{true} - wird alle Warnungen in Fehlermeldungen ändern. Default = \code{false} - % synchronize - \option[option]{synchronize}{\default{true}|false} Mit der Einstellung \code{true} - wird \chemmacros die Schrifteinstellungen von \chemformula übernehmen, falls - \chemformula als Methode gewählt wurde. Default = \code{false}. Um diese Option - zu demonstrieren, wurde dieses Dokument mit \key{synchronize}{true} und der - \chemformula Einstellung - \lstinline+\chemsetup[chemformula]{font-spec={[Color=darkgray]Latin Modern Sans}}+ - gesetzt. - % xspace - \option[option]{xspace}{\default{true}|false} Mit dieser Option werden die - meisten Makros mit einem \lstinline+\xspace+ definiert. Default = \code{true} -\end{beschreibung} -\secidx*{Paketoptionen} - -\section{Setup}\label{sec:setup}\secidx{Setup} -Zahlreiche der Befehle von \chemmacros, \chemformula und \ghsystem haben -Schlüssel/Wert-Paare als Optionen, mit denen sie angepasst werden können. Meistens -können sie als (optionales) Argument des entsprechenden Befehls verwendet werden. -Meistens können Sie auch mit dem \cmd{chemsetup} Befehl verwendet werden. -\begin{beschreibung} - \Befehl{chemsetup}[<module>]{<key> = <value>} oder - \Befehl{chemsetup}{<module>/<key> = <value>} -\end{beschreibung} -Die Optionen gehören alle zu einem Modul, das anzeigt, auf welchen Befehl sie -sich auswirken. Wenn eine Option vorgestellt wird, wird das dazugehörige Modul -in den linken Rand geschrieben. Sie können die Optionen mit \cmd{chemsetup} auf -zwei Weisen verwenden, wie oben dargestellt. - -Die Paketoptionen können ebenfalls als Optionen betrachtet werden, die zum Modul -\textcolor{module}{\ttfamily option} gehören. Das bedeutet, sie können auch mit -\cmd{chemsetup} aufgerufen werden. -\begin{beispiel} - \chemsetup[option]{circled=none}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup[option]{circled=formal}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup[option]{circletype=math}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup{option/circletype=chem,option/circled=all}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup{option/circletype=math}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt -\end{beispiel} -Optionen, die \emph{keinem} Modul angehören, können \emph{nicht} mit -\cmd{chemsetup} verwendet werden! - -Alle Optionen von \chemformula gehören dem Modul \textcolor{module}{\code{chemformula}} -an und alle Optionen von \ghsystem gehören dem Modul \textcolor{module}{\code{ghs}} -an. -\secidx*{Setup} - -\section{Spracheinstellungen}\label{sec:languages}\secidx{Spracheinstellung} -\subsection{Unterstützte Sprachen} -Durch die Wahl der Option -\begin{beispiel}[code only] - \chemsetup[option]{language=<language>} -\end{beispiel} -kann eine der folgenden Sprachen gewählt werden: \code{american}, \code{british}, -\code{english}, \code{french}, \code{german}, \code{italian} und \code{ngerman}. -Die Sprachen \code{american}, \code{british}, \code{english} sind Aliase, ebenso -die Sprachen \code{german} und \code{ngerman}. - -Übersetzt werden -\begin{itemize} - \item Die Überschrift der Liste der Reaktionen. - \item Die Einträge bei der Liste der Reaktionen. - \item Die H- und P-Sätze. -\end{itemize} - -\achtung{Bitte beachten Sie, dass die \ac{ghs}-Sätze nicht in allen Sprachen angeboten -werden, siehe auch Abschnitt~\ref{sec:ghsystem_language}.} - -\subsection{Besonderheiten} -\subsubsection{Deutsch} -Bei der Sprachwahl \code{german/ngerman} werden zusätzlich die Phasen-Befehle -\cmd{sld}, \cmd{lqd} und \cmd{pKa} übersetzt. - -\subsubsection{Italienisch} -\DeclareChemIUPAC{\ter}{\textit{ter}}\DeclareChemIUPAC{\sin}{\textit{sin}}% -Bei der Sprachwahl \code{italian} werden zusätzliche IUPAC-Befehle definiert: -\begin{beschreibung} - \befehl{ter} \iupac{\ter} - \befehl{sin} \iupac{\sin} -\end{beschreibung} -\secidx*{Spracheinstellung} - -\section{Neues}\secidx{Neues} -\subsection{Version 3.3} -\begin{itemize} - \item Ab Version 3.3 gibt es die Umgebung \env{experimental}{}, siehe - Abschnitt~\ref{sec:spektroskopie}, die mit einigen neuen Befehlen und Optionen - verwendet werden kann, um Messdaten konsistent darzustellen. - \item Die Umgebung \env{reaction}{} und ihre Verwandten können nun mit - \lstinline+\label+, \lstinline+\ref+ und \lstinline+\intertext+ umgehen, siehe - Abschnitt~\ref{sec:reactions}. - \item Die Paketoptionen \key{german} und \key{ngerman} entfallen, dafür gibt es - die neue Option \key{language}, siehe Seite~\pageref{key:option_language} und - Abschnitt~\ref{sec:languages} ab Seite~\pageref{sec:languages}. - \item Die Paketoption \key{upgreek} wurde umbenannt in \key{greek}. - \item Die \code{\textbackslash\textcolor{code}{Chem<greekletter>}}-Befehle wurden - um einige Buchstaben erweitert, siehe Abschnitt \ref{sec:teilchen}. -\end{itemize} - -\subsection{Version 3.3a} -\begin{itemize} - \item Die IUPAC-Befehle \cmd{hapto} und \cmd{bridge} sind neu. - \item Die H- und P-Sätze sind jetzt auch auf italienisch verfügbar. -\end{itemize} - -\subsection{Verison 3.3d} -\begin{itemize} - \item \code{pdf}-Versionen der \ac{ghs}-Piktogramme. - \item Neue Voreinstellungen für Bindungslänge und Bindungs-Offset, siehe Seite - \pageref{ssec:compounds:customization}. - \item Neue Option \key{bond-style}, siehe Seite~\pageref{ssec:compounds:customization}. - \item neue Option \key{cip-kern}, siehe Seite~\pageref{par:cip} -\end{itemize} - -\subsection{Version 3.4} -\begin{itemize} - \item \chemmacros bekam ein italienisches Manual, vielen herzlichen Dank an Jonas - Rivetti, der sich nicht nur freiwillig meldete, die H- \&\ P-Sätze zu übersetzen, - sondern auch diese Dokumentation! - \item der Befehl \cmd{bond}, der es ermöglicht, andere als Einfach-, Doppel- und - Dreifachbindungen zu verwenden, siehe Abschnitt~\ref{ssec:bonds}. Dieses Feature - wollte ich schon lange einbauen! - \item ein paar Änderungen am Aussehen des Radikalpunktes und neue Optionen, um es - anzupassen, siehe Abschnitt~\ref{ssec:compounds:customization}. -\end{itemize} - -\subsection{Versionen 3.5 und 3.6} -\begin{itemize} - \item Zeilenumbrüche vor und nach Bindungen in Formeln sind nicht mehr möglich. - \item Zeilenumbrüche nach Pfeilen in Formeln sind erlaubt. - \item Einige der horizontalen Leerräume in Formeln haben jetzt dehnbare Anteile. - \item In Formeln ist geschützte Methe-EIngabe jetzt auch mit \cmd*{(} und - \cmd*{)} möglich. - \item Neue Optionen: \key{radical-vshift}, \key{radical-hshift} und - \key{radical-space} erlauben Feinkontrolle über den Radikalpunkt. - \item In stöchiometrischen Faktoren wird eine führende Null hinzugefügt, wenn - sie fehlt. - \item Neue Option: \key{stoich-paren-parse}. - \item Zahlreiche interne Änderungen am Code. - \item Neue Option: \key{arrow-min-length}. -\end{itemize} -\secidx*{Neues}\secidx*{BEVOR ES LOS GEHT} - -\part{\texorpdfstring{\Chemmacros}{chemmacros}}\secidx{CHEMMACROS} -\section{Teilchen, Ionen und Symbole}\label{sec:teilchen}\secidx{Teilchen, Ionen und Symbole} -\subsection{Vordefiniert}\secidx[vordefiniert]{Teilchen, Ionen und Symbole} -\chemmacros definiert einige einfache Makros, um häufig verwendete Teilchen und -Symbole darzustellen. Bitte beachten Sie, dass sie unterschiedlich dargestellt -werden, je nach dem, welche Paketoptionen Sie verwenden. Diese Befehle können -auch im Mathematikmodus eingesetzt werden. -\begin{beschreibung} - \befehl{Hpl} \Hpl (Proton) - \befehl{Hyd} \Hyd (Hydroxid) - \befehl{HtO} \HtO (Oxoniumion) (\textbf{H} \textbf{t}hree \textbf{O}) - \befehl{water} \water - \befehl{el} \el (Elektron) - \befehl{prt} \prt (Proton) - \befehl{ntr} \ntr (Neutron) - \befehl{Nu} \Nu (Nukleophil). Das Paket \paket{mathspec} definiert ebenfalls - ein Makro \cmd{Nu}. Wenn Sie die Paketoption \key[option]{Nu}{mathspec} wählen, - definiert \chemmacros stattdessen \cmd{Nuc}\label{Nu}. - \befehl{El} \El (Elektrophil) - \befehl{ba} \ba (Base) - \befehl{fplus} \fplus - \befehl{fminus} \fminus - \befehl{transitionstatesymbol} \transitionstatesymbol - \befehl{standardstate} \standardstate. Dieses Symbol wird nur dann von \chemmacros - bereitgestellt, wenn das Paket \paket{chemstyle} nicht geladen wurde. Die Idee - ist von dort ausgeliehen\footnote{Vielen Dank an den Paketautoren - \href{http://www.texdev.net/}{Joseph Wright}.}. - \befehl{Chemalpha} \Chemalpha - \befehl{Chembeta} \Chembeta - \befehl{Chemgamma} \Chemgamma - \befehl{Chemdelta} \Chemdelta - \befehl{Chemepsilon} \Chemepsilon - \befehl{Chemeta} \Chemeta - \befehl{Chemkappa} \Chemkappa - \befehl{Chemmu} \Chemmu - \befehl{Chemnu} \Chemnu - \befehl{Chemrho} \Chemrho - \befehl{Chempi} \Chempi - \befehl{Chemsigma} \Chemsigma - \befehl{Chemomega} \Chemomega - \befehl{ChemDelta} \ChemDelta -\end{beschreibung} - -\achtung{Der Befehl \cmd{Rad} wird nicht mehr bereitgestellt!} - -Die beiden Teilchen \cmd{Nu} und \cmd{ba} können angepasst werden. Dafür verwenden -Sie die Option -\begin{beschreibung} - \Option[particle]{elpair}{false|\default{dots}|dash} -\end{beschreibung} -Sie hat nur dann Auswirkungen, wenn das Paket \paket{chemfig} geladen wurde, da -sie dessen Befehl \lstinline+\Lewis+ verwendet. -\begin{beispiel} - % needs package `chemfig' - \ba[elpair] \Nu[elpair=dash] - - \chemsetup[particle]{elpair} - \ba \Nu -\end{beispiel} - -\label{desc:upgreek}Die griechischen Buchstaben sind keine neu definierten Zeichen -sondern werden abhängig von den Paketen, die sie geladen haben, definiert. Die -Default-Version entspricht den entsprechenden kursiven „Mathematik“-Buchstaben. -Wenn Sie das Paket \paket{textgreek} geladen haben, werden dessen Buchstaben verwendet. -Wenn Sie das Paket \paket{upgreek} geladen haben, werden dessen Buchstaben verwendet. -Diese Dokumentation verwendet \paket{upgreek}. Haben Sie sowohl \paket{textgreek} -als auch \paket{upgreek} geladen haben, wird \paket{upgreek} verwendet. - -Wenn Sie nicht wollen, dass \chemmacros automatisch wählt, sondern selbst entscheiden -wollen, verwenden Sie die Paketoption \key[option]{greek}. Tabelle~\ref{tab:upgreek_mode} -zeigt die verschiedenen Varianten einiger Buchstaben. - -\begin{table}[h] - \centering - \begin{tabular}{lccc}\toprule - & math & upgreek & textgreek \\\midrule - \cmd{Chemalpha} & $\alpha$ & $\upalpha$ & \textalpha \\ - \cmd{Chembeta} & $\beta$ & $\upbeta$ & \textbeta \\ - \cmd{ChemDelta} & $\Delta$ & $\Updelta$ & \textDelta \\ \bottomrule - \end{tabular} - \caption{Die griechischen Buchstaben}\label{tab:upgreek_mode} -\end{table} - -Der Grund dafür, dass \chemmacros diese Makros überhaupt definiert, ist \ac{iupac}-Konformität. -\ac{iupac} empfiehlt, aufrechte griechische Buchstaben in der Nomenklatur verwenden. - -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,9]{iupac:greenbook}}}] - Greek letters are used in systematic organic, inorganic, macromolecular and - biochemical nomenclature. These should be roman (upright), since they are not - symbols for physical quantities. -\end{zitat} - -\chemmacros verwendet diese Befehle nun, um Nomenklatur-Befehle zu definieren, siehe -Seite~\pageref{par:greek_letters}. - -\subsection{Eigene Teilchen definieren}\secidx[eigene]{Teilchen, Ionen und Symbole} -Manchmal kann es sicherlich nützlich sein, andere Teilchen als Makro zur Verfügung -zu haben, etwa \lstinline+\positron+ oder \lstinline+\photon+. Mit diesem Befehl -kann das einfach erreicht werden: -\begin{beschreibung} - \Befehl{DeclareChemParticle}{<cmd>}\ma{<definition>} - \Befehl{RenewChemParticle}{<cmd>}\ma{<definition>} -\end{beschreibung} -Abhängig von der \key{method}, die Sie als Option gewählt haben, wird die -\code{<definition>} entweder mit \paket{mhchem} oder mit \chemformula erfolgen. -Das Teilchen verhält sich wie die vordefinierten mit einer Ausnahme: das Teilchen, -das auf diese Weise definiert wurde, gehorcht der Option \key{circled} nur, wenn -Sie \key{method}{chemformula} gewählt haben. Wenn Sie mit \key{method}{mhchem} -formale Ladungen wollen, müssen Sie \chemmacros' Befehle (siehe -Abschnitt~\ref{sec:ladungen}) explizit einsetzen. -\begin{beispiel} - % uses the `upgreek' package - \DeclareChemParticle{\positron}{$\upbeta$+} - \DeclareChemParticle{\photon}{$\upgamma$} - \RenewChemParticle{\el}{$\upbeta$-} - \positron\ \photon\ \el -\end{beispiel} -\cmd{DeclareChemParticle} definiert das Teilchen nur dann, wenn \code{<cmd>} noch -nicht existiert. Andernfalls wird \chemmacros entweder eine Warnung oder einen -Fehler ausgeben, abhängig von der Option \key{strict}. \cmd{RenewChemParticle} -definiert ein Teilchen \emph{nur}, wenn \code{<cmd>} schon existiert und gibt -andernfalls eine Warnung/einen Fehler. -\secidx*{Teilchen, Ionen und Symbole} - -\section{Nomenklatur, Stereodeskriptoren und lateinische Ausdrücke}\label{sec:stereo} -\subsection{IUPAC-Namen}\secidx{IUPAC-Namen} -Ähnlich wie das Paket \paket{bpchem} stellt \chemmacros einen Befehl\footnote{Die -Idee und die Umsetzung stammt aus dem Paket \paket*{bpchem} von Bjørn Pedersen.} -bereit, um \ac{iupac}-Namen zu setzen. Wieso ist das nützlich? \ac{iupac}-Namen können -sehr lang werden. So lang, dass sie auch mal über mehr als zwei Zeilen gehen können, -vor allem in zweispaltigen Dokumenten. Das bedeutet, sie müssen sich mehr als -einmal umbrechen dürfen. Dabei hilft folgender Befehl: -\begin{beschreibung} - \befehl{iupac}{<IUPAC name>} Innerhalb dieses Befehls werden {\catcode`\|=11\cmd{|}} - und \cmd{-} verwendet, um Umbruchstellen oder einen umbrechenden Bindestrich - anzugeben. {\catcode`\^=11\cmd{^}} kann als Abkürzung für\\ - \lstinline=\textsuperscript= eingesetzt werden. -\end{beschreibung} -\begin{beispiel} - \begin{minipage}{.4\linewidth} - \iupac{Tetra\|cyclo[2.2.2.1\^{1,4}]\-un\|decane-2\-dodecyl\-5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)} - \end{minipage} -\end{beispiel} -Der Befehl \cmd{iupac} ist dennoch mehr ein semantischer Befehl. Meistens kann man -(beinahe) dasselbe erreichen, indem man \cmd{-} anstelle von {\catcode`\|=11\cmd{|}} -verwendet, \code{-} anstelle von \cmd{-} und \lstinline=\textsuperscript= anstelle -von {\catcode`\^=11\cmd{^}}. - -Es gibt subtile Unterschiede: \cmd{-} fügt einen kleinen Leerraum vor dem Bindestrich -ein und entfernt etwas Raum danach. Der Befehl {\catcode`\|=11\cmd{|}} verhindert -nicht nur Ligaturen, sondern fügt ebenfalls einen kleinen Leerraum ein. -\begin{beispiel} - \huge\iupac{2,4\-Di\|chlor\|pentan} \\ - 2,4-Dichlorpentan -\end{beispiel} - -Die eingefügten Leerräume können angepasst werden: -\begin{beschreibung} - \option[iupac]{hyphen-pre-space}{<dim>} Default = \code{.01em} - \option[iupac]{hyphen-post-space}{<dim>} Default = \code{-.03em} - \option[iupac]{break-space}{<dim>} Default = \code{.01em} -\end{beschreibung} - -Der Befehl \cmd{iupac} dient noch einem anderen Zweck. Unabhängig von der -Paketoption \key[option]{iupac} sind alle Befehle, die in diesem Abschnitt -vorgestellt werden, \emph{innerhalb} von \cmd{iupac} immer definiert. Eine ganze -Reihe der Nomenklatur-Befehle haben sehr allgemeine Namen: \cmd{meta}, \cmd{D}, -\cmd{E}, \cmd{L}, \cmd{R}, \cmd{S}, \cmd{trans} und so weiter. Das bedeutet, -dass sie entweder schon definiert sind (\cmd{L} \L) oder leicht von anderen -Paketen oder Klassen definiert werden (das Paket \paket{cool} definiert zum -Beispiel sowohl \cmd{D} als auch \cmd{E}). Um Ihnen Kontrolle darüber zu geben, -welche Befehle wie definiert sind, gibt es die Paketoption -\key[option]{iupac}\label{desc:iupac}. Sie hat drei Modi: -\begin{itemize} - \item \key{iupac}{auto}: wenn der Befehl \emph{nicht} von einem Paket oder einer - Klasse, die sie verwenden, definiert wird, ist er generell verfügbar, sonst nur - \emph{innerhalb} von \cmd{iupac}. - \item \key{iupac}{restricted}: alle Nomenklatur-Befehle sind \emph{nur} innerhalb - von \cmd{iupac} definiert. Wenn sie von einem anderen Paket definiert sind, sind - sie natürlich außerhalb verfügbar. Ansonsten sind sie außerhalb nicht definiert. - \item \key{iupac}{strict}: \chemmacros überschreibt jede bestehende Definition und - macht die Befehle im ganzen Dokument verfügbar. Sie können natürlich (nur nach - \lstinline=\begin{document}=) umdefiniert werden. Sie behalten dann die - Nomenklatur-Bedeutung innerhalb von \cmd{iupac}. -\end{itemize} -Tabelle~\ref{tab:iupac_modes} demonstriert die verschiedenen Modi. - -\begin{table}[h] - \centering - \begin{tabular}{lccc}\toprule - & auto & restricted & strict \\\midrule - \lstinline=\L= & \L & \L & \iupac{\L} \\ - \lstinline=\iupac{\L}= & \iupac{\L} & \iupac{\L} & \iupac{\L} \\ - \lstinline=\D= & \D & -- & \D \\ - \lstinline=\iupac{\D}= & \iupac{\D} & \iupac{\D} & \iupac{\D} \\\bottomrule - \end{tabular} - \caption{Demonstration der verschiedenen \protect\key{iupac}-Modi.}\label{tab:iupac_modes} -\end{table} - -\subsubsection{Vordefinierte Befehle}\secidx[vordefiniert]{IUPAC-Namen}\secidx{Stereodeskriptoren und Nomenklatur} -\paragraph{Griechische Buchstaben}\label{par:greek_letters}\secidx[griechische Buchstaben]{IUPAC-Namen} -Griechische Buchstaben in Verbindungsnamen werden aufrecht geschrieben. Dafür gibt -es die Pakete \paket{upgreek} und \paket{textgreek}. Wenn Sie eines davon geladen -haben, werden die folgenden Buchstaben aufrecht geschrieben: -\begin{beschreibung} - \befehl{a} \iupac{\a} - \befehl{b} \iupac{\b} - \befehl{g} \iupac{\g} - \befehl{d} \iupac{\d} - \befehl{k} \iupac{\k} - \befehl{m} \iupac{\m} - \befehl{n} \iupac{\n} - \befehl{w} \iupac{\w} -\end{beschreibung} -\begin{beispiel} - \iupac{5\a\-androstan\-3\b\-ol} \\ - \iupac{\a\-(tri\|chloro\|methyl)\-\w\-chloro\|poly(1,4\-phenylene\|methylene)} -\end{beispiel} - -\paragraph{Heteroatome und addierter Wasserstoff}\secidx[Heteroatome]{IUPAC-Namen} -Bindungen an Heteroatome und addierter Wasserstoff werden durch kursive Buchstaben -dargestellt \cite{iupac:greenbook}. \chemmacros definiert ein paar Abkürzungen -dafür: -\begin{beschreibung} - \befehl{H} \iupac{\H} - \befehl{O} \iupac{\O} - \befehl{N} \iupac{\N} - \befehl{Sf} \iupac{\Sf} - \befehl{P} \iupac{\P} -\end{beschreibung} -\begin{beispiel} - \iupac{\N\-methyl\|benz\|amide} \\ - \iupac{3\H\-pyrrole} \\ - \iupac{\O\-ethyl hexanethioate} -\end{beispiel} - -\paragraph{Cahn-Ingold-Prelog}\index{Cahn-Ingold-Prelog}\secidx[Cahn-Ingold-Prelog]{IUPAC-Namen}\label{par:cip} -\begin{beschreibung} - \befehl{cip}{<conf>} \zB: \cmd{cip}{R,S} \cip{R,S} - \befehl{R} \iupac{\R} - \befehl{S} \iupac{\S} -\end{beschreibung} -Da der Befehl \cmd{S} schon eine andere Bedeutung hat (\S), ist er in der -Voreinstellung nur innerhalb \cmd{iupac} verfügbar. - -Sowohl diese Befehle als auch die entgegen/zusammen-Deskriptoren erhalten etwas -Kerning nach der schließenden Klammer. Der betrag kann durch folgende Option geändert -werden: -\begin{beschreibung} - \option[iupac]{cip-kern}{<dim>} Betrag des Kernings nach der schließenden Klammer. - Default = \code{.075em} -\end{beschreibung} - -\paragraph{Fischer}\index{Fischer}\secidx[Fischer]{IUPAC-Namen} -\begin{beschreibung} - \befehl{D} \iupac{\D} - \befehl{L} \iupac{\L} -\end{beschreibung} -Da der Befehl \cmd{L} schon eine andere Bedeutung hat (\L), ist er in der Voreinstellung -nur innerhalb \cmd{iupac} verfügbar. - -\paragraph{cis/trans, zusammen/entgegen, syn/anti \& tert}\index{tert}\secidx[tert]{IUPAC-Namen}\index{cis/trans}\secidx[cis/trans]{IUPAC-Namen}\index{zusammen/entgegen}\secidx[zusammen/entgegen]{IUPAC-Namen}\secidx[syn/anti]{IUPAC Namen} -\begin{beschreibung} - \befehl{cis} \cis - \befehl{trans} \trans - \befehl{Z} \Z - \befehl{E} \E - \befehl{syn} \syn - \befehl{anti} \anti - \befehl{tert} \tert -\end{beschreibung} -Das Paket \paket{cool} beispielsweise definiert die Befehle \cmd{E} und \cmd{D} -ebenfalls. Wenn Sie es laden, ist die \chemmacros-Version in der Voreinstellung -nur innerhalb von \cmd{iupac} verfügbar. - -\paragraph{ortho/meta/para}\index{ortho/meta/para}\secidx[ortho/meta/para]{IUPAC-Namen} -\begin{beschreibung} - \befehl{ortho} \ortho - \befehl{meta} \meta - \befehl{para} \para -\end{beschreibung} - -\paragraph{Absolute Konfiguration}\index{Absolute Konfiguration} (verwendet -\TikZ) -\begin{beschreibung} - \befehl{Rconf}[<letter>] \cmd{Rconf}: \Rconf \quad\cmd{Rconf}[]: \Rconf[] - \befehl{Sconf}[<letter>] \cmd{Sconf}: \Sconf \quad\cmd{Sconf}[]: \Sconf[] -\end{beschreibung} - -Beispiele: -\begin{beispiel} - \iupac{\D\-Wein\|s\"aure} = - \iupac{\cip{2S,3S}\-Wein\|s\"aure} \\ - \iupac{\D\-($-$)\-Threose} = - \iupac{\cip{2S,3R}\-($-$)\-2,3,4\-Tri\|hydroxy\|butanal} \\ - \iupac{\cis\-2\-Buten} = - \iupac{\Z\-2\-Buten}, \\ - \iupac{\cip{2E,4Z}\-Hexa\|dien} \\ - \iupac{\meta\-Xylol} = - \iupac{1,3\-Di\|methyl\|benzol} -\end{beispiel} -\secidx*{Stereodeskriptoren und Nomenklatur} - -\paragraph{Koordinations-Chemie} -\chemmacros stellt zwei Befehle bereit, die in der Koordinationschemie nützlich -sein können: -\begin{beschreibung} - \befehl{bridge}{<num>} \bridge{3} - \befehl{hapto}{<num>} \hapto{5} -\end{beschreibung} -\begin{beispiel} - Ferrocene = \iupac{bis(\hapto{5}cyclo\|penta\|dienyl)iron} \\ - \iupac{tetra\-\bridge{3}iodido\-tetrakis[tri\|methyl\|platinum(IV)]} -\end{beispiel} - -Zwei Optionen stehen zur Anpassung zur Verfügung: -\begin{beschreibung} - \option[iupac]{bridge-number}{sub|super} hängt die Nummer als Tiefstellung oder - als Hochstellung an. IUPAC empfielt die Tiefstellung~\cite{iupac:redbook}. - Default = \code{sub} - \option[iupac]{coord-use-hyphen}{\default{true}|false} hängt einen Bindestrich - an \cmd{hapto} und \cmd{bridge} an wenn \code{true}. Default = \code{true} -\end{beschreibung} - -\subsubsection{Eigene Nomenklatur-Befehle}\secidx[eigene]{IUPAC-Namen} -Wenn Ihnen Befehle fehlen sollten, können Sie neue definieren. -\begin{beschreibung} - \Befehl{DeclareChemIUPAC}{<cmd>}\ma{<declaration>} - \Befehl{RenewChemIUPAC}{<cmd>}\ma{<declaration>} -\end{beschreibung} -Ein Befehl, der in dieser Weise definiert wurde, gehorcht der Option \key[option]{iupac}. -Das bedeutet, dass bestehende Befehle nur überschrieben werden, wenn Sie die -Paketoption \key{iupac}{strict} verwenden. \cmd{DeclareChemIUPAC} wird jedoch die -Definition eines bestehenden Nomenklatur-Befehls \emph{nicht} überschreiben, -sondern eine Warnung/einen Fehler melden (abhängig von der Paketoption \key{strict}). -\begin{beispiel} - \DeclareChemIUPAC\endo{\textit{endo}} - \RenewChemIUPAC\anti{\textit{anti}} - \iupac{(2\-\endo,7\-\anti)\-2\-bromo\-7\-fluoro\|bicyclo[2.2.1]heptane} -\end{beispiel} - -\cmd{RenewChemIUPAC} erlaubt Ihnen, die vordefinierten Befehle umzudefinieren. -\begin{beispiel} - \iupac{\meta\-Xylol} \\ - \RenewChemIUPAC\meta{\textit{m}} - \iupac{\meta\-Xylol} -\end{beispiel} -\secidx*{IUPAC-Namen} - -\subsection{Lateinische Ausdrücke}\secidx{Lateinische Ausdrücke}[Lateinische Ausdruecke] -Das Paket \paket{chemstyle} stellt den Befehl \cmd{latin} bereit, um gebräuchliche -lateinische Ausdrücke konsistent darzustellen. \chemmacros definiert ein ähnliches -\cmd{latin}, aber nur, wenn \paket{chemstyle} \emph{nicht} geladen wurde, und -stellt zusätzlich diese Befehle bereit: -\begin{beschreibung} - \befehl{insitu} \insitu - \befehl{abinitio} \abinitio - \befehl{invacuo} \invacuo -\end{beschreibung} - -Falls das Paket \paket{chemstyle} geladen wurde, wurden sie mit \paket{chemstyle}s -Befehl \lstinline+\latin+ definiert. Das bedeutet, dass ihr Erscheinungsbild von -der \paket{chemstyle} Option \code{abbremph} abhängen. - -Die Makros wurden mit folgendem Befehl definiert: -\begin{beschreibung} - \Befehl{DeclareChemLatin}{<cmd>}\ma{<phrase>} - \Befehl{RenewChemLatin}{<cmd>}\ma{<phrase>} -\end{beschreibung} -\begin{beispiel} - \DeclareChemLatin\ltn{latin text} - \ltn -\end{beispiel} -Wenn Sie \paket{chemstyle} \emph{nicht} geladen haben, können Sie das -Erscheinungsbild mit dieser Option anpassen: -\begin{beschreibung} - \option[latin]{format}{<definition>} Default = \lstinline+\itshape+ -\end{beschreibung} -\secidx*{Lateinische Ausdrücke}[Lateinische Ausdruecke] - -\section{Einheiten für die Verwendung mit \textsf{siunitx}}\label{sec:einheiten}\secidx{Einheiten} -In der Chemie sind einige nicht-SI-Einheiten sehr verbreitet. Das Paket -\paket{siunitx} stellt den Befehl \lstinline+\DeclareSIUnit{<command>}{<unit>}+ -zur Verfügung, um beliebige Einheiten zu definieren. \chemmacros verwendet diesen -Befehl, um die unten gelisteten Einheiten zu definieren. Wie alle -\paket{siunitx}-Einheiten sind sie nur innerhalb von \lstinline+\SI{<num>}{<unit>}+ -und \lstinline+\si{<unit>}+ gültig. -\begin{beschreibung} - \befehl{atmosphere} \si{\atmosphere} - \befehl{atm} \si{\atm} - \befehl{calory} \si{\calory} - \befehl{cal} \si{\cal} - \befehl{cmc} \si{\cmc} Die Einheiten \cmd{cmc}, \cmd{molar} und \cmd{Molar} werden - durch das Paket \paket{chemstyle} ebenfalls definiert. \chemmacros definiert - sie nur, wenn \paket{chemstyle} nicht geladen wurde. - \befehl{molar} \si{\molar} - \befehl{moLar} \si{\moLar} - \befehl{Molar} \si{\Molar} - \befehl{MolMass} \si{\MolMass} - \befehl{normal} \si{\normal} - \befehl{torr} \si{\torr} -\end{beschreibung} - -Übrigens: \lstinline+\mmHg+ \si{\mmHg} wird durch \paket{siunitx} und -\paket{chemstyle} bereitgestellt. -\secidx*{Einheiten} - -\section{Säure/Base}\label{sec:saeure_base}\secidx{Säure/Base}[Saeure/Base] -Einfache Darstellung von \pH, \pKa \ldots\ (der Befehl \cmd{pKa} hängt von der -Paketoption \key{language} ab). -\begin{beschreibung} - \befehl{pH} \pH - \befehl{pOH} \pOH - \befehl{Ka} \Ka - \befehl{Kb} \Kb - \befehl{Kw} \Kw - \befehl{pKa}[<num>] \cmd{pKa}: \pKa, \cmd{pKa}[1]: \pKa[1] - \befehl{pKb}[<num>] \cmd{pKb}: \pKb, \cmd{pKb}[1]: \pKb[1] - \befehl{p}{<anything>} \zB: \cmd{p}{\cmd{Kw}} \p{\Kw} -\end{beschreibung} - -\begin{beispiel} - \Ka \Kb \pKa \pKa[1] \pKb \pKb[1] -\end{beispiel} - -\achtung{Das voreingestellte Erscheinungsbild der \p{}-Befehle hat sich verändert, -um der \ac{iupac}-Empfehlung zu folgen.} -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,103]{iupac:greenbook}}}] - The operator \p{} \textelp{} shall be printed in Roman type. -\end{zitat} - -Es gibt eine Option, die den Stil, in dem das \p{} dargestellt wird, ändert: -\begin{beschreibung} - \option[acid-base]{p-style}{italics|slanted|upright} Default = \code{upright} -\end{beschreibung} -\begin{beispiel} - \pH, \pKa - - \chemsetup[acid-base]{p-style=slanted} \pH, \pKa - - \chemsetup[acid-base]{p-style=italics} \pH, \pKa -\end{beispiel} -\secidx*{Säure/Base}[Saeure/Base] - -\section{Oxidationszahlen, reale und formale Ladungen}\label{sec:ladungen} -\chemmacros unterscheidet zwischen realen ($+$/$-$) und formalen (\fplus/\fminus) -Ladungssymbolen, siehe auch Abschnitt \ref{sec:optionen}. Alle Befehle, die -formale Ladungen ausgeben, starten mit einem \code{f}. - -\subsection{Ionenladungen}\label{ssec:ionen}\secidx{Ionenladungen} -Einfache Verwendung von (realen) Ladungen. Man sollte anmerken, dass diese -Befehle aus der Zeit stammen, als \chemmacros sich stark bemühte, mit -\paket{mhchem} kompatibel zu sein, und es \Chemformula noch nicht gab. Sie -werden weiterhin zur Verfügung gestellt, aber meine Empfehlung wäre, \cmd{ch} -(siehe~\ref{part:chemformula}) zu verwenden und diese Befehle zu vergessen: -\begin{beschreibung} - \befehl{pch}[<number>] positive Ladung (\textbf{p}lus + \textbf{ch}arge) - \befehl{mch}[<number>] negative Ladung (\textbf{m}inus + \textbf{ch}arge) -\end{beschreibung} - -\begin{beispiel} - \pch, Na\pch, Ca\pch[2]\\ - \mch, F\mch, S\mch[2] -\end{beispiel} - -Das gleiche für formale Ladungen: -\begin{beschreibung} - \befehl{fpch}[<number>] positive Ladung - \befehl{fmch}[<number>] negative Ladung -\end{beschreibung} - -\begin{beispiel} - \fpch\ \fmch\ \fpch[3] \fmch[3] -\end{beispiel} - -Es gibt eine Option, die das Verhalten der Ladungen beeinflusst: -\begin{beschreibung} - \option[charges]{append}{\default{true}|false} Wenn auf \code{true} gesetzt, - wird die Ladung mit einer leeren Gruppe angehängt. Default = \code{false} -\end{beschreibung} - -Das hat folgende Auswirkungen: -\begin{beispiel} - % uses package `mhchem' - \chemsetup{charges/append=false,phases/pos=sub} - \ce{H\pch\aq} \ce{H\aq\pch} - - \chemsetup[charges]{append=true} - \ce{H\pch\aq} \ce{H\aq\pch} -\end{beispiel} - -In den meisten Fällen wird das Verhalten unerwünscht sein, es kann jedoch -Gelegenheiten geben, wo es nützlich sein kann: -\begin{beispiel} - \chemsetup{charges/append=false,phases/pos=sub} - \ce{\ox{1,H}\pch\aq} - - \chemsetup[charges]{append=true} - \ce{\ox{1,H}\pch\aq} -\end{beispiel} -\secidx*{Ionenladungen} - -\subsection{Oxidationszahlen}\label{ssec:oxidationszahlen}\secidx{Oxidationszahlen} -Eingabe von Oxidationszahlen: -\begin{beschreibung} - \befehl{ox}[<options>]{<number>,<atom>} setzt \code{<number>} über \code{<atom>}; - \code{<number>} muss eine (rationale) Zahl sein! -\end{beschreibung} - -\begin{beispiel} - \ox{+1,Na}, \ox{2,Ca}, \ox{-2,S}, \ox{-1,F} -\end{beispiel} - -Es gibt eine Reihe von Optionen, mit denen \cmd{ox} angepasst werden kann. -\begin{beschreibung} - \option[ox]{parse}{\default{true}|false} Wenn \code{false}, dann kann ein beliebiger - Eintrag für \code{<number>} gemacht werden. Default = \code{true} - \option[ox]{roman}{\default{true}|false} schaltet von römischen auf arabische - Ziffern um. Default = \code{true} - \option[ox]{pos}{top|super|side}; \code{top} setzt \code{<number>} über \code{<atom>}, - \code{super} rechts oben als Hochstellung und \code{side} rechts daneben in - Klammern. Default = \code{top} - \option[ox]{explicit-sign}{\default{true}|false} gibt $+$ für positive Zahlen - und $\pm$ für die $0$ aus. Default = \code{false} - \option[ox]{decimal-marker}{comma|point} Wahl des Dezimalzeichens für - Oxidationszahlen wie \ox{1.2,X}. Default = \code{point} - \option[ox]{align}{center|right} Die Oxidationszahl über dem Atom zentrieren oder - es mit diesem rechts ausrichten. Default = \code{center} -\end{beschreibung} - -\begin{beispiel} - \ox[roman=false]{2,Ca} \ox{2,Ca} \\ - \ox[pos=super]{3,Fe}-Oxid \\ - \ox[pos=side]{3,Fe}-Oxid \\ - \ox[parse=false]{?,Mn} \\ - \ox[align=right]{2,Ca} -\end{beispiel} - -Die \key[ox]{pos}{super}-Variante kann auch mit dem Shortcut \cmd[oxa]{ox*} erzeugt -werden: -\begin{beispiel} - \ox{3,Fe} \ox*{3,Fe} -\end{beispiel} - -Die Verwenden von \key[ox]{explicit-sign} wird immer das Vorzeichen der Oxidationszahl -zeigen: -\begin{beispiel} - \chemsetup[ox]{explicit-sign = true} - \ox{+1,Na}, \ox{2,Ca}, \ox{-2,S}, \ch{"\ox{0,F}" {}2} -\end{beispiel} - -\begin{beispiel} - Vergleichen Sie \ox{-1,\ch{O2^2-}} mit \ch{"\ox{-1,O}" {}2^2-} -\end{beispiel} - -Manchmal muss man formale Oxidationszahlen wie \num{.5} oder $\frac{1}{3}$ verwenden: -\begin{beispiel} - \ox{.5,\ch{Br2}} \ch{"\ox{1/3,I}" {}3+} -\end{beispiel} - -Der Bruch verwendet den \lstinline+\sfrac+-Befehl des \paket{xfrac}-Pakets. Zu -diesem Zweck wurde die Instanz \lstinline+chemmacros-ox-frac+ definiert. -\begin{beispiel}[code only] -\DeclareInstance{xfrac}{chemmacros-ox-frac}{text} - { - scale-factor = 1.2 , - denominator-bot-sep = -.5ex , - numerator-top-sep = -.3ex , - slash-left-kern = -.2em , - slash-right-kern = -.2em , - slash-symbol-font = lmr - } -\end{beispiel} -Natürlich können Sie sie nach Ihren Vorstellungen umdefinieren. -\secidx*{Oxidationszahlen} - -\subsection{Partialladungen und Ähnliches}\label{ssec:partialladungen}\secidx{Partialladungen} -Vielleicht selten genutzt, manchmal aber praktisch: -\begin{beschreibung} - \befehl{delp} \delp\ (\textbf{del}ta + \textbf{p}lus) - \befehl{delm} \delm\ (\textbf{del}ta + \textbf{m}inus) - \befehl{fdelp} \fdelp - \befehl{fdelm} \fdelm -\end{beschreibung} - -Ein Beispiel mit dem Befehl \cmd{ox} oder mit dem Paket \paket{chemfig}: -\begin{beispiel} - \chemsetup{ - option/circled = all, - ox/parse = false - } - \ce{\ox{\delp,H}-\ox{\delm,Cl}} \hspace*{1cm} - \chemfig{\chemabove[3pt]{\lewis{246,Br}}{\delm}-\chemabove[3pt]{H}{\delp}} -\end{beispiel} - -Auch diese Makros lassen sich gut mit \paket{chemfig} einsetzen. -\begin{beschreibung} - \befehl{scrp} \scrp\ (\textbf{scr}iptstyle + \textbf{p}lus) - \befehl{scrm} \scrm\ (\textbf{scr}iptstyle + \textbf{m}inus) - \befehl{fscrp} \fscrp - \befehl{fscrm} \fscrm - \befehl{fsscrp} \fsscrp\ (verwendet \lstinline+\scriptscriptstyle+) - \befehl{fsscrm} \fsscrm -\end{beschreibung} - -\begin{beispiel} - \setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3} - - \chemfig{\fmch{}|O-\chemabove{N}{\fscrp}(-[1]O|\fmch)-[7]O|\fmch} -\end{beispiel} -\secidx*{Partialladungen} - -\section{Reaktionsmechanismen}\label{sec:mechanismen}\secidx{Reaktionsmechanismen} -Mit dem Befehl -\begin{beschreibung} - \Befehl{mech}[<type>] -\end{beschreibung} -kann man die verbreitetsten Reaktionsmechanismen spezifizieren. \code{<type>} kann -einen der folgenden Werte annehmen: -\begin{beschreibung} - \befehl{mech} (leer, kein opt.\@ Argument) nukleophile Substitution \mech - \befehl{mech}[1] unimolekulare nukleophile Substitution \mech[1] - \befehl{mech}[2] bimolekulare nukleophile Substitution \mech[2] - \befehl{mech}[se] elektrophile Substitution \mech[se] - \befehl{mech}[1e] unimolekulare elektrophile Substitution \mech[1e] - \befehl{mech}[2e] bimolekulare elektrophile Substitution \mech[2e] - \befehl{mech}[ar] elektrophile aromatische Substitution \mech[ar] - \befehl{mech}[e] Eliminierung \mech[e] - \befehl{mech}[e1] unimolekulare Eliminierung \mech[e1] - \befehl{mech}[e2] bimolekulare Eliminierung \mech[e2] - \befehl{mech}[cb] unimolekulare Eliminierung \enquote{conjugated base}, \dh via Carbanion \mech[cb] -\end{beschreibung} -\secidx*{Reaktionsmechanismen} - -\section{Redoxreaktionen}\label{sec:redoxreaktionen}\secidx{Redoxreaktionen}% TODO: watch pagebreaks! -\chemmacros stellt zwei Befehle zur Verfügung, mit denen die Übertragung von -Elektronen in Redoxreaktionen angezeigt werden kann\footnote{Dank an -\href{http://www.mathannotated.com/}{Peter Cao}, der dieses Feature vorgeschlagen -hat.}. Beide Befehle verwenden \TikZ. -\begin{beschreibung} - \Befehl{OX}{<name>,<atom>} - \Befehl{redox}(<name1>,<name2>)[<tikz>]\oa{<num>}\ma{<text>} \cnpkgdocarrow\ - Lediglich das erste Argument\\\da{<name1>,<name2>} wird benötigt, die anderen - sind optional. -\end{beschreibung} - -\cmd{OX} setzt \code{<atom>} in einen Knoten (eine \enquote{Node}) mit dem Namen -\code{<name>}. Wenn Sie zwei \cmd{OX} verwendet haben, dann können sie mit -\cmd{redox} verbunden werden. Die Namen der zu verbindenden Knoten werden in runde -Klammern geschrieben. Da \cmd{redox} ein Tikzpicture mit den Optionen \code{remember -picture,overlay} erstellt, muss das Dokument \emph{wenigstens zwei mal} kompiliert -werden. -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation} -\end{beispiel} -Diese Linie kann mit \TikZ-Keys in \oa{<tikz>} angepasst werden: -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -Mit dem Argument \oa{<num>} kann die Länge der vertikalen Linien angepasst werden. -Die Voreinstellung beträgt \code{.6em}. Diese Länge wird mit \code{<num>} -multipliziert. Ein negativer Wert wird die Linie \emph{unter} den Text setzen. -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch - \redox(a,b)[->,red]{ox} - \redox(a,b)[<-,blue][-1]{red} - \vspace{7mm} -\end{beispiel} - -Die Voreinstellung der vertikalen Linien kann mit -\begin{beschreibung} - \option[redox]{dist}{<dim>} Default = \code{.6em} -\end{beschreibung} -angepasst werden: - -\begin{beispiel}[dist] - \chemsetup{redox/dist=1em} - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -Zusätzlich erlaubt die Option -\begin{beschreibung} - \option[redox]{sep}{<dim>} Default = \code{.2em} -\end{beschreibung} -den Abstand zwischen Atom und Anfang der Linie zu verändern. -\begin{beispiel}[dist] - \chemsetup{redox/sep=.5em} - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -Beispiele:% TODO: watch pagebreaks! -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,Na}" + "\OX{r1,Cl}" {}2 -> 2 "\OX{o2,Na}" \pch{} + 2 -"\OX{r2,Cl}" \mch } - \redox(o1,o2){\small OX: $- 2\el$} - \redox(r1,r2)[][-1]{\small RED: $+ 2\el$} - \vspace{7mm} -\end{beispiel} - -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2){\small OX: $- 2\el$} - \redox(r1,r2)[][-1]{\small RED: $+ 2\el$} - \vspace{7mm} -\end{beispiel} - -\bspmidlength{dist}{15mm} -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$} - \redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$} -\end{beispiel} -\bspmidlength{dist}{7mm} - \begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2)[green,-stealth]{\small OX} - \redox(r1,r2)[purple,-stealth][-1]{\small RED} - \vspace{7mm} -\end{beispiel} -\secidx*{Redoxreaktionen} - -\newpage % TODO: watch pagebreaks -\section{(Standard) Zustand, Thermodynamik}\label{sec:standardstate}\secidx{Thermodynamik} -\subsection{Thermodynamische Größen}\label{ssec:siunitx} -Die folgenden Befehle verwenden \paket{siunitx}: -\begin{beschreibung} - \Befehl{Enthalpy}[<options>]\da{<subscript>}\ma{<value>} - \Befehl{Entropy}[<options>]\da{<subscript>}\ma{<value>} - \Befehl{Gibbs}[<options>]\da{<subscript>}\ma{<value>} -\end{beschreibung} - -Ihre Verwendung ist ziemlich selbsterklärend: -\begin{beispiel} - \Enthalpy{123} \\ - \Entropy{123} \\ - \Gibbs{123} -\end{beispiel} -Das Argument \da{<subscript>} Fügt eine Tiefstellung zur Spezifizierung hinzu: -\cmd{Enthalpy}(r){123} \Enthalpy(r){123}. - -Die Befehle können mit mehreren Optionen angepasst werden: -\begin{beschreibung} - \Option*{exponent}{<anything>} - \Option*{delta}{<anything>|false} - \Option*{subscript}{left|right} - \Option*{unit}{<unit>} -\end{beschreibung} - -Die Voreinstellung hängt vom jeweiligen Befehl ab: -\begin{beispiel} - \Enthalpy[unit=\kilo\joule]{-285} \\ - \Gibbs[delta=false]{0} \\ - \Entropy[delta=\Delta,exponent=]{56.7} -\end{beispiel} - -Die Zahl und die Einheit werden entsprechend der Regeln für \paket{siunitx} gesetzt -und hängen von dessen Einstellungen ab: -\begin{beispiel} - \Enthalpy{-1234.56e3} \\ - \sisetup{per-mode=symbol,exponent-product=\cdot,output-decimal-marker={,},group-four-digits=true} - \Enthalpy{-1234.56e3} -\end{beispiel} - -\subsubsection{Neue Größen definieren} -Mit dem Befehl -\begin{beschreibung} - \Befehl{DeclareChemState}[<options>]{<name>}\ma{<symbol>}\ma{<unit>} -\end{beschreibung} -können neue Größen definiert werden. -\begin{beispiel} - \DeclareChemState{Helmholtz}{A}{\kilo\joule\per\mole} - \DeclareChemState[subscript-left=false,exponent=]{ElPot}{E}{\volt} - \Helmholtz{123.4} \\ - \ElPot{-1.1} \\ - \ElPot[exponent=0]($\ch{Sn}|\ch{Sn^2+}||\ch{Pb^2+}|\ch{Pb}$){0.01} -\end{beispiel} - -Dieser Befehl hat fast die gleichen Optionen, wie die Größen selbst, mit denen die -Voreinstellung für die neue Größe festgelegt werden können. -\begin{beschreibung} - \Option*{exponent}{<anything>} - \Option*{delta}{<anything>|false} - \Option*{subscript-left}{\default{true}|false} - \Option*{subscript}{<anything>} -\end{beschreibung} - -\subsubsection{Größen umdefinieren} -Mit -\begin{beschreibung} - \Befehl{RenewChemState}[<options>]{<name>}\ma{<symbol>}\ma{<unit>} -\end{beschreibung} -kann man bestehende Größen umdefinieren: - -\begin{beispiel} - \RenewChemState{Enthalpy}{h}{\joule} - \Enthalpy(f){12.5} -\end{beispiel} -Der Befehl ist analog zu \cmd{DeclareChemState}, \dh er hat dieselben Optionen. - -Man könnte also \textendash\ um thermodynamischen Konventionen zu folgen \textendash\ -eine molare und eine absolute Größe definieren: -\begin{beispiel} - \DeclareChemState[exponent=]{enthalpy}{h}{\kilo\joule\per\mole}% molar - \RenewChemState[exponent=]{Enthalpy}{H}{\kilo\joule}% absolute - \enthalpy{-12.3} \Enthalpy{-12.3} -\end{beispiel} - -\subsection{Zustandsgrößen}\label{ssec:state} -Die Befehle, die in Abschnitt~\ref{ssec:siunitx} vorgestellt wurden, verwenden -intern den Befehl\footnote{Beachten Sie, dass \ma{<subscript>} ein \emph{optionales} -Argument ist.} -\begin{beschreibung} - \Befehl{State}[<options>]{<symbol>}\ma{<subscript>} -\end{beschreibung} -Er kann verwendet werden, um die Größen ohne Wert und Einheit zu schreiben. - -Beispiele: -\begin{beispiel} - \State{A}, \State{G}{f}, \State[subscript-left=false]{E}{\ch{Na}}, - \State[exponent=\SI{1000}{\celsius}]{H} -\end{beispiel} - -Wieder hat er (fast) die gleichen Optionen: -\begin{beschreibung} - \Option[state]{exponent}{<anything>} - \Option[state]{subscript-left}{true|false} - \Option[state]{delta}{<anything>|false} -\end{beschreibung} -\secidx*{Thermodynamik} - -\section{Spektroskopie und Messdaten}\label{sec:spektroskopie}\secidx{Spektroskopie} -\subsection{Der \code{\textbackslash\textcolor{code}{NMR}}-Befehl} -Wenn Substanzen darauf untersucht werden, ob sie sind, was sie sein sollen, wird -oft die NMR Spektroskopie eingesetzt. Die Messergebnisse werden dann etwa so -aufgeschrieben: -\begin{center} - \NMR(400)[CDCl3] = \num{1.59} -\end{center} -\chemmacros stellt einen Befehl zur Verfügung, der das vereinfacht (verwendet -\paket{siunitx}). - -\begin{beschreibung} - \Befehl{NMR}{<num>,<elem>}\da{<num>,<unit>}\oa{<solvent>} - \Befehl{NMR*}{<num>,<elem>}\da{<num>,<unit>}\oa{<solvent>} -\end{beschreibung} - -\emph{Alle} Argumente sind optional! Ohne Argumente\footnote{Alle Argumente können -beliebig kombiniert werden.Der Befehl kann auch im Mathematik-Modus eingesetzt -werden.} erhalten wir: -\begin{beispiel} - \NMR \\ - \NMR* -\end{beispiel} - -Das erste Argument spezifiziert die Art der NMR: -\begin{beispiel} - \NMR{13,C} -\end{beispiel} - -Mit dem zweiten Argument kann die verwendete Frequenz (in \si{\mega\hertz}) -angegeben werden: -\begin{beispiel} - \NMR(400) -\end{beispiel} -Auch mit Einheit: -\begin{beispiel} - \NMR(4e8,\hertz) -\end{beispiel} -Bitte beachten Sie, dass das Setup von \paket{siunitx} sich auch auf diesen -Befehl auswirkt: -\begin{beispiel} - \sisetup{exponent-product=\cdot}\NMR(4e8,\hertz) -\end{beispiel} - -Mit dem dritten Befehl schließlich kann das Lösungsmittel angegeben werden: -\begin{beispiel} - \NMR[CDCl3] -\end{beispiel} - -\subsection{Abkürzungen} -Da man verschiedene Kerne in einem Dokument eventuell häufiger benötigt, bietet -\chemmacros eine Möglichkeit, Abkürzungen zu definieren. -\begin{beschreibung} - \Befehl{DeclareChemNMR}{<csname>}\ma{<num>,<atom>} - \Befehl{RenewChemNMR}{<csname>}\ma{<num>,<atom>} -\end{beschreibung} -Das definiert einen Befehl mit denselben Argumenten wie \cmd{NMR}, \emph{außer} \ma{<num>,<atom>}. -\begin{beispiel} - \DeclareChemNMR\HNMR{1,H}% - \DeclareChemNMR\CNMR{13,C}% - \CNMR*(100) \\ - \HNMR*(400) -\end{beispiel} - -\subsection{Eine Umgebung, um Messergebnisse darzustellen} -Um ein bequemes Eingeben von Messergebnissen zu ermöglichen, bietet \chemmacros -eine Umgebung. -\begin{beschreibung}\catcode`\#=11 - \umg{experimental}{Daten} Umgebung für die Ausgabe von Ex\-pe\-ri\-men\-tal-Daten. - Innerhalb dieser Umgebung sind die folgenden Befehle definiert. - \Befehl{data}{<Typ>}\oa{<Spezifikation>} \cnpkgdocarrow\ Typ der Daten, \zB\ IR, - MS\ldots\ In das optionale Argument können weitere Spezifikationen eingegeben - werden, die in runden Klammern ausgegeben werden. - \Befehl{data*}{<Typ>}\oa{<Spezifikation>} \cnpkgdocarrow\ Wie \cmd{data}, gibt - aber anstelle des \code{=} ein \code{:} mit aus, wenn \key{use-equal}{true} - eingestellt ist. - \Befehl{NMR}{<num>,<elem>\oa{<coupling core>}}\da{<num>,<unit>}\oa{<solvent>} - \cnpkgdocarrow\ der Befehl bekommt ein weiteres Argument: - \cmd{NMR}{13,C[\textasciicircum 1H]} \NMR{13,C[^1H]} - \Befehl{J}\da{<bonds>;<nuclei>}\oa{<unit>}\ma{<list of nums>} \cnpkgdocarrow\ - Kopplungskonstante, Werte werden mit \code{;} getrennt eingegeben. Für NMR. - Das Argument \da{<bonds>;<nuclei>} ist optional und ermöglicht die Angabe von - genaueren Spezifikationen der Kopplung. - \befehl{#}{<num>} Anzahl der Kerne. Für NMR. - \befehl{pos}{<num>} Position/Nummer des Kerns. Für NMR. - \befehl{val}{<num>} Zahlenwert, ein Alias für \paket*{siunitx}' - \lstinline+\num{<num>}+ - \befehl{val}{<num1>-{}-<num2>} Ein Alias für \paket*{siunitx}' - \lstinline+\numrange{<num1>}{<num2>}+ -\end{beschreibung} - -\begin{beispiel} - \begin{experimental} - \data{Typ1} Daten. - \data{Typ2}[Spezifikationen] noch mehr Daten. - \data*{Typ3} weitere Daten. - \end{experimental} -\end{beispiel} - -\subsection{Anpassung} -Die Ausgabe der Umgebung und der NMR-Befehle kann mir einer Reihe Optionen angepasst -werden. Aus historischen Gründen gehören sie dem Modul \textcolor{module}{\code{nmr}} -an. -\begin{beschreibung} - \option[nmr]{unit}{<unit>} Default = \lstinline=\mega\hertz= - \option[nmr]{nucleus}{\{<num>,<atom>\}} Default = \ma{1,H} - \option[nmr]{format}{<commands>} zum Beispiel \lstinline=\bfseries= - \option[nmr]{pos-number}{side|sub} Position der Zahl neben dem Atom. Default = - \code{side} - \option[nmr]{coupling-unit}{<unit>} Eine \paket{siunitx} Einheit. Default = - \lstinline=\hertz= - \option[nmr]{parse}{\default{true}|false} Das Lösungsmittel als \paket{mhchem}/\chemformula-Formel - behandeln oder nicht. Default = \code{true} - \option[nmr]{delta}{<tokens>} Die \code{<tokens>} werden nach $\delta$ eingefügt. - \option[nmr]{list}{\default{true}|false} Die Umgebung \env{nmr}[<optionen>]{} wird als - Liste formatiert. Default = \code{false} - \option[nmr]{list-setup}{<setup>} Setup der Liste. Default = siehe unten. - \option[nmr]{use-equal}{\default{true}|false} Istgleich-Zeichen nach \cmd{NMR} - und \cmd{data} einsetzen. Default = \code{false} -\end{beschreibung} - -Das Default-Setup der Liste: -\begin{beispiel}[code only] - \topsep\z@skip \partopsep\z@skip - \itemsep\z@ \parsep\z@ \itemindent\z@ - \leftmargin\z@ -\end{beispiel} - -\begin{beispiel} - \begin{experimental}[format=\bfseries] - \data{Typ1} Daten. - \data{Typ2}[Spezifikationen] noch mehr Daten. - \data*{Typ3} weitere Daten. - \end{experimental} -\end{beispiel} - -Der Befehl \cmd{NMR} und alle mit \cmd{DeclareChemNMR} definierten Befehle können -anstelle von \cmd{data} für NMR-Daten eingesetzt werden. - -\begin{beispiel} - \begin{experimental}[format=\bfseries,use-equal] - \data{Typ1} Daten. - \data{Typ2}[Spezifikationen] noch mehr Daten. - \NMR weitere Daten. - \end{experimental} -\end{beispiel} - -\subsection{Anwendungsbeispiel} -Der folgende Code in verschiedenen Ausgaben abhängig von der Auswahl der \code{<optionen>}. -Die Optionen können selbstverständlich auch mit \cmd{chemsetup} global gesetzt -werden. - -\begin{beispiel}[code only] -\sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} -\begin{experimental}[<optionen>] - \data*{Ausbeute} \SI{17}{\milli\gram} gelbe Nadeln (\SI{0.04}{\milli\mole}, \SI{13}{\percent}). - % - \data{Smp.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). - % - \data*{Quantenausbeute} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} -\end{beispiel} - -\subsubsection{Beinahe Standard} -Ausgabe für \lstinline+<optionen>: delta=(ppm),pos-number=sub,use-equal+: -\bigskip - -\begin{experimental}[delta=(ppm),pos-number=sub,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Ausbeute} \SI{17}{\milli\gram} gelbe Nadeln (\SI{0.04}{\milli\mole}, - \SI{13}{\percent}). - % - \data{Smp.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, - \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} - ($\varepsilon = \val{65378}$). - % - \data*{Quantenausbeute} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} - -\subsubsection{Formatierte Liste} -Ausgabe für \lstinline+<optionen>: format=\bfseries,delta=(ppm),list=true,use-equal+: -\bigskip - -\begin{experimental}[format=\bfseries,delta=(ppm),list=true,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Ausbeute} \SI{17}{\milli\gram} gelbe Nadeln (\SI{0.04}{\milli\mole}, - \SI{13}{\percent}). - % - \data{Smp.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, - \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} - ($\varepsilon = \val{65378}$). - % - \data*{Quantenausbeute} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} - -\subsubsection{Verrückt} -Ausgabe für \code{<optionen>}: -\begin{lstlisting} - format=\color{red}\itshape, - list=true, - delta=\textcolor{green}{\ch{M+ + H2O}}, - pos-number=side, - coupling-unit=\mega\gram\per\square\second, - list-setup=, - use-equal -\end{lstlisting} - -\begin{experimental}[ - format=\color{red}\itshape, - list=true, - delta=\textcolor{green}{\ch{M+ + H2O}}, - pos-number=side, - coupling-unit=\mega\gram\per\square\second, - list-setup=,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Ausbeute} \SI{17}{\milli\gram} gelbe Nadeln (\SI{0.04}{\milli\mole}, - \SI{13}{\percent}). - % - \data{Smp.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, - \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} - ($\varepsilon = \val{65378}$). - % - \data*{Quantenausbeute} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} -\secidx*{Spektroskopie} - -\section{Befehle für \textsf{mhchem}}\label{sec:mhchem}\secidx{Befehle für -\textsf{mhchem}}[Befehle fur mhchem] -\paket{mhchem} wird nicht mehr automatisch geladen, sondern nur noch, wenn Sie die -Option \key[option]{method}{mhchem} in der Präambel verwenden. Als Voreinstellung -verwendet \chemmacros stattdessen \chemformula. - -\chemmacros stellt nur einen Befehl speziell für \paket{mhchem}\footnote{\chemformula -hat seine eigene Möglichkeit.} bereit. Er erlaubt es, Text unter eine Formel zu -schreiben. -\begin{beschreibung} - \Befehl{mhName}[<options>]{<formula>}\ma{<text>} -\end{beschreibung} - -Zum Beispiel: -\begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} -\end{beispiel} - -Mit den folgenden Optionen kann \cmd{mhName} angepasst werden: -\begin{beschreibung} - \option[mhName]{align}{<alignment command>} Die Ausrichtung des Textes innerhalb - der Box, in die er geschrieben wird.Default = \lstinline+\centering+ - \option[mhName]{format}{<anything>} Das Format des Textes. - \option[mhName]{fontsize}{<font size command>} Die Schriftgröße des Textes. - Default = \lstinline+\tiny+ - \option[mhName]{width}{<dim>|auto} Die Breite der Box, in die der Text geschrieben - wird. Default = \code{auto} -\end{beschreibung} -\begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName[fontsize=\footnotesize]{Pb(C2H5)4}{former antiknock additive} + NaCl}\\ - \chemsetup[mhName]{align=\raggedright,fontsize=\small,format=\bfseries\color{red},width=3cm} - \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} -\end{beispiel} -\secidx*{Befehle für \textsf{mhchem}}[Befehle fur mhchem] - -\section{Reaktionsumgebungen}\label{sec:reactions}\secidx{Reaktionsumgebungen} -\subsection{Durch \chemmacros definiert} -Es stehen folgende Umgebungen für nummerierte\ldots -\begin{beschreibung} - \Umg{reaction}{<formula or mhchem code>} - \Umg{reactions}{<formula or mhchem code>} -\end{beschreibung} - -\ldots und ihre gesternten Versionen für unnummerierte Reaktionen zur Verfügung. -\begin{beschreibung} - \Umg{reaction*}{<formula or mhchem code>} - \Umg{reactions*}{<formula or mhchem code>} -\end{beschreibung} -Damit können Sie (un-) nummerierte Reaktionsgleichungen erstellen ähnlich den -mathematischen Gleichungen. - -Die Umgebungen \code{reaction}/\code{reaction*} verwenden intern \code{equation}/\code{equation*} -Umgebungen und die Umgebungen \code{reactions}/\code{reactions*} verwenden die -\code{align}/\code{align*} Umgebungen, um die Reaktionen darzustellen. - -\begin{beispiel} - Reaktion mit Z\"ahler: - \begin{reaction} - A -> B - \end{reaction} -\end{beispiel} - -\begin{beispiel} - Reaktion ohne Z\"ahler: - \begin{reaction*} - C -> D - \end{reaction*} -\end{beispiel} - -\begin{beispiel} - mehrere ausgerichtete Reaktionen mit Z\"ahler: - \begin{reactions} - A &-> B + C \\ - D + E &-> F - \end{reactions} -\end{beispiel} - -\begin{beispiel} - mehrere ausgerichtete Reaktionen ohne Z\"ahler: - \begin{reactions*} - G &-> H + I \\ - J + K &-> L - \end{reactions*} -\end{beispiel} - -Wenn Sie das Layout der Zähler-Tags ändern wollen, verwenden Sie -\begin{beschreibung} - \Befehl{renewtagform}{<tagname>}\oa{<format>}\ma{<right delim>}\ma{<left delim>}% - \footnote{Durch das \paket*{mathtools} Paket zur Verfügung gestellt.}. -\end{beschreibung} - -\begin{beispiel} - \renewtagform{reaction}[R \textbf]{[}{]} - \begin{reaction} - H2O + CO2 <<=> H2CO3 - \end{reaction} -\end{beispiel} - -Seit Version 3.3 funktionieren Querverweise und \AmS maths \cmd{intertext} wie -erwartet: -\begin{beispiel} - \begin{reactions} - A + 2 B &-> 3 C + D \label{rxn:test} - \intertext{Etwas Text zwischen ausgerichteten Reaktionen.} - 3 E + F &<=> G + 1/2 H - \end{reactions} - Siehe Reaktion \ref{rxn:test}. -\end{beispiel} - -\achtung{In der Standardeinstellung, \dh mit \key{method}{chemformula}, sollten -Sie \cmd{mch} und die verwandten Befehle innerhalb der \code{reaction} Umgebungen -nicht verwenden. Sie bringen in den meisten Fällen die korrekte Ausrichtung -durcheinander. In der Standardeinstellung erkennen Ladungen in den Umgebungen -die Einstellung der Option \key{circled} automatisch, so dass die Befehle auch -nicht benötigt werden.} - -\subsection{Eigene Reaktionen} -Sie können mit dem Befehl -\begin{beschreibung} - \Befehl{DeclareChemReaction}[<options>]{<name>}\ma{<math name>} -\end{beschreibung} -weitere Reaktionsumgebungen erstellen. - -\code{<name>} wird der Name der neuen Umgebung sein. \code{<math name>} ist die -verwendete Mathematikumgebung. - -Der Befehl hat zwei Optionen. -\begin{beschreibung} - \Option*{star}{\default{true}|false} - \Option*{arg}{\default{true}|false} -\end{beschreibung} -Zum einen \key*{star}, die auch die gesternte Variante definiert, vorausgesetzt, -die entsprechende Mathematikumgebung existiert. Falls nicht, wird es einen Fehler -geben. - -Dann gibt es \key*{arg}, die verwendet wird, um eine Umgebung mit einem obligatorischen -Argument zu erstellen. Auch das funktioniert natürlich nur, wenn die entsprechende -Mathematikumgebung ebenfalls ein obligatorisches Argument besitzt. - -Die vordefinierten Umgebungen wurden durch -\begin{beschreibung} - \Befehl{DeclareChemReaction}[star]{reaction}\ma{equation} und - \Befehl{DeclareChemReaction}[star]{reactions}\ma{align}. -\end{beschreibung} -definiert. - -Nehmen wir an, Sie wollen eine Umgebung mit dem Verhalten der \code{alignat} Umgebung -für \chemformula-/\paket{mhchem}-Reaktionen. Sie könnten folgendes tun: -\begin{beispiel}[code only] - \DeclareChemReaction[star,arg]{reactionsat}{alignat} -\end{beispiel} - -Damit ist die \code{reactionsat}-Umgebung definiert. -\begin{beispiel} - \DeclareChemReaction[star,arg]{reactionsat}{alignat} - \begin{reactionsat}{3} - A &-> B &&-> C &&-> D \\ - aaaaa &-> bbbbb &&-> ccccc &&-> ddddd - \end{reactionsat} - \begin{reactionsat*}{2} - A &-> B & C &-> D \\ - aaaaa &-> bbbbb &\quad{} ccccc &-> ddddd - \end{reactionsat*} -\end{beispiel} - -\subsection{Liste der Reaktionen} -\chemmacros stellt ebenso einen Befehl zur Verfügung, mit dem man eine Liste der -Reaktionen ausgeben kann, die mit den Reaktionsumgebungen eingegeben wurden. -\begin{beschreibung} - \Befehl{listofreactions} -\end{beschreibung} -\begin{beispiel}[below] - \listofreactions -\end{beispiel} - -Der Output kann mit den folgenden Optionen angepasst werden: -\begin{beschreibung} - \option[reaction]{list-name}{<name of the list>} Setzen der Listenüberschrift. - Default = \code{Reaktionsverzeichnis} - \option[reaction]{list-entry}{<prefix to each entry>} Präfix zu jedem Eintrag. - Default = \code{Reaktion} -\end{beschreibung} -Beide Default-Werte reagieren auf die Option \key[option]{german}. - -Statt die Option \key{list-name} zu verwenden, könnten Sie auch \cmd{reactionlistname} -umdefinieren. - -Im Verzeichnis werden alle Reaktionen mit Zählen gelistet und alle anderen nicht -aufgenommen. Alle Reaktionsumgebungen ohne Stern haben ein optionales Argument, -mit dem man eine Beschreibung für die Liste hinzufügen kann. -\begin{beispiel} - \begin{reaction}[Autoprotolyse] - 2 H2O <<=> H3O+ + OH- - \end{reaction} -\end{beispiel} -Wenn Sie die \code{reactions} Umgebung verwenden, wird das allerdings nicht -funktionieren. In diesem Fall können Sie -\begin{beschreibung} - \Befehl{AddRxnDesc}{<description>} -\end{beschreibung} -verwenden. -\begin{beispiel} - \begin{reactions} - Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 &-> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ - "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 &-> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} - \end{reactions} -\end{beispiel} -Nebenbei: Sie müssen die Phantom-Befehle nicht verwenden, wenn Sie das Format der -Atome nicht geändert haben, siehe Abschnitt~\ref{sec:format} an Seite~\pageref{sec:format}. -\secidx*{Reaktionsumgebungen} - -\section{Phasen}\label{sec:phasen}\secidx{Phasen} -\subsection{Grundlagen}\secidx[Grundlagen]{Phasen} -Diese Befehle sollen helfen, die Phase einer Substanz anzuzeigen. -\begin{beschreibung} - \befehl{sld} \sld - \befehl{lqd} \lqd - \befehl{gas} \gas - \befehl{aq} \aq -\end{beschreibung} - -\achtung{Das Default-Verhalten der Phasen-Befehle hat sich geändert, um der -\ac{iupac}-Empfehlung zu folgen. Sowohl \cmd{sld} als auch \cmd{lqd} haben kein -optionales Argument mehr.} - -\begin{beispiel} - \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas}\\ - der Vollst\"andigkeit halber: NaCl\aq. -\end{beispiel} - -Mit der Paketoption \key{language}{english} (siehe Abschnitt~\ref{sec:optionen}) -erhalten Sie die englischen Versionen. - -Die \ac{iupac}-Empfehlung\footnote{Vielen Dank an Paul King für den Hinweis.} um einen -Aggregatszustand anzuzeigen ist es, sie in Klammern nach der Formel zu -schreiben~\cite{iupac:greenbook}. Es ist jedoch ebenfalls verbreitet, sie als -Tiefstellung zu setzen. - -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,54]{iupac:greenbook}}}] - The \textelp{} symbols are used to represent the states of aggregation of chemical - species. The letters are appended to the formula in parentheses and should be - printed in Roman (upright) type without a full stop (period). -\end{zitat} - -Es gibt zwei Optionen, um den Output anzupassen: -\begin{beschreibung} - \option[phases]{pos}{side|sub} Umschalten der Position des Phasen-Anzeigers. - Default = \code{side} - \option[phases]{space}{<dim>} Ändern des Zwischenraums zwischen Formel und dem - Phasen-Anzeiger bei \key{pos}{side}. Eine \TeX-Dimension. Default = \code{.1333em} -\end{beschreibung} -\begin{beispiel} - \chemsetup[phases]{pos=sub} - \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas}\\ - der Vollst\"andigkeit halber: NaCl\aq. -\end{beispiel} - -\subsection{Eigene Phasen definieren}\secidx[eigene]{Phasen} -Abhängig vom Thema ihres Dokuments müssen Sie unter Umständen andere Aggregatszustände -anzeigen. Sie können Sie einfach definieren. -\begin{beschreibung} - \Befehl{DeclareChemPhase}{<cmd>}\oa{<german>}\ma{<english>} - \Befehl{RenewChemPhase}{<cmd>}\oa{<german>}\ma{<english>} - \befehl{phase}{<phase>} Wenn Sie die Phase nur ein- oder zweimal verwenden müssen. -\end{beschreibung} -\cmd{DeclareChemPhase} definiert die Phase nur dann, wenn \code{<cmd>} noch nicht -existiert. Andernfalls wird \chemmacros entweder eine Warnung oder einen Fehler -ausgeben, abhängig vob der Option \key{strict}. \cmd{RenewChemParticle} definiert -eine Phase \emph{nur}, wenn \code{<cmd>} schon existiert und gibt andernfalls eine -Warnung/einen Fehler. -\begin{beispiel} - \DeclareChemPhase{\aqi}{aq,$\infty$}% aqueous solution at infinite dilution - \DeclareChemPhase{\cd}{cd}% condensed phase - \RenewChemPhase{\lqd}{lc}% liquid crystal - NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd \\ - \chemsetup[phases]{pos=sub} - NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd -\end{beispiel} -\secidx*{Phasen} - -\section{Newman-Projektionen}\label{sec:newman}\secidx{Newman-Projektionen} -\chemmacros stellt den Befehl -\begin{beschreibung} - \Befehl{newman}[<options>]\da{<angle>}\ma{<1>,<2>,<3>,<4>,<5>,<6>} -\end{beschreibung} -zur Verfügung, der Ihnen erlaubt, Newman-Projektionen zu erstellen (verwendet \TikZ). -Das Argument \da{<angle>} dreht die hinteren Atome gegen den Uhrzeigersinn bezüglich -der vorderen Atome. -\begin{beispiel} - \newman{} \newman(170){} - \newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6} -\end{beispiel} - -Es gibt einige Optionen, um den Befehl anzupassen: -\begin{beschreibung} - \option[newman]{angle}{<angle>} Voreingestellter Winkel. Default = \code{0} - \option[newman]{scale}{<factor>} Skaliert die ganze Projektion. Default = \code{1} - \option[newman]{ring}{<tikz>} Aussehen des Rings mit \TikZ-Keys anpassen. - \option[newman]{atoms}{<tikz>} Aussehen der Knoten, in die die Atome geschrieben - werden, mit \TikZ-Keys anpassen. - \option[newman]{back-atoms}{<tikz>} Nur die hinteren Atome anpassen. -\end{beschreibung} - -\begin{beispiel} - \chemsetup[newman]{angle=45} \newman{} - \newman[scale=.75,ring={draw=blue,fill=blue!20}]{} -\end{beispiel} -\begin{beispiel} - \chemsetup[newman]{atoms={draw=red,fill=red!20,inner sep=2pt,rounded corners}} - \newman{1,2,3,4,5,6} -\end{beispiel} -\begin{beispiel} - \chemsetup[newman]{ - atoms = {draw=red,fill=red!20,inner sep=2pt,rounded corners}, - back-atoms = {draw=blue,fill=blue!20,inner sep=2pt,rounded corners} - } - \newman{1,2,3,4,5,6} \newman(170){1,2,3,4,5,6} -\end{beispiel} -\secidx*{Newman-Projektionen} - -%TODO watch pagebreaks! -\section{s, p und Hybrid-Orbitale}\label{sec:orbitale}\secidx{Orbitale} -\chemmacros stellt einen Befehl bereit, mit dem Orbitale visualisiert werden können: -\begin{beschreibung} - \Befehl{orbital}[<options>]{<type} -\end{beschreibung} - -Dabei stehen folgende Typen für \ma{<type>} zur Verfügung: -\begin{description} - \item \code{s} - \item \code{p} - \item \code{sp} - \item \code{sp2} - \item \code{sp3} -\end{description} - -\begin{beispiel} - \orbital{s} \orbital{p} \orbital{sp} \orbital{sp2} \orbital{sp3} -\end{beispiel} - -Abhängig vom Typ stehen verschiedene Optionen zur Modifikation zur Auswahl: -\begin{beschreibung} - \option[orbital]{phase}{\default{+}|-} Ändern der Phase des Orbitals (alle Typen). - \option[orbital]{scale}{<factor>} Ändern der Größe des Orbitals (alle Typen). - \option[orbital]{color}{<color>} Ändern der Farbe des Orbitale (alle Typen). - \option[orbital]{angle}{<angle>} Rotiert die Orbitale mit einem p-Anteil gegen - den Uhrzeigersinn (alle Typen außer \code{s}). - \option[orbital]{half}{\default{true}|false} stellt nur ein halbes Orbital dar - (nur \code{p}). -\end{beschreibung} - -\begin{beispiel} - \orbital{s} \orbital[phase=-]{s} - \orbital{p} \orbital[phase=-]{p} - \orbital{sp3} \orbital[phase=-]{sp3} - - \orbital[angle=0]{p} \orbital[color=red!50]{p} \orbital[angle=135,scale=1.5]{p} \orbital[half]{p} -\end{beispiel} - -Zusätzlich gibt es zwei Optionen, mit denen das \TikZ-Verhalten beeinflusst werden -kann: -\begin{beschreibung} - \option[orbital]{overlay}{\default{true}|false} Das Orbital „braucht keinen Platz”; - es wird mit dem \TikZ-Key \code{overlay} gezeichnet. - \option[orbital]{opacity}{<num>} Das Orbital wird durchsichtig; \code{<value>} - kann Werte zwischen \code{1} (undurchsichtig) bis \code{0} (unsichtbar) annehmen. -\end{beschreibung} - -\begin{beispiel}[dist] - \hspace{1cm} - \chemsetup[orbital]{ - overlay, - p/color = black!70 - } - \setbondoffset{0pt} - \chemfig{?\orbital{p}-[,1.3]{\orbital[phase=-]{p}}-[:30,1.1]\orbital{p}-[:150,.9]{\orbital[phase=-]{p}}-[4,1.3]\orbital{p}-[:-150,1.1]{\orbital[phase=-]{p}}?} - \vspace{7mm} -\end{beispiel} - -\bspmidlength{dist}{10mm} -\begin{beispiel}[dist] - \hspace{2cm} - \setbondoffset{0pt} - \chemsetup[orbital]{ - overlay , - opacity = .75 , - p/scale = 1.6 , - s/color = blue!50 , - s/scale = 1.6 - } - \chemfig{\orbital{s}-[:-20]{\orbital[scale=2]{p}}{\orbital[half,angle=0]{p}}{\orbital[angle=170,half]{p}}{\orbital[angle=-150,half]{p}}(-[:-150]\orbital{s})-\orbital{s}} - \vspace{1cm} -\end{beispiel} -\bspmidlength{dist}{7mm} -\secidx*{Orbitale}\secidx*{CHEMMACROS} - -\newpage -\part{\texorpdfstring{\Chemformula}{chemformula}}\label{part:chemformula}\secidx{CHEMFORMULA} -\chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} -} -\section{Setup} -Alle Optionen von \chemformula gehören dem Modul \textcolor{module}{\code{chemformula}} -an. Das bedeutet, sie können via -\begin{beispiel}[code only] - \chemsetup[chemformula]{<options>} oder - \chemsetup{chemformula/<option1>,chemformula/<option2>} -\end{beispiel} -eingestellt werden. - -Sie können außerdem direkt als Option an den Befehl \cmd{ch} weitergegeben werden. - -\section{Das Grundprinzip} -\chemformula hat einen Hauptbefehl. -\begin{beschreibung} - \Befehl{ch}[<options>]{<input>} -\end{beschreibung} - -Die Verwendung wird Ihnen sehr vertraut vorkommen, wenn Ihnen \paket{mhchem} -geläufig ist: -\begin{beispiel} - \ch{H2O} \\ - \ch{Sb2O3} \\ - \ch{H+} \\ - \ch{CrO4^2-} \\ - \ch{AgCl2-} \\ - \ch{[AgCl2]-} \\ - \ch{Y^{99}+} \\ - \ch{Y^{99+}} \\ - \ch{H2_{(aq)}} \\ - \ch{NO3-} \\ - \ch{(NH4)2S} \\ - \ch{^{227}_{90}Th+} \\ - $V_{\ch{H2O}}$ \\ - \ch{Ce^{IV}} \\ - \ch{KCr(SO4)2 * 12 H2O} -\end{beispiel} - -Es gibt jedoch Unterschiede. Der wichtigste: \chemformula unterscheidet zwischen -verschiedenen Input-Typen. Diese verschiedenen Typen \emph{müssen} durch Leerzeichen -getrennt eingegeben werden: -\begin{beschreibung} - \Befehl{ch}{type1 type2 type3 type4} -\end{beschreibung} - -Ein Leerzeichen im Input ist \emph{niemals} ein Leerzeichen im Output. Die Rolle -des Leerzeichens gilt strikt und kann zu Fehlern oder fehlerhaften Output führen, -wenn sie nicht beachtet wird. - -Ein weiterer wichtiger Unterschied: \chemformula versucht, den Mathematikmodus -weitestgehend zu vermeiden: -\begin{beispiel} - \ch{A + B ->[a] C} \\ - \ce{A + B ->[a] C} -\end{beispiel} - -Der erste Punkt bedeutet, dass \cmd{ch}{2H2O} als \emph{ein} Teil behandelt wird, -in diesem Fall als Summenformel. -\begin{beispiel} - \ch{2H2O} \\ - \ch{2 H2O} -\end{beispiel} -Das bedeutet außerdem, dass ein Teil kein Leerzeichen enthalten kann, da ein -Leerzeichen ihn automatisch in zwei Teile teilen würde. Wenn Sie ein Leerzeichen -im Output benötigen, müssen sie ein \lstinline+~+ eingeben. Da die meisten Makros -ein folgendes Leerzeichen schlucken, wird jedoch ein Input wie \cmd{ch}{\textbackslash -command ABC} als einzelner Teil behandelt. Wenn Sie einen solchen Input teilen wollen, -müssen Sie eine leere Gruppe eingeben: \cmd{ch}{\textbackslash command\{\} ABC}. -Die verschiedenen Input-Typen werden in den folgenden Abschnitten einzeln behandelt. - -Der \cmd{ch}-Befehl hat einige Optionen, mit denen der Output verändert werden kann. -Sie können entweder lokal als optionales Argument oder global mit dem Befehl -\begin{beschreibung} - \Befehl{chemsetup}[chemformula]{<options>} -\end{beschreibung} -gesetzt werden. Alle Optionen von \chemformula gehören dem Modul -\textcolor{module}{\code{chemformula}} an. - -\section{Stöchiometrische Faktoren}\secidx{Stöchiometrische Faktoren}[Stoechiometrische Faktoren] -Ein stöchiometrischer Faktor darf nur aus Ziffern und den Zeichen \lstinline+.,_/()+ -bestehen. -\begin{beispiel} - \ch{2} \\ - \ch{12} - - % decimals: - \ch{.5} \\ - \ch{5,75} - - % fractions: - \ch{3/2} \\ - \ch{1_1/2} - - % ``iupac'': - \ch{(1/2)} -\end{beispiel} - -Wie Sie sehen können, wird bei Dezimalbrüchen eine führende Null ergänzt, wenn -sie in der Eingabe fehlt. - -Sie müssen bei dem Input ein wenig auf die richtige Syntax achten, aber ich denke, -sie ist recht intuitiv. -\begin{beispiel}[code only] - das wird nicht funktionieren sondern einen Fehler geben: \ch{1/1_1} -\end{beispiel} - -Wenn die stöchiometrischen Faktoren in Klammern geschrieben werden, werden die Brüche -nicht umgewandelt und führende Nullen nicht ergänzt. Was in den Klammern steht, -wird genauso geschrieben. -\begin{beispiel} - \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} -\end{beispiel} -Viele Beispiele wie das folgende für die Verwendung von Klammern um stöchiometrische -Faktoren finden Sie \zB im „\ac{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*} - -Der Output kann mit diesen Optionen angepasst werden: -\begin{beschreibung} - \option{decimal-marker}{<marker>} Das Symbol, das als Dezimalzeichen verwendet - wird. Default = \code{.} - \option{frac-style}{math|xfrac|nicefrac} Bestimmt, wie Brüche dargestellt werden. - Default = \code{math} - \option{stoich-space}{<skip>} Der Leerraum nach einem stöchiometrischen Faktor. - Eine elastische Länge. Default = \code{.1667em plus .0333em minus .0117em} - \option{stoich-paren-parse}{\default{true}|false} Wenn die Option auf - \code{true} gesetzt ist, werden auch stöchiometrische Faktoren, die in Klammern - stehen, verarbeitet, d.h. Brüche umgewandelt und führende Nullen ergänzt. - Default = \code{false} -\end{beschreibung} -\begin{beispiel} - \ch[decimal-marker={,}]{3.5} \ch[decimal-marker={$\cdot$}]{3,5} -\end{beispiel} - -Die Option \key{frac-style}{xfrac} verwendet den Befehl \lstinline+\sfrac+ des -\paket{xfrac}-Pakets. Der Output kann sehr von der gewählten Schrift abhängen. -\secidx[xfrac]{Stöchiometrische Faktoren}[Stoechiometrische Faktoren] -\begin{beispiel} - \ch[frac-style=xfrac]{3/2} \ch[frac-style=xfrac]{1_1/2} -\end{beispiel} - -\chemformula definiert die Instanz \lstinline=formula-text-frac=, die nach dem -eigenen Bedarf umdefiniert werden kann. Default ist folgendes: -\begin{beispiel}[code only] - \DeclareInstance{xfrac}{chemformula-text-frac}{text} - { - slash-left-kern = -.15em , - slash-right-kern = -.15em - } -\end{beispiel} -Dieses Dokument verwendet den Font Linux Libertine~O und folgende Definition: -\begin{beispiel}[code only] - \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{beispiel} - -Die Option \key{frac-style}{nicefrac} verwendet den Befehl \lstinline+\nicefrac+ -des \paket{nicefrac}-Pakets.\secidx[nicefrac]{Stöchiometrische Faktoren}[Stoechiometrische Faktoren] -\begin{beispiel} - \ch[frac-style=nicefrac]{3/2} \ch[frac-style=nicefrac]{1_1/2} -\end{beispiel} - -Die Option \key{stoich-space} erlaubt Ihnen, den Leerraum zwischen stöchiometrischem -Faktor und Summenformel einzustellen.\secidx[space]{Stöchiometrische Faktoren}[Stoechiometrische Faktoren] -\begin{beispiel} - \ch{2 H2O} \\ - \ch[stoich-space=.3em]{2 H2O} -\end{beispiel} -\secidx*{Stöchiometrische Faktoren}[Stoechiometrische Faktoren] - -\section{Summenformeln}\label{ssec:compounds}\secidx{Summenformeln} -\chemformula bestimmt Summenformeln als den Typ, der \enquote{nirgendwo sonst -hineinpasst}. Das wird klarer werden, wenn Sie die anderen Typen kennen. -\begin{beispiel} - \ch{H2SO4} \\ - \ch{[Cu(NH3)4]^2+} -\end{beispiel} - -\subsection{Addukte}\secidx[Addukte]{Summenformeln} -\chemformula hat zwei Identifier, die Addukte erzeugen. -\begin{beschreibung} - \befehl{ch}{A.B} \ch{A.B} - \befehl{ch}{A*B} \ch{A*B} -\end{beschreibung} -\begin{beispiel} - \ch{CaSO4.H2O} \\ - \ch{CaSO4*H2O} -\end{beispiel} -Da Ziffern in einer Summenformel immer als Tiefstellung betrachtet werden (siehe -Abschnitt~\ref{ssec:subscripts}), müssen Sie manchmal einen Leerraum lassen, damit -der stöchiometrische Faktor korrekt erkannt wird: -\begin{beispiel} - \ch{Na3PO4*12H2O} \\ - \ch{Na3PO4* 12 H2O} \\ - \ch{Na3PO4 * 12 H2O} -\end{beispiel} - -\subsection{Tiefstellungen}\label{ssec:subscripts}\secidx[Tiefstellungen]{Summenformeln} -\emph{Alle} Ziffern in einer Substanz werden als Tiefstellung behandelt. -\begin{beispiel} - \ch{H2SO4} -\end{beispiel} -Wenn Sie einen Buchstaben als Tiefstellung möchten, verwenden Sie die Mathematik-Syntax: -\begin{beispiel} - \ch{A_nB_m} -\end{beispiel} - -Die Tiefstellung erkennt Gruppen. Sie können darin auch Mathematikmodus verwenden. -\begin{beispiel} - \ch{A_{$n$}B_{$m$}} \\ - \ch{NaCl_{(aq)}} -\end{beispiel} - -\subsection{Befehle}\secidx[Befehle]{Summenformeln} -Befehle sind in einer Summenformel erlaubt: -\begin{beispiel} - \ch{\textbf{A2}B3} \ch{A2\color{red}B3} -\end{beispiel} -Wenn jedoch ein Befehl eine Ziffer als Argument benötigt, wie \zB Leerraum-Befehle -oder der \lstinline+\ox+-Befehl, wird die direkte Verwendung schiefgehen. Das liegt -daran, dass die Ziffern als Tiefstellung behandelt werden, \emph{bevor} der Befehl -expandiert. -\begin{beispiel}[code only] - \ch{A\hspace{2mm}B} wird einen Fehler geben, da \hspace in etwa so etwas sieht: \hspace{$_2$mm}. -\end{beispiel} -Siehe Abschnitt \ref{ssec:text} für einen Ausweg. - -\subsection{Ladungen und andere Hochstellungen}\secidx[Ladungen]{Summenformeln}\secidx[Hochstellungen]{Summenformeln} -\paragraph{Grundlagen} -Wenn eine Summenformel mit einem Plus- oder Minus-Zeichen \emph{endet}, wird es als -Ladungssymbol interpretiert und hochgestellt. An anderen Stellen repräsentiert ein -Plus eine Dreifachbindung und ein Dash eine Einfachbindung, siehe Abschnitt~\ref{ssec:bonds}. -\begin{beispiel} - \ch{A+B} \ch{AB+} \\ - \ch{A-B} \ch{AB-} -\end{beispiel} - -Für längere Ladungsgruppen oder andere Hochstellungen können Sie die Mathematik-Syntax -verwenden. Sie beachtet Gruppen und erlaubt Mathematik in ihnen. Innerhalb dieser -Gruppen werden weder \code{+} noch \code{-} als Bindungen interpretiert. Wenn sich -ein Punkt \code{.} in einer Hochstellung befindet, zeigt er kein Addukt an sondern -ein Radikal. Ein \code{*} gibt den angeregten Zustand. -\begin{beispiel} - \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^*} -\end{beispiel} - -Ionen und Ionenverbindungen mit mehr als einer Ladung werden genauso eingegeben: -\begin{beispiel} - \ch{SO4^2-} \ch{Ca^2+ SO4^2-} -\end{beispiel} - -\paragraph{Ladungsbefehle}\secidx[Hochstellungen!Ladungsbefehle]{Summenformeln} -Man benötigt kein \cmd{mch} und ähnliche Befehle innerhalb von \cmd{ch}. Tatsächlich -\emph{sollte man sie vermeiden}, da sie die Ausrichtung der Hoch- und Tiefstellungen -durcheinander bringen können. Die \chemmacros-Option \code{circled} wird von \cmd{ch} -beachtet. -\begin{beispiel} - \chemsetup[option]{circled=all} - \ch{H+ + OH- <=> H2O} -\end{beispiel} - -\paragraph{Verhalten}\secidx[Hochstellungen!Verhalten]{Summenformeln} -Die Hochstellungen verhalten sich unterschiedlich abhängig von ihrer Position in -einer Summenformel, falls Hoch- und Tiefstellung direkt aufeinander folgen. -\begin{beispiel} - \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \\ - \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} \ch{B^{23}} \ch{B_{123}^{23}} \\ - \ch{^{123}_{23}B} \ch{{}^{123}_{23}B} \ch{_{23}^{123}B} \ch{B^{123}} \ch{B23^{123}} -\end{beispiel} -\begin{itemize} - \item Wenn eine Formel mit einer Hochstellung \emph{startet}, werden Hoch- und - Tiefstellung \emph{rechts} ausgerichtet, ansonsten \emph{links}. - \item Wenn eine Hochstellung einer Tiefstellung \emph{folgt}, wird sie zusätzlich - um eine Länge verschoben, die durch die Option \key{charge-hshift}{<dim>} bestimmt - wird, siehe auch Seite~\pageref{desc:charge-hshift}f. -\end{itemize} - -Der zweite Punkt folgt der \ac{iupac}-Empfehlung: -\begin{zitat}[{\ac{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=1ex]{SO4^2-}, - \ch{(SO4)^2-} The staggered arrangement is now recommended. -\end{zitat} - -\subsection{Bindungen}\label{ssec:bonds}\secidx[Bindungen]{Summenformeln} -\subsubsection{Natürliche Bindungen} -\chemformula kennt drei Sorten Bindungen, die ich \enquote{natürliche Bindungen} -nennen werde: -\begin{beispiel} - einfach: \ch{CH3-CH3} \\ - doppel: \ch{CH2=CH2} \\ - dreifach: \ch{CH+CH} -\end{beispiel} - -\subsubsection{Flexible Bindungen} -\paragraph{Predefined Bindungen} -Zusätzlich zu den drei natürlichen Bindungen gibt es ein paar weitere, die mit -folgendem Befehl aufgerufen werden können: -\begin{beschreibung} - \Befehl{bond}{<bond name>} -\end{beschreibung} -Die vordefinierten Bindungstypen sind in Tabelle~\ref{tab:bond_types} aufgeführt. - -\begin{table} - \centering - \caption{Bindungen, die mit \protect\cmd{bond} aufgerufen werden können.} - \label{tab:bond_types} - \begin{tabular}{lcl} - \toprule - \bfseries Name & \bfseries Aussehen & \bfseries Aliase \\ - \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{beispiel} - \ch{C\bond{sb}C\bond{db}C\bond{tp}C\bond{deloc}C\bond{tdeloc}C\bond{co>}C\bond{<co}C} -\end{beispiel} - -\paragraph{Eigene Bindungen} -\chemformula stellt Befehle bereit, mit denen eigene Bindungen definiert werden -können: -\begin{beschreibung} - \Befehl{DeclareChemBond}{<name>}\ma{<code>} - \Befehl{RenewChemBond}{<name>}\ma{<code>} - \Befehl{DeclareChemBondAlias}{<new name>}\ma{<old name>} - \Befehl{ShowChemBond}{<name>} -\end{beschreibung} -Die Verwendung wird am ehesten durch ein Beispiel beschrieben. Schauen Sie zunächst, -wie die \code{single} und die \code{co>} Bindung definiert sind: -\begin{beispiel}[code only] - \DeclareChemBond{single} - { \draw[chembond] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBond{coordright} - { \draw[chembond,butt cap->] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBondAlias{co>}{coordright} -\end{beispiel} -Hier sind zwei Dinge wichtig: die Namen der Anfangs- und der Endkoordinaten, -\code{chemformula-bond-start} und \code{chemformula-bond-end}, und der \TikZ-Stil -der Bindungen \code{chembond}. - -Sagen wir, Sie wollen eine bestimmte Art von gestrichelter Bindung definieren. -Sie könnten folgendes tun: -\begin{beispiel} - \usetikzlibrary{decorations.pathreplacing} - \makeatletter - \DeclareChemBond{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{beispiel} - -Dieses Beispiel zeigte Ihnen ein weiteres Makro: \makeatletter\cmd{chemformula@bondlength}\makeatother. -Es existiert nur, damit Sie die Länge der Bindung, wie sie mit \key{bond-length} -festgelegt wird, direkt verwenden können.% (siehe auch Seite~\pageref{key:bond-length}). - -\subsection{Anpassung}\secidx[Anpassung]{Summenformeln}\label{ssec:compounds:customization} -Diese Optionen ermöglichen Ihnen, den Output anzupassen: -\begin{beschreibung} - \option{subscript-vshift}{<dim>} Extra vertikale Verschiebung der Tiefstellungen. - Default = \code{0pt} - \option{subscript-style}{text|math} Stil, der für die Tiefstellungen verwendet - wird. Default = \code{text} - \option{charge-hshift}{<dim>} Verschiebung von Hochstellungen, wenn sie einer - Tiefstellung folgen. Default = \code{.25em}\label{desc:charge-hshift} - \option{charge-style}{text|math} Stil, der für Hochstellungen verwendet wird. - Default = \code{text} - \option{adduct-space}{<dim>} Leerraum links und rechts des Addukt-Punktes. - Default = \code{.1333em} - \option{bond-length}{<dim>} Die Länge der Bindungen. Default = \code{.5833em} - \option{bond-offset}{<dim>} Der Abstand zwischen Atom und Bindung. Default = - \code{.07em} - \option{bond-style}{<tikz>} \TikZ-Optionen für die Bindungen. Zunächst - undefiniert. - \option{radical-style}{<tikz>} \TikZ-Optionen für den Radikalpunkt. Zunächst - undefiniert. - \option{radical-radius}{<dim>} Der Radius des Radikalpunktes. Default = - \code{.2ex} - \option{radical-hshift}{<dim>} Horizontaler Leerraum vor dem Radikalpunkt. - Default = \code{.15em} - \option{radical-vshift}{<dim>} Vertikale Position des Radikalpunktes relativ zur - aktuellen Grundlinie. Default = \code{.5ex} - \option{radical-space}{<dim>} Horizontaler Leerraum nach dem Radikalpunkt. - Default = \code{.15em} -\end{beschreibung} - -Vielleicht ist Ihnen aufgefallen, dass bei manchen Ionen die Ladungen nach rechts -verschoben sind:\secidx[Ladungen!Verschiebung]{Summenformeln} -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} -Sie werden verschoben, wenn sie einer Tiefstellung \emph{folgen}, was der -\ac{iupac}-Empfehlung entspricht \cite[][p.\,51]{iupac:greenbook}. Den Betrag der -Verschiebung kann man mit der Option \key{charge-hshift} festlegen. -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5ex} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5pt} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} - -Ungeachtet der \ac{iupac}-Empfehlung erstellt \chemformula keine voll gestaffelten -Hochstellungen in der Voreinstellung, da ich die in manchen Fällen schwer zu lesen -und in anderen Fällen hässlich finde. Da das aber eine subjektive Empfindung ist, -gibt Ihnen \chemformula nicht nur die Möglichkeit, einen absoluten Wert für die -Verschiebung festzulegen, sondern stellt auch eine Möglichkeit für voll gestaffelte -Hochstellungen bereit. Dafür verwenden Sie \key{charge-hshift}{full}. -\begin{beispiel} - \ch[charge-hshift=0pt]{C5H11+} \ch[charge-hshift=0pt]{SO4^2-} \\ - \ch{C5H11+} \ch{SO4^2-} \\ - \ch[charge-hshift=1ex]{C5H11+} \ch[charge-hshift=1ex]{SO4^2-} \\ - \ch[charge-hshift=full]{C5H11+} \ch[charge-hshift=full]{SO4^2-} -\end{beispiel} - -Wenn Sie nicht wollen, dass die Ladungen im Textmodus gesetzt werden, können Sie -zum Mathematikmodus schalten: -\begin{beispiel} - \ch{M^x+} \ch{SO4^2-} \\ - \chemsetup[chemformula]{charge-style = math} - \ch{M^x+} \ch{SO4^2-} -\end{beispiel} - -Die Option \key{subscript-vshift} kann verwendet werden, um die vertikale Verschiebung -der Tiefstellungen anzupassen.\secidx[Tiefstellungen!Verschiebung]{Summenformeln} -\begin{beispiel} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=.5ex} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=-.2ex} - \ch{H2SO4} \ch{Na3PO4} -\end{beispiel} - -Sie können außerdem wählen, in welchem Modus die Tiefstellungen gesetzt werden: -\begin{beispiel} - \ch{A_nB_m} \ch{H2SO4} \\ - \chemsetup[chemformula]{subscript-style = math} - \ch{A_nB_m} \ch{H2SO4} -\end{beispiel} - -Mit der Option \key{adduct-space} kann der Leerraum links und rechts des -Addukt-Zeichens festgesetzt werden. -\begin{beispiel} - \ch{Na3PO3*H2O} \\ - \chemsetup[chemformula]{adduct-space=.2em} - \ch{Na3PO3*H2O} -\end{beispiel} - -Die Länge der Bindungen ändern:\secidx[Bindungen!Laenge@Länge]{Summenformeln} -\begin{beispiel} - \chemsetup[chemformula]{bond-length=4mm}% - single: \ch{CH3-CH3} \\ - double: \ch{CH2=CH2} \\ - triple: \ch{CH+CH} -\end{beispiel} - -Sie können ebenfalls den Abstand zwischen Atom und Bindung einstellen: -\begin{beispiel} - \ch{H-H + N+N + O=O} \\ - \ch[bond-offset=1pt]{H-H + N+N + O=O} -\end{beispiel} -\secidx*{Summenformeln} - -\section{Spezielle Input-Typen}\secidx{Spezielle Input-Typen} -Es gibt einige \enquote{spezielle Input-Typen}. - -\subsection{Single-Token Input}\secidx[Single-Token Input]{Spezielle Input-Typen} -Die erste Sorte besteht nur aus einem Token, nämlich einem der folgenden: -\begin{beschreibung} - \befehl{ch}{ + } \ch{+} Erstellt ein Plus-Zeichen zwischen Formeln mit Leerraum - links und rechts:\\ - \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} - \befehl{ch}{ v } \ch{v} Zeichen für eine Fällung/Niederschlag: \cmd{ch}{BaSO4 v} \ch{BaSO4 v} - \befehl{ch}{ \lstinline+^+ } \ch{^} Zeichen für entweichendes Gas: \cmd{ch}{\lstinline=H2 ^=} \ch{H2 ^} -\end{beschreibung} - -Der Leerraum links und rechts des Plus kann mit einer Option angepasst werden: -\begin{beschreibung} - \option{plus-space}{<skip>} Eine elastische Länge. Default = - \code{.3em plus .1em minus .1em} -\end{beschreibung} -\begin{beispiel} - \ch{A + B}\\ - \ch[plus-space=4pt]{A + B} -\end{beispiel} - -\subsection{Optionen Input}\secidx[Optionen Input]{Spezielle Input-Typen} -Manchmal möchte man eine Option nur auf einen Teil einer, sagen wir, Reaktion -anwenden. Natürlich können Sie \cmd{ch} mehrmals verwenden. -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} -\end{beispiel} -Das unterbricht allerdings die Eingabe im Quelltext und \emph{könnte} die Abstände -beeinflussen. Deshalb gibt es eine Alternative: -\begin{beschreibung}\makeatletter - \befehl{ch}{ @\{<options>\} } Die angegebenen Optionen sind \emph{nur} aktiv bis - nach der \emph{nächsten} Summenformel. -\end{beschreibung} -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ - oder nat\"urlich:\\ - \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} -\end{beispiel} -\achtung{Das ist ein experimentelles Feature und mag in zukünftigen Versionen -fallen gelassen werden.} -\secidx*{Spezielle Input-Typen} - -\section{Geschützter Input}\secidx{Geschützter Input}[Geschuetzter Input] -In manchen Fällen kann es wünschenswert sein, \chemformula davon abzuhalten, den -Input zu verarbeiten. Es gibt zwei Möglichkeiten, das zu tun. - -\subsection{Text}\label{ssec:text}\secidx[text]{Geschützter Input}[Geschuetzter Input] -Wenn Sie etwas zwischen \lstinline+" "+ oder \lstinline+' '+ setzen, dann wird der -Input als normaler Text behandelt, abgesehen davon, das Leerzeichen nicht erlaubt -sind und mit \lstinline+~+ eingegeben werden müssen. -\begin{beschreibung} - \Befehl{ch}{ "<escaped text>" } - \Befehl{ch}{ '<escaped text>' } -\end{beschreibung} -\begin{beispiel} - \ch{"\ox{2,Ca}" O} \\ - \ch{"\ldots\," Na + "\ldots\," Cl2 -> "\ldots\," NaCl} \\ - \ch{'A~->~B'} -\end{beispiel} -In vielen Fällen wird das nicht nötig sein. Aber wenn Sie Schwierigkeiten haben, -einen Befehl innerhalb von \cmd{ch} zu verwenden, versuchen Sie die geschützte -Methode. - -\subsection{Mathematik}\secidx[math]{Geschützter Input}[Geschuetzter Input] -Wenn Sie speziell Mathematik-Input haben, setzen Sie ihn einfach zwischen -\lstinline+$ $+. Der Output unterscheidet sich vom geschützten Text (abgesehen -von Mathe-Layout) darin, dass ihm ein Leerraum folgt. Der Grund dafür ist, dass -ich davon ausgehe, das Mathe-Eingabe vor allem an Stelle von stöchiometrischen -Faktoren eingesetzt wird. -\begin{beschreibung} - \Befehl{ch}{ \string$<escaped math>\string$ } - \Befehl{ch}{ \string\(<escaped math>\string\) } -\end{beschreibung} -\begin{beispiel} - escaped text: \ch{"$x$" H2O} \\ - escaped math: \ch{$x$ H2O} \\ - also escaped math: \ch{\(x\) H2O} \\ - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} -\end{beispiel} - -Der Leerraum, der nach dem geschützen Mathe-Input ausgegeben wird, kann angepasst -werden. -\begin{beschreibung} - \option{math-space}{<skip>} Eine elastische Länge. Default = - \code{.1667em plus .0333em minus .0117em} -\end{beschreibung} -\begin{beispiel} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \chemsetup[chemformula]{math-space=.25em} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \ch{$A->B$} -\end{beispiel} -\secidx*{Geschützter Input}[Geschuetzter Input] - -\section{Pfeile}\label{sec:arrows}\secidx{Pfeile} -\subsection{Pfeiltypen}\secidx[Typen]{Pfeile} -Pfeile werden auf die gleiche intuitive Weise eingegeben wie bei \paket{mhchem}. -Es gibt eine Reihe verschiedener Typen: -\begin{beschreibung} - \befehl{ch}{ -> } \ch{->} Standardpfeil nach rechts - \befehl{ch}{ <- } \ch{<-} Standardpfeil nach links - \befehl{ch}{ -/> } \ch{-/>} reagiert nicht (rechts) - \befehl{ch}{ </- } \ch{</-} reagiert nicht (links) - \befehl{ch}{ <-> } \ch{<->} Mesomerie-Pfeil - \befehl{ch}{ <> } \ch{<>} Reaktion in beide Richtungen - \befehl{ch}{ == } \ch{==} stöchiometrische Gleichung - \befehl{ch}{ <=> } \ch{<=>} Gleichgewichts-Pfeil - \befehl{ch}{ \lstinline+<=>>+ } \ch{<=>>} Gleichgewicht liegt rechts - \befehl{ch}{ \lstinline+<<=>+ } \ch{<<=>} Gleichgewicht liegt links - \befehl{ch}{ <o> } \ch{<o>} Isolobal-Pfeil -\end{beschreibung} -Diese Pfeile werden alle mit \TikZ gezeichnet. -\begin{beispiel} - \ch{H2 + Cl2 -> 2 HCl} \\ - \ch{H2O + CO3^2- <=> OH- + HCO3-} \\ - \ch{A <- B} \\ - \ch{\{[CH2=CH-CH2]- <-> [CH2-CH=CH2]- \}} \\ - \ch{A <> B} \\ - \ch{H+ + OH- <=>> H2O} \\ - \ch{2 NO2 <<=> N2O4} -\end{beispiel} - -\subsection{Beschriftung}\secidx[Beschriftung]{Pfeile} -Die Pfeile haben zwei optionale Argumente für Beschriftungen. -\begin{beschreibung} - \Befehl{ch}{ ->[<above>][<below>] } -\end{beschreibung} -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[a][b] B} \\ - \ch{A ->[\SI{100}{\celsius}] B} -\end{beispiel} -Der Beschriftungstext kann unabhängig vom Pfeil verarbeitet werden. Das Rezept -ist einfach: verwenden Sie Leerzeichen. -\begin{beispiel} - \ch{A ->[H2O] B} \\ - \ch{A ->[ H2O ] B} \\ - \ch{A ->[ "\ox{2,Ca}" F2 ] B} \\ - \ch{A ->[$\Delta$,~ \[H+ \]] B} -\end{beispiel} - -Mit den Leerzeichen verarbeitet \chemformula den Teil zwischen den Klammern als -normalen Input. Die Pfeile lesen ihre Argumente erst \emph{nach} der Verarbeitung. -Wie Sie sehen können \enquote{wachsen} die Pfeile mit der Länge der Beschriftungen. -Konstant bleibt der überstehende Teil. Im letzten Beispiel können Sie außerdem -sehen, dass eckige Klammern in den Pfeilargumenten durch \cmd{[} und \cmd{]} -erstellt werden sollten. Außerhalb von \cmd{ch} behalten Sie natürlich ihre -übliche Bedeutung. Diese Befehle sind nötig da die sonst übliche Methode (Verstecken -der Klammern in geschweiften Klammern) aufgrund der Art, wie \cmd{ch} sein Argument -liest, nicht funktioniert. -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[ab] B} \\ - \ch{A ->[abc] B} \\ - \ch{A ->[abc~abc] B} \\ - % needs the `chemfig' package: - \setatomsep{15pt} - \ch{A ->[ "\chemfig{-[:30]-[:-30]OH}" ] B} \\ - \ch{A ->[[]] B} vs. \ch{A ->[\[\]] B} -\end{beispiel} - -\subsection{Anpassung}\secidx[Anpassung]{Pfeile} -Mit folgenden Optionen können Sie das Erscheinungsbild der Pfeile anpassen: -\begin{beschreibung} - \option{arrow-offset}{<dim>} Die Länge, die ein Pfeil links und rechts über die - Beschriftung hinausragt. Die Länge eines leeren Pfeils beträgt zwei mal - \code{arrow-offset}. Eine \TeX-Länge. Default = \code{.75em} - \option{arrow-min-length}{<dim>} Die minimale Länge, die ein Pfeil hat, wenn - zwei mal \key{arrow-offset} plus die Breite der Beschriftung nicht größer ist. - Default = \code{0pt} - \option{arrow-yshift}{<dim>} Verschiebt einen Pfeil nach oben (positiver Wert) - oder nach unten (negativer Wert). Eine \TeX-Länge. Default = \code{0pt} - \option{arrow-ratio}{<factor>} Das Verhältnis der Pfeillängen der ver unbalancierten - Gleichgewichtspfeile. \code{.4} würde bedeuten, dass der kürzere Pfeil $0.4$ - mal so lang ist, wie der längere Pfeil. Default = \code{.6} - \option{compound-sep}{<dim>} Der Leerraum zwischen Formeln und Pfeilen. Eine - \TeX-Länge. Default = \code{.5em} - \option{label-offset}{<dim>} Der Leerraum zwischen Pfeilen und ihrer Beschriftung. - Eine \TeX-Länge. Default = \code{2pt} - \option{label-style}{<font command>} Die relative Schriftgröße der Beschriftung. - Default = \lstinline+\footnotesize+ -\end{beschreibung} - -Der folgende Code zeigt die Effekte der verschiedenen Optionen auf den -\lstinline+<=>>+ Pfeil: -\begin{beispiel} - Standard: \ch{A <=>>[x][y] B} \\ - l\"anger: \ch[arrow-offset=12pt]{A <=>>[x][y] B} \\ - h\"oher: \ch[arrow-yshift=2pt]{A <=>>[x][y] B} \\ - ausbalancierter: \ch[arrow-ratio=.8]{A <=>>[x][y] B} \\ - Bschriftung weiter weg: \ch[label-offset=4pt]{A <=>>[x][y] B} \\ - gr\"o\ss erer Abstand zu Formeln: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ - kleinere Beschriftungen: \ch[label-style=\tiny]{A <=>[x][y] B} -\end{beispiel} - -\subsection{Pfeiltypen bearbeiten}\label{sec:arrows_modify}\secidx[Typen!bearbeiten]{Pfeile} -Die Pfeile wurden mit dem Befehl -\begin{beschreibung} - \Befehl{DeclareChemArrow}{<tokens>}\ma{<tikz>} -\end{beschreibung} -definiert. \ma{<tokens>} sind die Zeichen, die ersetzt werden mit dem tatsächlichen -Pfeilcode. Der Hauptpfeil wurde \zB via -\begin{beispiel}[code only] - \DeclareChemArrow{->}{\draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ;} -\end{beispiel} -definiert. Wenn Sie selbst Pfeile definieren wollen, benötigen Sie grundlegende -Kenntnisse von \TikZ\footnote{Bitte lesen Sie dazu das \textsf{pgfmanual}.}. - -Es gibt einige vordefinierte Koordinaten, die Sie verwenden können und sollten: -\begin{description} - \item[\code{(cf\_arrow\_start)}] Der Pfeilanfang. - \item[\code{(cf\_arrow\_end)}] Das Pfeilende. - \item[\code{(cf\_arrow\_mid)}] Die Pfeilmitte. - \item[\code{(cf\_arrow\_mid\_start)}] Der Anfang des kürzeren Pfeils in Typen - wie \lstinline+<=>>+. - \item[\code{(cf\_arrow\_mid\_end)}] Das Ende des kürzeren Pfeils in Typen wie - \lstinline+<=>>+. - \item[\code{cf}, \code{left cf}, \code{right cf}] Für \chemformula definierte - Pfeilspitzen. -\end{description} -\begin{beispiel} - \DeclareChemArrow{.>}{\draw[-cf,dotted,red] (cf_arrow_start) -- (cf_arrow_end);} - \DeclareChemArrow{n>}{\draw[-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{beispiel} -Wenn Sie einen existierenden Pfeil umdefinieren möchten, können Sie folgende zwei -Befehle verwenden: -\begin{beschreibung} - \Befehl{RenewChemArrow}{<tokens>}\ma{<tikz>} - \Befehl{ShowChemArrow}{<tokens>} -\end{beschreibung} -Der zweite zeigt Ihnen die bestehende Definition, der erste definiert den bestehenden -Pfeil neu. -\begin{beispiel} - \texttt{\ShowChemArrow{->}} \\ - \RenewChemArrow{->}{\draw[->,red] (cf_arrow_start) -- (cf_arrow_end) ;} - \texttt{\ShowChemArrow{->}} \\ - \ch{A -> B} -\end{beispiel} -\secidx*{Pfeile} - -\section{Text unter Formeln}\secidx{Text unter Formeln} -\subsection{Syntax}\secidx[syntax]{Text unter Formeln} -\chemformula hat eine eingebaute Syntax, um Text unter Formeln zu schreiben. Sie -funktioniert ähnlich wie die optionalen Argumente der Pfeile. -\begin{beschreibung} - \Befehl{ch}{ !(<name>)( <formula> ) } -\end{beschreibung} -Wenn ein Ausrufezeichen von einem Paar von Klammern gefolgt wird, macht \chemformula folgendes: -\begin{beispiel} - \ch{!(ethanol)( CH2CH2OH )} -\end{beispiel} - -Das gleiche, was für die Pfeilbeschriftungen gilt, gilt auch hier: wenn Sie Leerzeichen -lassen, werden die verschiedenen Teile entsprechend ihres Typs verarbeitet, bevor -der Text unter die Formel geschrieben wird. -\begin{beispiel} - \ch{!(water)(H2O)} \quad - \ch{!( "\textcolor{blue}{water}" )( H2O )} \quad - \ch{!( $2n-1$ )( H2O )} \quad - \ch{!( H2O )( H2O )} \quad - \ch{!(oxonium)( H3O+ )} -\end{beispiel} - -Wenn Sie aus irgendeinem Grund ein Ausrufezeichen wollen, \emph{ohne} dass es -einen Text unter eine Formel setzt, müssen Sie lediglich darauf achten, dass ihm -keine Klammern folgen. -\begin{beispiel} - \ch{H2O~(!)} \\ - \ch{A!{}()} -\end{beispiel} - -\subsection{Anpassung}\secidx[Anpassung]{Text unter Formeln} -\chemformula stellt zwei Optionen bereit, um den Text anzupassen: -\begin{beschreibung} - \option{name-format}{<commands>} Das Ausgabeformat des Textes. Das kann beliebiger - Input sein. Default = \lstinline+\scriptsize\centering+ - \option{name-width}{<dim>|auto} Die Breite der Box, in die der Text geschrieben wird. - \code{auto} erkennt die Breite der Beschriftung und setzt die Box auf diese Breite. - Default = \code{auto} -\end{beschreibung} -\begin{beispiel} - \ch{!(S\"aure)( H2SO4 ) -> B} \\ - \ch[name-format=\sffamily\small]{!(S\"aure)( H2SO4 ) -> B} \\ - \ch[name-format=\scriptsize N:~]{!(S\"aure)( H2SO4 ) -> B} \\ - \ch[name-width=3em,name-format=\scriptsize\raggedright]{!(S\"aure)( H2SO4 ) -> B} -\end{beispiel} -\secidx*{Text unter Formeln} - -\section{Format und Schrift}\label{sec:format}\secidx{Format und Schrift} -Als Standardeinstellung nimmt \chemformula keine Veränderungen am Output der Formeln -vor. Lassen Sie uns einen Nonsens-Input nehmen, der alle \chemformula-Features zeigt: -\begin{beispiel} - \newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} - \sample -\end{beispiel} -\newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} -Nun ändern wir verschiedene Aspekte der Schrift und sehen, was passiert: -\begin{beispiel}[below] - \sffamily Hallo \sample \\ - \ttfamily Hallo \sample \normalfont \\ - \bfseries Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{beispiel} -Wie Sie sehen, adaptieren die meisten Features die Einstellungen des umliegenden Fonts. - -Wenn Sie dieses Default-Verhalten oder das Default-Format ändern wollen, können -Sie diese Option verwenden: -\begin{beschreibung} - \option{format}{<anything>} Fügt zu Beginn des \cmd{ch}-Befehls beliebigen Code - ein. -\end{beschreibung} -\begin{beispiel} - % blau und serifenlos: - \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{beispiel} - -Sie können ebenfalls speziell die Schriftfamilie, Schriftserie und Schriftform des -Output setzen: -\begin{beschreibung} - \option{font-family}{<family>} Ändert die Schriftfamilie des Output mit: - \lstinline+\fontfamily{<family>}\selectfont+. - \option{font-series}{<series>} Ändert die Schriftserie des Output mit: - \lstinline+\fontseries{<series>}\selectfont+. - \option{font-shape}{<shape>} Ändert die Schriftform des Output mit: - \lstinline+\fontshape{<shape>}\selectfont+. -\end{beschreibung} -\begin{beispiel} - % immer fett: - \chemsetup[chemformula]{font-series=bx} - Hallo \sample \\ - \sffamily Hallo \sample \normalfont \\ - \chemsetup[chemformula]{font-family=lmr,font-series=m} Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{beispiel} - -Wenn Sie \XeLaTeX\ oder \LuaLaTeX\ verwenden und das Paket \paket{fontspec} geladen -haben, können Sie die Schrift von \chemformula auch damit ändern: -\begin{beschreibung} - \Option{font-spec}{\{<font>\}} oder mit Optionen - \Option{font-spec}{\{[<options>]<font>\}} -\end{beschreibung} -\begin{beispiel} - \chemsetup[chemformula]{font-spec={Linux Biolinum O}} \sample \\ - \chemsetup[chemformula]{font-spec={[Color=darkgray]Augie}} \sample \\ - \chemsetup[chemformula]{font-spec={Tipbrush Script}} \sample \\ - \chemsetup[chemformula]{font-spec={Latin Modern Sans}} \sample \\ - \bfseries \sample \normalfont \\ - \chemsetup[chemformula]{font-spec={Feathergraphy Decoration}} \sample -\end{beispiel} -\secidx*{Format und Schrift} - -\section{Verwendung in Mathematik-Umgebungen}\secidx{Mathematik-Umgebungen} -Der Befehl \cmd{ch} kann in Mathematikumgebungen eingesetzt werden. Er erkennt -\lstinline+\\+ und \lstinline+&+ und reicht sie weiter. Sie können aber die -optionalen Argumente von \lstinline+\\+ nicht innerhalb von \cmd{ch} verwenden. -\begin{beispiel} - \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{beispiel} -\secidx*{Mathematik-Umgebungen} - -\section{Weitere Beispiele} -Dieser Abschnitt zeigt weitere Beispiele für die Verwendung von \chemformula, auch -im Zusammenspiel mit \chemmacros' \code{reaction}-Umgebungen. - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \begin{reactions*} - CH3MgBr + "\ox*{1,Cu}" X &-> "\glqq" CH3 "\ox*{1,Cu}\grqq" + MgBrX "\qquad X~$=$~Br,I,CN" \\ - 2 MeLi + CuI &-> !(Dimethylcuprat~(Gilmann-Cuprat))( Me2CuLi ) + Li - \end{reactions*} -\end{beispiel} - -\begin{beispiel} - % 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{beispiel} - -Das folgende Beispiel zeigt, wie das kürzen von Formeln erreicht werden -kann\footnote{Inspiriert durch eine Frage auf TeX.SE: \url{http://tex.stackexchange.com/q/30118/5049}}. -\begin{beispiel} - % needs `cancel' - \begin{align*} - \centering - \ch{\cancel{HCOOH\aq} + H2O\lqd{} &<=> H3O^+\aq{} + \cancel{HCOO^-\aq}} \\ - \ch{\cancel{HCOO^-\aq} + H2O\lqd{} &<=> \cancel{HCOOH\aq} + OH^-\aq}\\[-1ex] - \cline{1-2} - \ch{H2O\lqd{} + H2O\lqd{} &<=> H3O^+\aq{} + OH^-\aq} - \end{align*} -\end{beispiel} -\secidx*{CHEMFORMULA} - -\part{\texorpdfstring{\Ghsystem}{ghsystem}}\label{part:ghsystem}\secidx{GHSYSTEM} -\section{Setup} -Alle Optionen von \ghsystem gehören dem Modul \textcolor{module}{\code{ghsystem}} -an. Sie können also mit -\begin{beschreibung} - \Befehl{chemsetup}[ghsystem]{<options>} oder - \Befehl{chemsetup}{ghsystem/<option1>,ghsystem/<option2>} -\end{beschreibung} -eingestellt werden. Sie können den entsprechenden Befehlen auch lokal als optionales -Argument mitgegeben werden. - -\section{Die Gefahren- (H) und Sicherheitssätze (P) aufrufen}\secidx{Gefahren- und Sicherheitssätze}[Gefahren- und Sicherheitssaetze] -\subsection{Einfacher Aufruf}\secidx[Aufruf]{GHSYSTEM} -Der prinzipielle Aufruf ist einfach: -\begin{beschreibung} - \Befehl{ghs}[<options>]{<type>}\ma{<number>} - \Befehl[ghsa]{ghs*}[<options>]{<type>}\ma{<number>} -\end{beschreibung} -Es gibt drei Typen von Sätzen: \code{h}, \code{euh} und \code{p}. Das \ma{<type>} -Argument ignoriert Groß- und Kleinschreibung. -\begin{beispiel} - \ghs{h}{200} \\ - \ghs{H}{224} \\ - \ghs{euh}{001} \\ - \ghs{Euh}{202} \\ - \ghs{p}{201} -\end{beispiel} - -Die gesternte Version versteckt die Nummer und liefert nur den Satz. Wenn Sie den -Satz verstecken und nur die Nummer ausgeben wollen, können Sie dises Option -verwenden: -\begin{beschreibung} - \Option{hide}{\default{true}|false} -\end{beschreibung} - -Außerdem gibt es eine Option, mit der der Output angepasst werden kann. -\begin{beschreibung} - \option{space}{<space command>} Leerraum zwischen \code{<type>} und \code{<number>}. -\end{beschreibung} -\begin{beispiel} - \ghs{h}{200} \\ - \ghs[space=\,]{h}{200} \\ - \ghs*{h}{200} \\ - \ghs[hide]{h}{200} -\end{beispiel} - -\subsection{Sätze mit Platzhaltern}\secidx[Platzhalter]{GHSYSTEM} -Einige Sätze verwenden Platzhalter. Es gibt vier Stück: -\begin{itemize} - \item \textit{\textless Expositionsweg angeben, sofern schlüssig belegt ist, dass - diese Gefahr bei keinem anderen Expositionsweg besteht\textgreater} - \item \textit{\textless konkrete Wirkung angeben, sofern bekannt\textgreater} - \item \textit{\textless oder alle betroffenen Organe nennen, sofern bekannt\textgreater} - \item \textit{\textless Name des sensibilisierenden Stoffes\textgreater} -\end{itemize} - -Außer dem letzten, der ersetzt werden muss, sind sie in der Voreinstellung versteckt. -Durch die Option -\begin{beschreibung} - \option{fill-in}{\default{true}|false} Default = \code{false} -\end{beschreibung} -können sie sichtbar gemacht werden. -\begin{beispiel}[below] - \ghs{h}{340} \\ - \ghs[fill-in]{h}{340} \\ - \ghs{h}{360} \\ - \ghs[fill-in]{h}{360} \\ - \ghs{h}{370} \\ - \ghs[fill-in]{h}{370} \\ - \ghs{euh}{208} \\ - \ghs[fill-in]{euh}{208} -\end{beispiel} - -Mit folgenden Optionen können die Platzhalter ersetzt werden: -\begin{beschreibung} - \option{exposure}{<text>} Expositions-Platzhalter - \option{effect}{<text>} Effekt-Platzhalter - \option{organs}{<text>} Organ-Platzhalter - \option{substance}{<text>} Substanz-Platzhalter -\end{beschreibung} -\begin{beispiel} - \ghs[exposure=So werden Sie der Gefahr ausgesetzt.]{h}{340} \\ - \ghs[effect=Das sind die Effekte]{h}{360} \\ - \ghs[organs=dieses Organ]{h}{370} \\ - \ghs[substance=Substanz]{euh}{208} -\end{beispiel} - -\subsection{Sätze mit Lücken}\secidx[Saetze mit Luecken@Sätze mit Lücken]{GHSYSTEM} -Manche Sätze haben Lücken: -\begin{beispiel} - \ghs{p}{301} \\ - \ghs{p}{401} \\ - \ghs{p}{411} \\ - \ghs{p}{413} -\end{beispiel} - -Mit den folgenden Optionen können diese Lücken gefüllt werden: -\begin{beschreibung} - \option{text}{<text>} Füllt \enquote{unsichtbare Lücke}, die einem Doppelpunkt - folgt. - \option{dots}{<text>} Füllt Lücke, die durch \enquote{\ldots} angezeigt wird. - \option{C-temperature}{<num>} Füllt Celsius-Temperatur. - \option{F-temperature}{<num>} Füllt Fahrenheit-temperatur. - \option{kg-mass}{<num>} Füllt Kilogramm-Masse. - \option{lbs-mass}{<num>} Füllt Pfund-Masse. -\end{beschreibung} -\begin{beispiel} - \ghs[text=Arzt kontaktieren!]{p}{301} \\ - \ghs[dots=hier]{p}{401} \\ - \ghs[C-temperature=50, F-temperature=122]{p}{411} \\ - \ghs[kg-mass=5.0, lbs-mass=11, C-temperature=50, F-temperature=122]{p}{413} -\end{beispiel} - -\subsection{Kombinierte Sätze}\secidx[kombinierte Saetze@kombinierte Sätze]{GHSYSTEM} -Es existieren einige Kombinationen von Sätzen. Sie werden mit einem \code{+} -zwischen den Nummern eingegeben: -\begin{beispiel}[below] - \ghs{p}{235+410} \\ - \ghs{p}{301+330+331} -\end{beispiel} - -Beachten Sie, dass sie nur offizielle Kombinationen eingeben können. \emph{Sie -können die Sätze nicht frei kombinieren}. -\secidx*{Gefahren- und Sicherheitssätze}[Gefahren- und Sicherheitssaetze] - -\section{Piktogramme}\secidx{Piktogramme} -\subsection{Die Bilder} -Das GHS beinhaltet einige Piktogramme: - -\ghspic{explos} \ghspic{flame} \ghspic{flame-O} \ghspic{bottle} \ghspic{acid} -\ghspic{skull} \ghspic{exclam} \ghspic{health} \ghspic{aqpol} - -Der Befehl -\begin{beschreibung} - \Befehl{ghspic}[<options>]{<name>} -\end{beschreibung} -lädt sie. Tabelle~\ref{tab:ghs_pictograms} zeigt alle Piktogramme und ihre Dateinamen. -Genauer: sie zeigt die Namen, die beim Befehl \cmd{ghspic} verwendet werden müssen. -Tatsächlich heißen sie \lstinline=ghsystem_<name>.<filetype>=, wobei \code{<filetype>} -entweder \code{eps}, \code{pdf}, \code{jpg} oder \code{png} ist, siehe auch -Abschnitt~\ref{ssec:picture_type}. -\begin{beispiel} - \ghspic{skull} -\end{beispiel} - -Wenn Ihnen die Defaultgröße nicht gefällt, können Sie die Option -\begin{beschreibung} - \option{scale}{<factor>} Skaliert das Piktogramm. Default = \code{1} -\end{beschreibung} -verwenden. Tatsächlich sind die Bilder recht groß. Die Voreinstellung (Faktor = -$1$) skaliert die Bilder auf ein Zwanzigstel ihrer echten Größe. -\begin{beispiel} - \ghspic[scale=2]{skull} -\end{beispiel} - -Wenn Sie spezielle \lstinline=\includegraphics=-Optionen verwenden wollen, \zB -das Piktogramm rotieren, verwenden Sie diese Option: -\begin{beschreibung} - \Option{includegraphics}{\{<includegraphics keyvals>\}} -\end{beschreibung} -\begin{beispiel} - \ghspic[includegraphics={angle=90}]{skull} -\end{beispiel} - -\begin{longtable}{>{\ttfamily}ll>{\ttfamily}ll} - \caption{Alle verfügbaren GHS Piktogramme.\label{tab:ghs_pictograms}} \\ - \toprule - \normalfont\bfseries Name & \bfseries Piktogramm & \normalfont\bfseries Name & \bfseries Piktogramm \\ - \midrule\endfirsthead - \toprule - \normalfont\bfseries Name & \bfseries Piktogramm & \normalfont\bfseries Name & \bfseries Piktogramm \\ - \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{Der Bildtyp hängt von der Engine ab}\label{ssec:picture_type} -Sie wissen vermutlich, dass Sie nicht jeden Bildtyp mit jeder Compiler-Engine -verwenden können. \pdfTeX{} im \acs{dvi}-Modus verlangt \code{eps}-Dateien, -während \pdfTeX{} im \acs{pdf}-Modus, \XeTeX{} und \LuaTeX{} \code{eps}-Dateien -in \code{pdf}-Dateien konvertieren, vorausgesetzt, der Anwender hat Schreibrechte -in dem Verzeichnis, in dem die Bilder gespeichert sind. - -Die letztgenannten können jedoch \code{jpg}- und \code{png}-Dateien ohne Schwierigkeiten -einbinden, während \pdfTeX{} im \acs{dvi}-Modus das nicht kann. - -Um das Problem zu lösen, testet \ghsystem, welche Engine verwendet wird und falls -es \pdfTeX{} ist, in welchem Modus es verwendet wird. Dann wird entwder das -\code{eps}- oder das \code{png}-Bild für die Piktogramme verwendet. Sie können -den Bildtyp über die Option -\begin{beschreibung} - \Option{pic-type}{eps|pdf|jpg|png} -\end{beschreibung} -jedoch frei wählen. -\secidx*{Piktogramme} - -\section{Verfügbare Sprachen}\label{sec:ghsystem_language} -Bis jetzt sind die H- und P-Sätze nur auf deutsch, englisch und italienisch verfügbar. -Das Paket reagiert auf die \chemmacros Option \key[option]{german}, erkennt aber -die Spracheinstellung von \paket{babel} oder \paket{polyglossia} (noch) nicht. - -Sie können die Sprache auch explizit wählen. -\begin{beschreibung} - \Option{language}{english|german|italian} -\end{beschreibung} -\begin{beispiel} - \ghs{h}{201} - - \chemsetup[ghsystem]{language=english} - \ghs{h}{201} -\end{beispiel} - -Ich werde in irgendwann in der Zukunft weitere Sprachen implementieren. Das kann -aber eine Weile dauern. Wenn Sie gerne zu \ghsystem beisteuern möchten und die -Sätze in einer anderen Sprache tippen wollen, kontaktieren Sie mich\footnote{% -\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}} gerne. Ich stelle -Ihnen dann eine Template-Datei, ein \acs{pdf} mit den offiziellen Übersetzungen -sowie jede weitere Hilfe, die sie benötigen. - -\section{Liste aller Sätze}\secidx{Liste aller Sätze}[Liste aller Saetze] -Wenn Sie gerne alle Sätze auf\-listen wollen, können Sie -\begin{beschreibung} - \Befehl{ghslistall}[<options>] -\end{beschreibung} -verwenden. - -Dieser Befehl erstellt eine Tabelle aller Sätze mit der \lstinline=longtable=-Umgebung -des \paket{longtable} Pakets. Ihr Erscheinungsbild kann mit den folgenden Optionen -angepasst werden. -\begin{beschreibung} - \option{table-head-number}{<text>} Default = \code{Nummer} - \option{table-head-text}{<text>} Default = \code{Satz} - \option{table-next-page}{<text>} Default = \code{weiter auf der nächsten Seite} - \option{table-caption}{<text>} \code{<text>} in \lstinline=\caption{<text>}=. - Default = \code{All H, EUH, and P Statements.} - \option{table-caption-short}{<text>} \code{<short>} in - \lstinline=\caption[<short>]{<text>}=. - \option{table-label}{<text>} Das Label, mit dem man auf die Tabelle \lstinline=\ref= - und ähnlichen Befehlen verweisen kann. Default = \code{tab:ghs-hp-statements} - \option{table-row-sep}{<dim>} Abstand zwischen den Zeilen. Eine \TeX-Länge. - Default = \code{3pt} - \option{table-rules}{\default{default}|booktabs|none} Der Stil der horizontalen - Linien in der Tabelle. \code{default} verwendet \lstinline=\hline=, \code{booktabs} - verwendet \lstinline=\toprule=, \lstinline=\midrule= und \lstinline=\bottomrule=. - Dieser Wert benötigt das \paket{booktabs} Paket, dass Sie dann einbinden müssen. - Default = \code{default} - \option{table-top-head-rule}{\default{default}|booktabs|none} Explizites Ändern - der Linie. Default = \code{default} - \option{table-head-rule}{\default{default}|booktabs|none} Explizites Ändern der - Linie. Default = \code{default} - \option{table-foot-rule}{\default{default}|booktabs|none} Explizites Ändern der - Linie. Default = \code{default} - \option{table-last-foot-rule}{\default{default}|booktabs|none} Explizites Ändern - der Linie. Default = \code{default} -\end{beschreibung} - -Der folgende Code zeigt, wie Tabelle~\ref{tab:ghs-hp-statements} erzeugt wurde: -\begin{beispiel}[code only] - \ghslistall[fill-in,table-rules=booktabs] -\end{beispiel} - -\ghslistall[fill-in,table-rules=booktabs] -\secidx*{Liste aller Sätze}[Liste aller Saetze]\secidx*{GHSYSTEM} - -\appendix -\part{Anhang}\index{ANHANG@\textbf{ANHANG}} -\addsec{Übersicht über die Optionen und Anpassungsmöglichkeiten}\label{sec:overview}\secidx{Übersicht über die Optionen (chemmacros)}[Uebersicht ueber die Optionen] -\minisec{Optionen} -In der folgenden Tabelle werden alle Optionen aufgelistet, die \chemmacros bietet. -Alle Optionen, die einem Modul angehören, können mit -\begin{beschreibung} - \Befehl{chemsetup}[<module>]{<options>} oder - \Befehl{chemsetup}{<module>/<options>} gesetzt werden. -\end{beschreibung} -Manche Optionen können ohne Wert verwendet werden. Dann wird der \default{unterstrichene} -Wert verwendet. Die Optionen der Module \code{\textcolor{module}{chemformula}} und -\code{\textcolor{module}{ghssystem}} werden hier nicht extra aufgelistet. -\small -\begin{longtable}{>{\ttfamily\color{key}\hspace{5mm}}l>{\ttfamily\color{module}}l>{\ttfamily}l>{\ttfamily}ll} - \toprule - \normalfont\normalcolor\bfseries Option & - \normalfont\normalcolor\bfseries Modul & - \normalfont\bfseries Werte & - \normalfont\bfseries Default & \\ - \midrule - \endhead - \bottomrule - \endfoot - \multicolumn{5}{l}{Paketoptionen:} \\ - bpchem & option & \default{true}|false & false & Seite~\pageref{key:option_bpchem} \\ - circled & option & formal|\default{all}|none & formal & Seite~\pageref{key:option_circled} \\ - circletype & option & chem|math & chem & Seite~\pageref{key:option_circletype} \\ - cmversion & option & 1|2|bundle & bundle & Seite~\pageref{key:option_cmversion} \\ - ghsystem & option & \default{true}|false & true & Seite~\pageref{key:option_ghsystem} \\ - iupac & option & auto|restricted|strict & auto & Seite~\pageref{key:option_iupac} \\ - language & option & <language> & english & Seite~\pageref{key:option_language} \\ - method & option & chemformula|mhchem & chemformula & Seite~\pageref{key:option_method} \\ - Nu & option & chemmacros|mathspec & chemmacros & Seite~\pageref{key:option_Nu} \\ - strict & option & \default{true}|false & false & Seite~\pageref{key:option_strict} \\ - synchronize & option & \default{true}|false & false & Seite~\pageref{key:option_synchronize} \\ - greek & option & math|textgreek|\default{upgreek} & upgreek & Seite~\pageref{key:option_greek} \\ - xspace & option & \default{true}|false & true & Seite~\pageref{key:option_xspace} \\ - \multicolumn{5}{l}{\cmd{ba}, \cmd{Nu}:} \\ - elpair & particle & \default{dots}|dash/false & false & Seite~\pageref{key:particle_elpair} \\ - \multicolumn{5}{l}{IUPAC-Befehle:} \\ - break-space & iupac & <dim> & .01em & Seite~\pageref{key:iupac_break-space} \\ - bridge-number & iupac & sub|super & sub & Seite~\pageref{key:iupac_bridge-number} \\ - cip-kern & iupac & <dim> & .075em & Seite~\pageref{key:iupac_cip-kern} \\ - coord-use-hyphen & iupac & \default{true}|false & true & Seite~\pageref{key:iupac_coord-use-hyphen} \\ - hyphen-pre-space & iupac & <dim> & .01em & Seite~\pageref{key:iupac_hyphen-pre-space} \\ - hyphen-post-space & iupac & <dim> & -.03em & Seite~\pageref{key:iupac_hyphen-post-space} \\ - \multicolumn{5}{l}{\cmd{DeclareChemLatin}:} \\ - format & latin & <anything> & \lstinline=\itshape= & Seite~\pageref{key:latin_format} \\ - \multicolumn{5}{l}{\cmd{pch}, \cmd{mch}, \cmd{fpch}, \cmd{fmch}:} \\ - append & charges & \default{true}|false & false & Seite~\pageref{key:charges_append} \\ - \multicolumn{5}{l}{acid/base:} \\ - p-style & acid-base & slanted|italics|upright & upright & Seite~\pageref{key:acid-base_p-style} \\ - \multicolumn{5}{l}{\cmd{ox}:} \\ - align & ox & center|right & center & Seite~\pageref{key:ox_align} \\ - parse & ox & \default{true}|false & true & Seite~\pageref{key:ox_parse} \\ - roman & ox & \default{true}|false & true & Seite~\pageref{key:ox_roman} \\ - pos & ox & top|super|side & top & Seite~\pageref{key:ox_pos} \\ - explicit-sign & ox & \default{true}|false & false & Seite~\pageref{key:ox_explicit-sign} \\ - decimal-marker & ox & comma|point & point & Seite~\pageref{key:ox_decimal-marker} \\ - \multicolumn{5}{l}{\cmd{OX}, \cmd{redox}:} \\ - dist & redox & <dim> & .6em & Seite~\pageref{key:redox_dist} \\ - sep & redox & <dim> & .2em & Seite~\pageref{key:redox_sep} \\ - \multicolumn{5}{l}{\cmd{Enthalpy}, \cmd{Entropy}, \cmd{Gibbs}:} \\ - exponent & & <anything> & \cmd{standardstate} & Seite~\pageref{key:none_exponent} \\ - delta & & <anything>/false & & Seite~\pageref{key:none_delta} \\ - subscript & & left|right & & Seite~\pageref{key:none_subscript} \\ - unit & & <unit> & & Seite~\pageref{key:none_unit} \\ - \multicolumn{5}{l}{\cmd{DeclareChemState}, \cmd{RenewChemState}:} \\ - exponent & & <anything> & \cmd{standardstate} & Seite~\pageref{key:none_exponent} \\ - delta & & <anything>|false & & Seite~\pageref{key:none_delta} \\ - subscript & & <anything> & & Seite~\pageref{key:none_subscript} \\ - subscript-left & & \default{true}|false & & Seite~\pageref{key:none_subscript-left} \\ - \multicolumn{5}{l}{\cmd{State}:} \\ - exponent & state & <anything> & \cmd{standardstate} & Seite~\pageref{key:state_exponent} \\ - delta & state & <anything>|false & & Seite~\pageref{key:state_delta} \\ - subscript-left & state & \default{true}|false & & Seite~\pageref{key:state_subscript-left} \\ - \multicolumn{5}{l}{\cmd{NMR}, \env{spectroscopy}{}:} \\ - unit & nmr & <unit> & \cmd{mega}\cmd{hertz} & Seite~\pageref{key:nmr_unit} \\ - nucleus & nmr & \{<num>,<atom symbol>\} & \{1,H\} & Seite~\pageref{key:nmr_nucleus} \\ - format & nmr & <anything> & & Seite~\pageref{key:nmr_format} \\ - pos-number & nmr & side/sub & side & Seite~\pageref{key:nmr_pos-number} \\ - coupling-unit & nmr & <unit> & \lstinline+\hertz+ & Seite~\pageref{key:nmr_coupling-unit} \\ - parse & nmr & \default{true}|false & true & Seite~\pageref{key:nmr_parse} \\ - delta & nmr & <anything> & & Seite~\pageref{key:nmr_delta} \\ - list & nmr & \default{true}|false & false & Seite~\pageref{key:nmr_list} \\ - list-setup & nmr & & siehe Text & Seite~\pageref{key:nmr_list-setup} \\ - use-equal & nmr & \default{true}|false & false & Seite~\pageref{key:nmr_use-equal} \\ - \multicolumn{5}{l}{\cmd{DeclareChemReaction}:} \\ - star & & \default{true}|false & false & Seite~\pageref{key:none_star} \\ - arg & & \default{true}|false & false & Seite~\pageref{key:none_arg} \\ - list-name & reaction & <anything> & List of reactions & Seite~\pageref{key:reaction_list-name} \\ - list-entry & reaction & <anything> & Reaction & Seite~\pageref{key:reaction_list-entry} \\ - \multicolumn{5}{l}{\cmd{mhName}:} \\ - align & mhName & <alignment> & \cmd{centering} & Seite~\pageref{key:mhName_align} \\ - format & mhName & <commands> & & Seite~\pageref{key:mhName_format} \\ - fontsize & mhName & <fontsize> & \cmd{tiny} & Seite~\pageref{key:mhName_fontsize} \\ - width & mhName & <dim> & & Seite~\pageref{key:mhName_width} \\ - \multicolumn{5}{l}{phases:} \\ - pos & phases & side|sub & side & Seite~\pageref{key:phases_pos} \\ - space & phases & <dim> & .1333em & Seite~\pageref{key:phases_space} \\ - \multicolumn{5}{l}{\cmd{newman}:} \\ - angle & newman & <angle> & 0 & Seite~\pageref{key:newman_angle} \\ - scale & newman & <factor> & 1 & Seite~\pageref{key:newman_scale} \\ - ring & newman & <tikz> & & Seite~\pageref{key:newman_ring} \\ - atoms & newman & <tikz> & & Seite~\pageref{key:newman_atoms} \\ - back-atoms & newman & <tikz> & & Seite~\pageref{key:newman_back-atoms} \\ - \multicolumn{5}{l}{\cmd{orbital} \ttfamily <type> = s|p|sp|sp2|sp3:} \\ - phase & orbital/<type> & +|- & + & Seite~\pageref{key:orbital_phase} \\ - scale & orbital/<type> & <factor> & 1 & Seite~\pageref{key:orbital_scale} \\ - color & orbital/<type> & <color> & black & Seite~\pageref{key:orbital_color} \\ - angle & orbital/<type> & <angle> & 90 & Seite~\pageref{key:orbital_angle} \\ - half & orbital/p & \default{true}|false & false & Seite~\pageref{key:orbital_half} \\ - overlay & orbital & \default{true}|false & false & Seite~\pageref{key:orbital_overlay} \\ - opacity & ornital & <num> & 1 & Seite~\pageref{key:orbital_opacity} -\end{longtable} -\normalsize - -\minisec{Anpassungsbefehle} -Eine ganze Reihe von Befehlen wurde vorgestellt, mit denen die Möglichkeiten von -\chemmacros erweitert werden können. Sie werden hier noch einmal aufgelistet. -\begin{beschreibung} - \befehl{DeclareChemArrow} Neuen Pfeil definieren, siehe - Seite~\pageref{cmd:DeclareChemArrow}. - \befehl{RenewChemArrow} Bestehende Pfeile verändern. - \befehl{DeclareChemBond} Eine neue Bindung definieren, siehe - Seite~\pageref{cmd:DeclareChemBond}. - \befehl{RenewChemBond} Eine Bindung umdefinieren. - \befehl{DeclareChemBondAlias} Ein Alias zu einer existierenden Bindung definieren. - \befehl{DeclareChemIUPAC} Neuen IUPAC-Befehl definieren, siehe - Seite~\pageref{cmd:DeclareChemIUPAC}. - \befehl{RenewChemIUPAC} IUPAC-Befehl umdefinieren. - \befehl{DeclareChemLatin} Neue lateinische Ausdrücke definieren, siehe - Seite~\pageref{cmd:DeclareChemLatin}. - \befehl{RenewChemLatin} Lateinische Ausdrücke umdefinieren. - \befehl{DeclareChemNMR} Neuen NMR-Befehl definieren, siehe - Seite~\pageref{cmd:DeclareChemNMR}. - \befehl{RenewChemNMR} NMR-Befehl umdefinieren. - \befehl{DeclareChemParticle} Neues Teilchen definieren, siehe - Seite~\pageref{cmd:DeclareChemParticle}. - \befehl{RenewChemParticle} Teilchen umdefinieren. - \befehl{DeclareChemPhase} Neuen Phasenbefehl definieren, siehe - Seite~\pageref{cmd:DeclareChemPhase}. - \befehl{RenewChemPhase} Phasenbefehl umdefinieren. - \befehl{DeclareChemReaction} Neue Reaktionsumgebung definieren, siehe - Seite~\pageref{cmd:DeclareChemReaction}. - \befehl{DeclareChemState} Neue Zustandsgröße definieren, siehe - Seite~\pageref{cmd:DeclareChemState}. - \befehl{RenewChemState} Zustandsgröße umdefinieren. -\end{beschreibung} -\secidx*{Übersicht über die Optionen (chemmacros)}[Uebersicht ueber die Optionen] - -\addsec{Vorschläge und Bugreports} -Feedback zu \chemmacros, \chemformula und \ghsystem ist hochwillkommen! Wenn Sie -Vorschläge haben, Ihnen Features fehlen oder Ihnen Bugs auf\-fallen, zögern Sie -nicht, mich zu kontaktieren. Wenn Sie irgendwelche Fehler finden, seien es chemische, -falsche Dokumentation \usw, wäre ich über eine kurze E-Mail\footnote{\href{% -mailto:contact@mychemistry.eu}{contact@mychemistry.eu}} dankbar. - -Wenn Sie einen Bug finden, wäre es am besten, Sie schickten mir ein minimales Beispiel, -mit dem ich den Bug reproduzieren kann. Sie können ihn auch als \enquote{Issue} -auf \url{https://bitbucket.org/cgnieder/chemmacros/} melden. - -Vielen Dank an alle, die mir schon Feedback zukommen ließen, vor allem (in -alphabetischer Reihenfolge): -\begin{itemize} - \item Peter Cao - \item Christina Lüdigk - \item Dr.\ Paul King - \item Jonas Rivetti (Besonderen Dank für seine Übersetzung der H- und P-Sätze - ins Italienische!) - \item Christoph Schäfer - \item Timo Stein -\end{itemize} - -\printbibliography[title=Quellen] - -{\catcode`\^=11 \catcode`\#=11 \catcode`\|=11 -\printindex} - -\end{document}
\ No newline at end of file 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 9bef3059b5e..9d5ce9ef37d 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 77c85e11dca..7f924875d57 100644 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex +++ b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_en.tex @@ -1,7 +1,7 @@ % arara: xelatex -% arara: biber -% arara: xelatex -% arara: xelatex +% !arara: biber +% !arara: xelatex +% !arara: xelatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ----------------------------------------------------------------------------- % - the CHEMMACROS bundle @@ -17,7 +17,7 @@ % - If you have any ideas, questions, suggestions or bugs to report, please % - feel free to contact me. % ----------------------------------------------------------------------------- -% - Copyright 2011-2012 Clemens Niederberger +% - 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 @@ -44,23 +44,33 @@ % \documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} \docsetup{ - pkg = chemmacros, + pkg = {[greek=newtx]chemmacros}, language = en, title = the \Chemmacros\ bundle, - subtitle = {packages \Chemmacros, \Chemformula\ and \Ghsystem}, + subtitle = { + 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}}, modules = true, code-box = {skipabove=1ex,skipbelow=1ex}, label = {}, } -\usepackage{chemfig,upgreek,textgreek,booktabs,cancel} +\usepackage{chemfig,booktabs,cancel} \usepackage[version=3]{mhchem} -\usepackage{hologo} -\newcommand*\pdfTeX{\hologo{pdfTeX}} -\newcommand*\XeTeX{\hologo{XeTeX}} -\newcommand*\LuaTeX{\hologo{LuaTeX}} -\newcommand*\XeLaTeX{\hologo{XeLaTeX}} -\newcommand*\LuaLaTeX{\hologo{LuaLaTeX}} +\usepackage{fontspec} +\usepackage[oldstyle,proportional]{libertine} +\usepackage[libertine]{newtxmath} +\usepackage{libertinehologopatch} +\setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono} + +\cnpkgusecolorscheme{friendly} +\renewcommand*\othersectionlevelsformat[3]{% + \textcolor{main}{#3\autodot}\enskip} +\renewcommand*\partformat{% + \textcolor{main}{\partname~\thepart\autodot}} \usepackage{fnpct} \usepackage[biblatex]{embrac} @@ -69,36 +79,53 @@ \pagestyle{headings} -\usepackage{acro} -\acsetup{long-format=\scshape} +\usepackage[accsupp]{acro} +\acsetup{ + long-format=\scshape, + short-format=\scshape +} \DeclareAcronym{ghs}{ - short = GHS , - long = Globally Harmonized System of Classification and Labelling of Chemicals + short = ghs , + long = Globally Harmonized System of Classification and Labelling of + Chemicals , + pdfstring = GHS , + accsupp = GHS } \DeclareAcronym{eu}{ - short = EU , - long = European Union + short = EU , + long = European Union , + pdfstring = EU , + accsupp = EU } \DeclareAcronym{iupac}{ - short = IUPAC , - long = International Union of Pure and Applied Chemistry + short = iupac , + long = International Union of Pure and Applied Chemistry , + pdfstring = IUPAC , + accsupp = IUPAC } \DeclareAcronym{UN}{ - short = UN , - long = United Nations + short = un , + long = United Nations , + pdfstring = UN , + accsupp = UN } \DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - format = \scshape + short = dvi , + long = device independent file format , + pdfstring = DVI , + accsupp = DVO } \DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - format = \scshape + short = pdf , + long = portable document file , + pdfstring = PDF , + accsupp = PDF } -\chemsetup[option]{synchronize} +\chemsetup{ + option/synchronize , + chemformula/font-spec={[Numbers=Lining]Linux Libertine O} +} \colorlet{chemformula}{darkgray} \sisetup{ @@ -112,8 +139,8 @@ \begin{filecontents*}{\jobname.ist} preamble "\\begin{theindex}\n Section titles are indicated \\textbf{bold}, packages \\textsf{sans serif}, commands \\code{\\textbackslash\\textcolor{code}{brown}}, - options \\textcolor{key}{\\code{green}} and modules (only \\chemmacros) - \\textcolor{module}{\\code{red}}.\\newline\n\n" + options \\textcolor{key}{\\code{yellow}} and modules (only \\chemmacros) + \\textcolor{module}{\\code{blue}}.\\newline\n\n" heading_prefix "{\\bfseries " heading_suffix "\\hfil}\\nopagebreak\n" headings_flag 1 @@ -177,285 +204,357 @@ slash-left-kern = .05em } -\newcommand*\chemformula{{\scshape\textcolor{cnpkgblue}{chemformula}}\xspace} -\newcommand*\ghsystem{{\scshape\textcolor{cnpkgblue}{ghsystem}}\xspace} - -\newcommand*\Chemmacros{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemmacros}} -\newcommand*\Chemformula{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemformula}} -\newcommand*\Ghsystem{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}ghsystem}} - -\renewcommand*\AmS{\hologo{AmS}} -% \newcommand*\pdfTeX{\hologo{pdfTeX}} -% \renewcommand*\LuaTeX{\hologo{LuaTeX}} +\usetikzlibrary{calc,positioning,decorations.pathmorphing,patterns} + +\pgfdeclaredecoration{penciline}{initial}{ + \state{initial}[ + width=+\pgfdecoratedinputsegmentremainingdistance, + auto corner on length=1mm + ]{ + \pgfpathcurveto% + {% From + \pgfqpoint + {\pgfdecoratedinputsegmentremainingdistance} + {\pgfdecorationsegmentamplitude} + } + {% Control 1 + \pgfmathrand + \pgfpointadd + {\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}} + {% + \pgfqpoint + {-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}% + {\pgfmathresult\pgfdecorationsegmentamplitude} + } + } + {%TO + \pgfpointadd + {\pgfpointdecoratedinputsegmentlast} + {\pgfpoint{1pt}{1pt}} + } + } + \state{final}{} +} +\tikzset{pencil/.style={decorate,decoration=penciline}} \TitlePicture{% - \ch[font-spec={[Color=chemformula]Augie}]{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- } - \redox(o1,o2)[red,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} - \redox(r1,r2)[blue,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} + \ch[font-spec={Augie}]{ + 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 + -> + 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- + } + \redox(o1,o2)[red,pencil,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} + \redox(r1,r2)[blue,pencil,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} \addcmds{ - a,abinitio,AddRxnDesc,anti,aq,aqi, - b,ba,bond,bottomrule,bridge, - cancel,cd,cdot,ce,cee,celsius,centering,chemabove,Chemalpha,Chembeta,Chemgamma, - Chemdelta,ChemDelta,chemfig,chemname,Chemomega,chemsetup,cip,cis,ch,cnsetup, - CNMR,color,cstsetup, - d,D,data,DeclareChemArrow,DeclareChemBond,DeclareChemBondAlias,DeclareChemIUPAC, - DeclareChemLatin,DeclareChemNMR,DeclareChemParticle,DeclareChemPhase, - DeclareChemReaction,DeclareChemState,DeclareInstance,DeclareSIUnit,definecolor, - delm,delp,Delta,Dfi,draw, - E,el,electronvolt,ElPot,endo,Enthalpy,enthalpy,Entropy, - footnotesize,fmch,fpch,fscrm,fscrp, - g,gas,ghs,ghslistall,ghspic,Gibbs,glqq,gram,grqq, - H,hapto,HNMR,Helmholtz,hertz,hspace, - includegraphics,insitu,intertext,invacuo,iupac,IUPAC,J,joule, - Ka,Kb,kilo,Kw, - L,latin,lewis,Lewis,Lfi,listofreactions,lqd,ltn, - mch,mega,meta,metre,mhName,midrule,milli,mmHg,mole, - N,nano,nicefrac,newman,NMR,Nu,Nuc,num,numrange, - O,ominus,orbital,ortho,oplus,ox,OX, - p,P,para,pch,per,percent,pgfarrowsdeclarealias,pgfarrowsrenewalias,pH,phase, - photon,pKa,pKb,pOH,pos,positron,Pot,prt, - R,Rad,redox,RenewChemArrow,RenewChemBond,RenewChemIUPAC,RenewChemLatin,RenewChemNMR, - RenewChemParticle,RenewChemPhase,RenewChemState,renewtagform,rightarrow, - S,Sf,sample,scriptscriptstyle,scrm,scrp,second,setatomsep,setbondoffset,sfrac, - shorthandoff,ShowChemArrow,ShowChemBond,si,SI,sisetup,sld,Sod,square,State, - subsection, - textcolor,textendash,textsuperscript,tiny,toprule,trans, - upbeta,upeta,upgamma, - val,volt,vphantom,vspave, - w,xspace,Z} + a, abinitio, AddRxnDesc, anti, aq, aqi, + b, ba, bond, bottomrule, bridge, + cancel, cd, cdot, ce, cee, celsius, centering, chemabove, Chemalpha, + Chembeta, Chemgamma, Chemdelta, ChemDelta, chemfig, chemname, Chemomega, + chemsetup, cip, cis, ch, clap, cnsetup, CNMR, color, cstack, cstsetup, + d, D, data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, + DeclareChemIUPAC, DeclareChemLatin, DeclareChemNMR, DeclareChemParticle, + DeclareChemPhase, DeclareChemReaction, DeclareChemState, DeclareInstance, + DeclareSIUnit, DeclareTranslation, definecolor, delm, delp, Delta, Dfi, + draw, + E, el, electronvolt, ElPot, endo, Enthalpy, enthalpy, Entropy, + footnotesize, fmch, fpch, fscrm, fscrp, + g, gas, ghs, ghslistall, ghspic, Gibbs, glqq, gram, grqq, + H, hapto, HNMR, Helmholtz, hertz, hspace, + includegraphics, insitu, intertext, invacuo, iupac, IUPAC, + J, joule, + Ka, Kb, kilo, Kw, + L, latin, lewis, Lewis, Lfi, listofreactions, lqd, ltn, + mch, mega, meta, metre, mhName, midrule, milli, mmHg, mole, + N, nano, nicefrac, newman, NMR, Nu, Nuc, num, numrange, + O, ominus, orbital, ortho, oplus, ox, OX, + p, P, para, pch, per, percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, + pH, phase, photon, pKa, pKb, pOH, pos, positron, Pot, prt, + R, Rad, redox, RenewChemArrow, RenewChemBond, RenewChemIUPAC, + RenewChemLatin, RenewChemNMR, RenewChemParticle, RenewChemPhase, + RenewChemState, renewtagform, rightarrow, + S, Sf, sample, scriptscriptstyle, scrm, scrp, second, setatomsep, + setbondoffset, setchemformula, sfrac, shorthandoff, ShowChemArrow, + ShowChemBond, si, SI, sisetup, sld, Sod, square, State, subsection, + textcolor, textendash, textsuperscript, tiny, toprule, trans, + upbeta, upeta, upgamma, + val, volt, vphantom, vspave, + w, xspace, Z +} \usepackage{imakeidx} \indexsetup{othercode=\footnotesize} \makeindex[columns=3,intoc,options={-sl \jobname.ist}] -\begin{document} -\chemsetup[chemformula]{ - font-spec = - {[Color=chemformula,Numbers={Proportional,Lining}]Latin Modern Sans} +\newcommand*\Chemmacros{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemmacros% + }% +} +\providecommand*\chemmacros{{\scshape\textcolor{main}{chemmacros}}\xspace} + +\newcommand*\Chemformula{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemformula% + }% +} +\providecommand*\chemformula{{\scshape\textcolor{main}{chemformula}}\xspace} + +\newcommand*\Ghsystem{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + ghsystem% + }% +} +\providecommand*\ghsystem{{\scshape\textcolor{main}{ghsystem}}\xspace} + +\newcommand*\Chemgreek{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemgreek% + }% +} +\providecommand*\chemgreek{{\scshape\textcolor{main}{chemgreek}}\xspace} + +\newcommand*\Default[1]{% + \hfill\llap{% + \ifblank{#1} + {(initially~empty)} + {Default:~\code{#1}}% + }\newline } -\def\glqq{„} -\def\grqq{“} -\part{Preliminaries}\secidx{PRELIMINARIES} -\section{Licence, Requirements and README} -Permission is granted to copy, distribute and/or modify this software under the -terms of the \LaTeX\ project public license (lppl) version 1.3 or later -(\url{http://www.latex-project.org/lppl.txt}). The package has the status -``maintained.'' +\usepackage{marginnote,ragged2e} +\makeatletter +\providecommand*\sinceversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Introduced in version~#1}}% + \@esphack} +\providecommand*\changedversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Changed in version~#1}}% + \@esphack} + +\RenewDocumentCommand\CTANurl{O{macros/latex/contrib}m} + {% + on CTAN: % + \hyper@linkurl{#2}{http://mirrors.ctan.org/#1/#2/}% + } +\ExplSyntaxOn +\RenewDocumentCommand \paket { sO{macros/latex/contrib}m } + { + \paketfont { #3 } + \index { #3 @ \paketfont { #3 } } + \prop_if_in:NnF \g_cnpkgdoc_pakete_prop { #3 } + { + \prop_gput:Nnn \g_cnpkgdoc_pakete_prop { #3 } {} + \IfBooleanF { #1 } + { \footnote { \CTANurl[]{#3} } } + } + } +\ExplSyntaxOff +\makeatother -The \chemmacros bundle needs the bundles \paket{l3kernel} and \paket{l3packages}. -It also needs the packages \paket{siunitx}, \paket{mathtools}, \paket{bm}, -\paket{nicefrac} and \paket{environ} as well as \paket*{tikz}\footnote{CTAN: -\href{http://www.ctan.org/pkg/pgf/}{pgf}} and the \TikZ libraries \code{calc} -and \code{arrows}. +\DeclareChemPhase{\aqi}{aq,$\infty$}% aqueous solution at infinite dilution +\DeclareChemPhase{\cd}{cd}% condensed phase +\RenewChemPhase{\lqd}{lc}% liquid crystal -Package option \key{bpchem} (section~\ref{sec:optionen}) needs the package -\paket{bpchem}, package option \key{xspace} needs the package \paket{xspace} and -package option \key{method}{mhchem} needs the package \paket{mhchem}. +\begin{document} -With v3.0 the \chemmacros package has been bundled with the new packages -\chemformula and \ghsystem. \chemformula provides an alternative to \paket{mhchem}. -This leads to some internal changes in \chemmacros. On the same time the -documentation has been redesigned. +\part{Preliminaries}\secidx{PRELIMINARIES} +\section{Licence, Requirements and \textsc{README}} +Permission is granted to copy, distribute and/or modify this software under +the terms of the \LaTeX\ project public license (lppl) version 1.3 or later +(\url{http://www.latex-project.org/lppl.txt}). The package has the status +``maintained.'' -You might remember that \chemmacros' options all belong to different modules, see -section~\ref{sec:setup} for further information. These are typeset in the left -margin when the option is first mentioned. In section~\ref{sec:overview} all options -and the module they belong to are listed. Throughout the document options are -typeset \textcolor{key}{\code{green}} and modules \textcolor{module}{\code{red}}. +The \chemmacros\ bundle needs the bundles \paket{l3kernel} and +\paket{l3packages}. It also needs the packages \paket{siunitx}, +\paket{mathtools}, \paket{bm}, \paket{nicefrac} and \paket{environ} as well as +\paket*{tikz}\footnote{\CTANurl[graphics]{pgf}} and the \TikZ libraries +\code{calc} and \code{arrows}. Language support is done with the help of the +\paket*{translations} package from the \paket{exsheets} bundle. The +\chemmacros\ package also loads the other packages of this bundle. -The package \ghsystem needs the packages \chemmacros, \paket{tabu}, \paket{longtable}, -\paket{ifpdf} and \paket{graphicx}. \ghsystem has no own package options but -passes all options on to \chemmacros. +The package option \key{xspace} also loads the package \paket{xspace}. -\achtung{There are some deprecated commands and options which are not explained -in the manual any more but still exist to ensure backwards compatibility. These -commands issue a warning. They may be dropped some time in the future.} +The \chemmacros\ bundle bundles four packages: \chemmacros, \chemformula, +\ghsystem\ and \chemgreek. The package dependencies of the other packages are +described in the respective manuals. \section{Motivation and Background} -\chemmacros started some years ago as a growing list of custom macros that I -frequently used. I cannot completely recall when and why I decided to release them -as a package. Well \textendash\ here we go and you might find it useful, too, I -hope. +\chemmacros\ started some years ago as a growing list of custom macros that I +frequently used. I cannot completely recall when and why I decided to release +them as a package. Well \textendash\ here we go and you might find it useful, +too, I hope. Both the macros and their functionality have changed over time and quite a lot -have been added. Many things have been unified and what's probably most important: -many possibilities to customize have been added, too. - -Probably every chemist using \LaTeXe\ is aware of the great \paket{mhchem} package -by Martin Hensel. There have always been some difficulties intertwining it with -\chemmacros, though. Also, some other minor points in \paket{mhchem} always -bothered me, but they hardly seemed enough for a new package. They weren't even -enough for a feature request to the \paket{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 \paket{mhchem} but is more strict as to how -compounds, stoichiometric factors and arrows are input. In the same time -\chemformula offers possibilities to customize the output that \paket{mhchem} does -not. Since \chemformula is meant as an \emph{alternative} to \paket{mhchem} -\chemmacros offers a package option allowing you to choose which one of the two -is used. The default however is \chemmacros own way: \chemformula. - -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}. +have been added. Many things have been unified and what's probably most +important: many possibilities to customize have been added, too. + +Probably every chemist using \LaTeXe\ is aware of the great \paket{mhchem} +package by Martin Hensel. There have always been some difficulties +intertwining it with \chemmacros, though. Also, some other minor points in +\paket{mhchem} always bothered me, but they hardly seemed enough for a new +package. They weren't even enough for a feature request to the \paket{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 \paket{mhchem} but is more strict as to +how compounds, stoichiometric factors and arrows are input. In the same time +\chemformula\ offers possibilities to customize the output that \paket{mhchem} +does not. Although \chemformula\ is meant as an \emph{alternative} to +\paket{mhchem} \chemmacros\ only loads \chemformula\ and uses it at various +places internally, too. + +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\ 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}. There are four points I hope I have achieved with this bundle: \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 the - document source more readable with respect to semantics + \item the commands shall not only make typesetting easier and faster but also + the document source more readable with respect to semantics (\code{\cmd{ortho}-dichlorobenzene} is easier to read and understand than \code{\cmd*{textsl}{o}-dichlorobenzene}) \item as much customizability as I could think of so every user can adapt the commands to his or her own wishes \item default settings compliant with the recommendations of the \acf{iupac}. \end{itemize} -Especially the last point needed some pushing from users to get things right in -many places. If you find anything not compliant with \ac{iupac} recommendations% -\footnote{This does not concern the \cmd{ox} command. The \ac{iupac} version is -\cmd{ox}*.} I would welcome an email very much! - -In a package this large with older parts and rather new parts (which have to be -considered being in beta state) it is unavoidable that there are flaws and bugs. -I am very keen on correcting and improving this package, so please: if you find -anything that bothers you and may it be just so small please send me a short email -and I'll see what I can do. I would especially like feedback on \chemformula (see -part~\ref{part:chemformula}) and \ghsystem (see part~\ref{part:ghsystem}) but also -welcome feedback on every other part of this bundle. - -\section{Installation, Loading the Bundle}\secidx{Loading the Bundle}\secidx{Installation} -The bundle comes with three style files\footnote{Those ending \code{sty}.}, a -directory called \code{language/} containing the language-definition files for -\ac{ghs} (ending \code{def}), and a directory \code{pictures/} containing \code{eps}, -\code{pdf}, \code{jpg} and \code{png} files (the \ac{ghs} pictograms). If you install -the bundle manually \emph{please make sure to place the directories \code{language/} -and \code{pictures/} in the \emph{same} directory as the style files}. - -Loading \chemmacros with -\begin{beispiel}[code only] - \usepackage{chemmacros} % `chemmacros', `chemformula' and `ghsystem' are loaded -\end{beispiel} -will also load \chemformula and \ghsystem. However, you can prevent \chemmacros -from loading \ghsystem: -\begin{beispiel}[code only] - \usepackage[ghsystem=false]{chemmacros} % `chemmacros' and `chemformula' are loaded -\end{beispiel} +Especially the last point needed some pushing from users to get things right +in many places. If you find anything not compliant with \ac{iupac} +recommendations\footnote{This does not concern the \cmd{ox} command. The + \ac{iupac} version is \cmd{ox}*.} I would welcome an email very much! -Loading \chemformula or \ghsystem explicitly is possible and will also load -\chemmacros if it hasn't been loaded yet, and will therefore implicitly load the -other package, too. -\begin{beispiel}[code only] - \usepackage{chemformula} - or - \usepackage{ghsystem} -\end{beispiel} - -However, it is recommended to simply use \lstinline=\usepackage{chemmacros}= and -setup the required options with \lstinline=\chemsetup= (also see section~\ref{sec:setup}). -\secidx*{Installation}\secidx*{Loading the Bundle} +\section{News}\secidx{News} +With version~4.0 some changes have been made: +\begin{itemize} + \item first of all the packages \chemformula\ and \ghsystem\ do not load + \chemmacros\ any more which means they can be used independently. + \item the option \key{bpchem} has been dropped. + \item the commands \cmd{mch} and \cmd{pch} now match \chemformula's + charges. + \item the option \key{method} has been dropped. + \item the option \key[charges]{append} has deprecated. + \item the option \key{greek} has been extended to support other uppercase + greek letters, for example those provided by \paket{kpfonts}. This is + handled internally by the new package in the family: \chemgreek. This + package is not really a package for usage at a user-level but could in + principle be used to extend the \key{greek} option. + \item language support is now done with the help of the + \paket*{translations} package from the \paket{exsheets} bundle. This + means that with version~4.0 the document language is recognized + automatically. + \item the status of the commands \cmd{Lfi} and \cmd{Dfi} has been changed + from \emph{deprecated} to \emph{dropped}. + \item various other changes like bug fixes and improvements on the + typographical appearance of \chemformula's inline formulae with \cmd{ch}. +\end{itemize} +\secidx*{News} \section{Package Options}\label{sec:optionen}\secidx{Package Options} \chemmacros has several package options. They all are used as key/value pairs like \begin{beispiel}[code only] \usepackage[option1 = <value1>, option2 = <value2>]{chemmacros} \end{beispiel} -Some also can be used without value (\lstinline+\usepackage[option1]{chemmacros}+), -which means that the \default{underlined} value is used. +Some also can be used without value +(\lstinline+\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. +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{beschreibung} - % bpchem - \option[option]{bpchem}{\default{true}|false} This option loads the package - \paket{bpchem} and adjusts the layout of the \cmd{NMR} command to the \paket{bpchem} - commands \lstinline+\HNMR+ and \lstinline+\CNMR+. (default = \code{false}) % circled - \option[option]{circled}{\default{formal}|all|none} \chemmacros uses two different - kinds of charges which indicate the usage of real ($+/-$) and formal (\fplus/\fminus) - charges. The option \code{formal} distinguishes between them, option \code{none} - displays them all without circle, option \code{all} circles all (default = \code{formal}) + \Option[option]{circled}{\default{formal}|all|none}\Default{formal} + \chemmacros\ uses two different kinds of charges which indicate the usage + of real ($+/-$) and formal (\fplus/\fminus) charges. The option + \code{formal} distinguishes between them, option \code{none} displays them + all without circle, option \code{all} circles all. % circletype - \option[option]{circletype}{\default{chem}|math} This option switches between - two kinds of circled charge symbols: \cmd{fplus} \fplus\ and \lstinline+$\oplus$+ - $\oplus$. (default = \code{chem}) + \Option[option]{circletype}{\default{chem}|math}\default{chem} + This option switches between two kinds of circled charge symbols: + \cmd{fplus} \fplus\ and \lstinline+$\oplus$+ $\oplus$. % cmversion - \option[option]{cmversion}{1|2|bundle} This option restores the old definitions - of some commands, so documents set with v1.* will still compile correctly. - (default = \code{bundle}). Actually \code{2} and \code{bundle} are only aliases. - \emph{This option can only be chosen in the preamble}. + \Option[option]{cmversion}{1|2|3|4|newest}\Default{newest} + This option restores the old definitions of some commands and tries to + ensure backwards compatibility as much as possible (default = \code{4}). + Actually \code{2} and \code{3} are aliases, as are -- for now -- \code{4} + and \code{newest}. \emph{This option can only be chosen in the preamble}. % ghsystem - \option[option]{ghsystem}{\default{true}|false} Disable the use of the \ghsystem - package. Setting \key{ghsystem}{false} will prevent \chemmacros from loading - \ghsystem. (default = \code{true}) + \Option[option]{ghsystem}{\default{true}|false}\Default{true} + Disable the automatic loading of the \ghsystem\ package. % greek - \option[option]{greek}{\default{auto}|math|textgreek|upgreek} This Option determines - how the letters \cmd{Chemalpha} and friends are typeset. See page~\pageref{desc:upgreek} - for more information. \emph{This option can only be chosen in the preamble}. - Please note that this options \emph{does not load either \paket{upgreek} nor - \paket{textgreek}!} It only determines which one to choose if available. The - option will detect if either \paket{upgreek} or \paket{textgreek} have been - loaded and use them if available. If you explicitly choose \code{upgreek} or - \code{textgreek} you also have to load the corresponding package. - (default = \code{auto}) + \Option[option]{greek}{\default{auto}|kpfonts|math|newtx|textgreek|upgreek}\Default{auto} + This option determines how the letters \cmd{Chemalpha} and friends are + typeset. See page~\pageref{desc:upgreek} for more information. Please + note that this option \emph{does not load either \paket{upgreek}, + \paket{kpfonts}, \paket{newtxmath} nor \paket{textgreek}!} It only + determines which one to choose if available. The option \code{auto} will + detect if either (in order of priority) \paket{upgreek}, \paket{textgreek}, + \paket{kpfonts} or \paket{newtxmath} have been loaded and use them if + available. If you explicitly choose \code{upgreek}, \code{textgreek}, + \paket{kpfonts} or \paket{newtxmath} you also have to load the + corresponding package. \emph{This option can only be chosen in the + preamble}. % iupac - \option[option]{iupac}{auto|restricted|strict} Take care of how \ac{iupac} naming - commands are defined, see page~\pageref{desc:iupac} (default = \code{auto}) + \Option[option]{iupac}{auto|restricted|strict}\Default{auto} Take care of + how \ac{iupac} naming commands are defined, see page~\pageref{desc:iupac}. % language - \option[option]{language}{american|british|english|french|german|italian|ngerman} - Load language specific options. \code{english}, \code{american} and \code{british} - are aliases, as are \code{german} and \code{ngerman}. \emph{This option can only - be chosen in the preamble}. (default = \code{english}). - % method - \option[option]{method}{\default{chemformula}|mhchem} You can choose the method - which \chemmacros will use for the reaction environments (see section~\ref{sec:reactions}) - and the typesetting of the particles (see section~\ref{sec:teilchen}). (default - = \code{chemformula}). \emph{This option can only be chosen in the preamble}. + \Option[option]{language}{american|british|english|french|german|italian|ngerman}\Default{} + Load the language used by \chemmacros. \emph{This option can only be + chosen in the preamble}. % Nu - \option[option]{Nu}{\default{chemmacros}|mathspec} The package \paket{mathspec} - also defines a macro \cmd{Nu}. This option chooses which definition holds, see - page~\pageref{Nu}. (default = \code{chemmacros}). \emph{This option can only - be chosen in the preamble}. + \Option[option]{Nu}{\default{chemmacros}|mathspec}\Default{chemmacros} + The package \paket{mathspec} also defines a macro \cmd{Nu}. This option + chooses which definition holds, see page~\pageref{Nu}. \emph{This option + can only be chosen in the preamble}. % strict - \option[option]{strict}{\default{true}|false} Setting \key{strict}{true} will - turn all warning messages into erros messages. (default = \code{false}) + \Option[option]{strict}{\default{true}|false}\Default{false} + Setting \key{strict}{true} will turn all warning messages into erros messages. % synchronize - \option[option]{synchronize}{\default{true}|false} The setting \code{true} will - tell \chemmacros the adapt the font settings of \chemformula if that method has - been chosen (default = \code{false}). In order to demonstrate this feature the - first part of this document is set with \key{synchronize}{true} and the - \chemformula setting - \lstinline+\chemsetup[chemformula]{font-spec={[Color=darkgray]Latin Modern Sans}}+. + \Option[option]{synchronize}{\default{true}|false}\Default{false} + The setting \code{true} will tell \chemmacros\ to adapt the font settings + of \chemformula. % xspace - \option[option]{xspace}{\default{true}|false} With this option most commands are - defined with a \lstinline+\xspace+. (default = \code{true}) + \Option[option]{xspace}{\default{true}|false}\Default{true} + With this option most commands are defined with a \cmd*{xspace}. \end{beschreibung} \secidx*{Package Options} \section{Setup}\label{sec:setup}\secidx{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 -\cmd{chemsetup} command. +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 \cmd{chemsetup} command. \begin{beschreibung} \Befehl{chemsetup}[<module>]{<key> = <value>} or \Befehl{chemsetup}{<module>/<key> = <value>} \end{beschreibung} The keys each belong to a module, which defines for which commands they are -intended for. If a key is presented, you'll see the module to which it belongs -in the left margin. You have two ways to use keys with the \cmd{chemsetup}, as -you can see above. +intended for. If a key is presented, you'll see the module to which it +belongs in the left margin. You have two ways to use keys with the +\cmd{chemsetup}, as you can see above. The package options can also be seen as keys belonging to the module -\textcolor{module}{\code{option}}. This means they can also be used with the +\textcolor{module}{\code{option}}. This means they can also be used with the \cmd{chemsetup} command (except for the option \key[option]{version}{1/2/3}). \begin{beispiel} \chemsetup[option]{circled=none}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ @@ -464,10 +563,12 @@ The package options can also be seen as keys belonging to the module \chemsetup{option/circletype=chem,option/circled=all}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ \chemsetup{option/circletype=math}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \end{beispiel} -Keys \emph{not} belonging to a module \emph{cannot} be used with \cmd{chemsetup}! +Keys \emph{not} belonging to a module \emph{cannot} be used with +\cmd{chemsetup}! -All options of \chemformula belong to the module \textcolor{module}{\code{chemformula}} -and all of \ghsystem's options belong to the module \textcolor{module}{\code{ghsystem}}. +All options of \chemformula\ belong to the module +\textcolor{module}{\code{chemformula}} and all of \ghsystem's options belong +to the module \textcolor{module}{\code{ghsystem}}. \secidx*{Setup} \section{Language Settings}\label{sec:languages}\secidx{Language Settings} @@ -476,20 +577,37 @@ By choosing the option \begin{beispiel}[code only] \chemsetup[option]{language=<language>} \end{beispiel} -you can set one of these languages: \code{american}, \code{british},\ code{english}, -\code{french}, \code{german}, \code{italian} and \code{ngerman}. The languages -\code{american}, \code{british} and \code{english} are aliases, as are \code{german} -and \code{ngerman}. +you can set the language that is used by \chemmacros\ if you want that to be a +different language than your main document language. -These translate +These translate (if the translations are available) \begin{itemize} - \item The header of the list of reactions. - \item The beginning of the entries in the list of reactions. - \item The H- and P-statements of the \ac{ghs}. + \item The header of the list of reactions. + \item The beginning of the entries in the list of reactions. + \item The H- and P-statements of the \ac{ghs}. \end{itemize} -\achtung{Please note, that the \ac{ghs} statements are not provided in all languages, -see also section~\ref{sec:ghsystem_language}.} +Currently the following translations are provided: +\begin{beispiel}[code only] + % subscript used in \Ka: + \DeclareTranslation{German}{K-acid}{S} + % the phases \sld and \lqd: + \DeclareTranslation{German}{phase-sld}{f} + \DeclareTranslation{German}{phase-lqd}{f{}l} + % heading of the list of reactions: + \DeclareTranslation{English}{list-of-reactions}{List of reactions} + \DeclareTranslation{German} {list-of-reactions}{Reaktionsverzeichnis} + \DeclareTranslation{Italian}{list-of-reactions}{Elenco delle reazioni} + \DeclareTranslation{French} {list-of-reactions}{Table des r\'eactions} + % name at the beginning of each entry in the list of reactions: + \DeclareTranslation{English}{lor-reaction}{Reaction } + \DeclareTranslation{German} {lor-reaction}{Reaktion } + \DeclareTranslation{Italian}{lor-reaction}{Reazione } + \DeclareTranslation{French} {lor-reaction}{R\'eaction } +\end{beispiel} +All other languages will fall back to English. However, you can always add +the translation you want. If you send me an email with translations you'd +like to have added to \chemmacros\ I'll gladly add them. \subsection{Specialties} \subsubsection{German} @@ -500,121 +618,59 @@ and the command \cmd{pKa} are translated. \DeclareChemIUPAC{\ter}{\textit{ter}}\DeclareChemIUPAC{\sin}{\textit{sin}}% Choosing the language \code{italian} defines two additional \ac{iupac} commands: \begin{beschreibung} - \befehl{ter} \iupac{\ter} - \befehl{sin} \iupac{\sin} + \Befehl{ter} \iupac{\ter} + \Befehl{sin} \iupac{\sin} \end{beschreibung} \secidx*{Language Settings} - -\section{News}\secidx{News} -\subsection{Version 3.3} -\begin{itemize} - \item With v3.3 there is the environment \env{experimental}{}, see - section~\ref{sec:spektroskopie}. It can be used together with some new options - and commands for the consistent typesetting of experimental data. - \item The environment \env{reaction}{} and its kin can now cope with \lstinline+\label+, - \lstinline+\ref+ and \lstinline+\intertext+, see section~\ref{sec:reactions}. - \item The package options \key{german} and \key{ngerman} are deprecated, the - replacement is \key{language}, see page~\pageref{key:option_language} and - section~\ref{sec:languages} from page~\pageref{sec:languages}. - \item The package option \key{upgreek} got renamed into \key{greek}. - \item Some additional \code{\textbackslash\textcolor{code}{Chem<greekletter>}}-commands - are provided, see section~\ref{sec:teilchen}. -\end{itemize} - -\subsection{Version 3.3a} -\begin{itemize} - \item The \ac{iupac} commands \cmd{hapto} and \cmd{bridge} are new. - \item The H and P statements now are available in Italian. -\end{itemize} - -\subsection{Version 3.3d} -\begin{itemize} - \item \code{pdf} versions of the \ac{ghs} pictograms. - \item New default values for bond length and bond offset, see - page~\pageref{ssec:compounds:customization}. - \item New option \key{bond-style}, see page~\pageref{ssec:compounds:customization}. - \item new option \key{cip-kern}, see page~\pageref{par:cip}. -\end{itemize} - -\subsection{Version 3.4} -\begin{itemize} - \item \chemmacros got an Italian manual, many thanks to Jonas Rivetti who - volunteered to not only translate the H \&\ P statements but also this - documentation! - \item The command \cmd{bond} which allows to use other bonds than single, double - and triple, see section~\ref{ssec:bonds}. I wanted to add this for a long time! - \item A few changes to the looks of the radical point and new options to customize - it, see section~\ref{ssec:compounds:customization}. -\end{itemize} - -\subsection{Versions 3.5 and 3.6} -\begin{itemize} - \item Line breaks at bonds in formulas are no longer possible. - \item Line breaks after arrows in formulas are possible. - \item Some of the horizontal spaces in formulas are now stretch- and shrinkable. - \item In formulas math escaping is also via \cmd*{(} and \cmd*{)} possible. - \item New options: \key{radical-vshift}, \key{radical-hshift} and - \key{radical-space} allow finer control over the radical dot. - \item In stoichiometric factors a leading 0 is added if missing. - \item New option: \key{stoich-paren-parse}. - \item Various internal changes to the code. - \item New option: \key{arrow-min-length}. -\end{itemize} -\secidx*{News}\secidx*{PRELIMINARIES} +\secidx*{PRELIMINARIES} \part{\texorpdfstring{\Chemmacros}{chemmacros}}\secidx{CHEMMACROS}\label{part:chemmacros} \section{Particles, Ions and Symbols}\label{sec:teilchen}\secidx{Particles, Ions and Symbols} \subsection{Predefined}\secidx[predefined]{Particles, Ions and Symbols} -\chemmacros defines some simple macros for displaying often needed particles and -symbols. Please note, that they're displayed differently depending on the package -options used, see section~\ref{sec:optionen}. These commands can be used in text -as well as in math mode. Note that they are not meant to be used in \Chemformula's -\cmd{ch}. - -\begin{beschreibung} - \befehl{Hpl} \Hpl (proton) - \befehl{Hyd} \Hyd (hydroxide) - \befehl{HtO} \HtO (oxonium ion) (\textbf{H} \textbf{t}hree \textbf{O}) - \befehl{water} \water - \befehl{el} \el (electron) - \befehl{prt} \prt (proton) - \befehl{ntr} \ntr (neutron) - \befehl{Nu} \Nu (nucleophile). The package \paket{mathspec} also defines a macro - \cmd{Nu}. If you chose package option \key[option]{Nu}{mathspec} \chemmacros - defines \cmd{Nuc} instead\label{Nu}. - \befehl{El} \El (electrophile) - \befehl{ba} \ba (base) - \befehl{fplus} \fplus - \befehl{fminus} \fminus - \befehl{transitionstatesymbol} \transitionstatesymbol - \befehl{standardstate} \standardstate. This symbol is only provided by \chemmacros, - if the package \paket{chemstyle} is not loaded; the idea is borrowed from - there\footnote{many thanks to the package author \href{http://www.texdev.net/}{Joseph Wright}.}. - \befehl{Chemalpha} \Chemalpha - \befehl{Chembeta} \Chembeta - \befehl{Chemgamma} \Chemgamma - \befehl{Chemdelta} \Chemdelta - \befehl{Chemepsilon} \Chemepsilon - \befehl{Chemeta} \Chemeta - \befehl{Chemkappa} \Chemkappa - \befehl{Chemmu} \Chemmu - \befehl{Chemnu} \Chemnu - \befehl{Chemrho} \Chemrho - \befehl{Chempi} \Chempi - \befehl{Chemsigma} \Chemsigma - \befehl{Chemomega} \Chemomega - \befehl{ChemDelta} \ChemDelta -\end{beschreibung} - -\achtung{The command \cmd{Rad} has been dropped!} - -The two particles \cmd{Nu} and \cmd{ba} can be modified. To do that you use the -option -\begin{beschreibung} - \Option[particle]{elpair}{false|\default{dots}|dash}. + +\chemmacros defines some simple macros for displaying often needed particles +and symbols. Please note, that they're displayed differently depending on the +package options used, see section~\ref{sec:optionen}. These commands can be +used in text as well as in math mode. Note that they are not meant to be used +in \chemformula's \cmd{ch}. + +\begin{beschreibung} + \Befehl{Hpl} \Hpl (proton) + \Befehl{Hyd} \Hyd (hydroxide) + \Befehl{HtO} \HtO (oxonium ion) (\textbf{H} \textbf{t}hree \textbf{O}) + \Befehl{water} \water + \Befehl{el} \el (electron) + \Befehl{prt} \prt (proton) + \Befehl{ntr} \ntr (neutron) + \Befehl{Nu} \Nu (nucleophile).\newline + The package \paket{mathspec} also defines a macro \cmd{Nu}. If you chose + package option \key[option]{Nu}{mathspec} \chemmacros\ defines \cmd{Nuc} + instead\label{Nu}. + \Befehl{El} \El (electrophile) + \Befehl{ba} \ba (base) + \Befehl{fplus} \fplus + \Befehl{fminus} \fminus + \Befehl{transitionstatesymbol} \transitionstatesymbol + \Befehl{standardstate} \standardstate.\newline + This symbol is only provided by \chemmacros, if the package + \paket{chemstyle} is not loaded; the idea is borrowed from + there\footnote{many thanks to the package author + \href{http://www.texdev.net/}{Joseph Wright}.}. + \Befehl{Chemalpha} \Chemalpha, \cmd{ChemAlpha} \ChemAlpha\newline + For each of the 24 greek letters a lowercase and uppercase \cmd*{Chem...} + command is defined that maps to the upright greek letter as set with the + option \key{greek}. More details on this can be found in the manual of the + \chemgreek\ package. +\end{beschreibung} + +The two particles \cmd{Nu} and \cmd{ba} can be modified. To do that you use +the option +\begin{beschreibung} + \Option[particle]{elpair}{false|\default{dots}|dash}\Default{false} + Set how the electron pair of the particles \cmd{Nu} and \cmd{ba} are set. \end{beschreibung} It only has any effect, if the package \paket{chemfig} is loaded, since it uses -it's command \lstinline+\Lewis+. +it's command \cmd*{Lewis}. \begin{beispiel} % needs package `chemfig' \ba[elpair] \Nu[elpair=dash] @@ -624,81 +680,69 @@ it's command \lstinline+\Lewis+. \end{beispiel} \label{desc:upgreek}The greek letters aren't newly defined symbols but are -defined differently depending on the packages you've loaded. The default definition -is the corresponding math letter. If you have loaded the \paket{textgreek} package -the letters are taken from there, and if you have loaded the package \paket{upgreek} -the macros of that package are used. This documentation uses \paket{upgreek} for -instance. If you load both \paket{upgreek} and \paket{textgreek} the letters from -\paket{upgreek} are used. - -If you don't want \chemmacros to use a package automatically but want to decide -for yourself, there is the option \key[option]{greek}. Table~\ref{tab:upgreek_mode} -shows the different styles for some of the letters. - -\begin{table}[h] - \centering - \begin{tabular}{lccc}\toprule - & math & upgreek & textgreek \\\midrule - \cmd{Chemalpha} & $\alpha$ & $\upalpha$ & \textalpha \\ - \cmd{Chembeta} & $\beta$ & $\upbeta$ & \textbeta \\ - \cmd{ChemDelta} & $\Delta$ & $\Updelta$ & \textDelta \\ \bottomrule - \end{tabular} - \caption{The greek letters}\label{tab:upgreek_mode} -\end{table} - -The reason why \chemmacros defines these macros in the first place is \ac{iupac} -compliance. \ac{iupac} recommends to use upright greek letters in nomenclature. +defined differently depending on the packages you've loaded. The default +definition is the corresponding math letter. If you have loaded the +\paket{textgreek} package the letters are taken from there, and if you have +loaded the package \paket{upgreek} the macros of that package are used. This +is also described in the description of the package option \key{greek}, other +details can be found in the documentation of the \chemgreek\ package. This +documentation uses \paket{newtxmath} and the setting \key{greek}{newtx} for +instance. + +The reason why \chemmacros\ uses these macros in the first place is \ac{iupac} +compliance. \ac{iupac} recommends to use upright greek letters in +nomenclature. \begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,9]{iupac:greenbook}}}] - Greek letters are used in systematic organic, inorganic, macromolecular and - biochemical nomenclature. These should be roman (upright), since they are not - symbols for physical quantities. + Greek letters are used in systematic organic, inorganic, macromolecular and + biochemical nomenclature. These should be roman (upright), since they are + not symbols for physical quantities. \end{zitat} -\chemmacros uses these commands now to define nomenclature commands, see +\chemmacros\ uses these commands now to define nomenclature commands, see page~\pageref{par:greek_letters}. \subsection{Own Particles}\secidx[own]{Particles, Ions and Symbols} + Surely sometimes it can be handy to have other particle macros defined such as -\lstinline+\positron+ or \lstinline+\photon+. This can easily be done with this -command: +\cmd*{positron} or \cmd*{photon}. This can easily be done with this command: \begin{beschreibung} \Befehl{DeclareChemParticle}{<cmd>}\ma{<definition>} \Befehl{RenewChemParticle}{<cmd>}\ma{<definition>} \end{beschreibung} -Depending on the \key{method} you chose as option the \code{<definition>} will -either be a formula defined with \paket{mhchem} or with \chemformula. The particle -defined this way behaves like the predefined ones with one exception: if you chose -\key{method}{mhchem} the particle \emph{will not} obey the option \key{circled}. -If you want formal charges with this method you need to use \chemmacros' commands -(see section~\ref{sec:ladungen}) explicitly. If you chose \key{method}{chemformula} -the partictle \emph{will} obey the \key{circled} option. +The particle defined this way behaves uses \chemformula' \cmd{ch} to typeset +the particle which means that the \code{<definition>} should be a vaild +\chemformula\ compound. Please have a look at the \chemformula\ manual for +details. The particle will obey the \key{circled} option. \begin{beispiel} - % uses the `upgreek' package - \DeclareChemParticle{\positron}{$\upbeta$+} - \DeclareChemParticle{\photon}{$\upgamma$} - \RenewChemParticle{\el}{$\upbeta$-} + \DeclareChemParticle{\positron}{\Chembeta+} + \DeclareChemParticle{\photon}{\Chemgamma} + \RenewChemParticle{\el}{\Chembeta-} \positron\ \photon\ \el \end{beispiel} -\cmd{DeclareChemParticle} only defines a particle if \code{<cmd>} is not already -used by any other command. If it \emph{is} already used \chemmacros will either -give a warning or an error, depending on the option \key{strict}. -\cmd{RenewChemParticle} \emph{only} defines a particle if \code{<cmd>} \emph{is} -already used and issues a warning/error otherwise. +\cmd{DeclareChemParticle} only defines a particle if \code{<cmd>} is not +already used by any other command. If it \emph{is} already used \chemmacros +will either give a warning or an error, depending on the option \key{strict}. +\cmd{RenewChemParticle} \emph{only} defines a particle if \code{<cmd>} +\emph{is} already used and issues a warning/error otherwise. \secidx*{Particles, Ions and Symbols} \section{Nomenclature, Stereo Descriptors, Latin Phrases}\label{sec:stereo} \subsection{\acs{iupac} Names}\secidx{IUPAC Names} -Similar to the \paket{bpchem} package \chemmacros provides a command\footnote{The -idea and the implementation is shamelessly borrowed from \paket*{bpchem} by Bjørn -Pedersen.} to typeset \ac{iupac} names. Why is that useful? \ac{iupac} names can get very -long. So long indeed that they span over more than two lines, especially in -two-column documents. This means they must be allowed to be broken more than one -time. This is what the following command does. + +Similar to the \paket{bpchem} package \chemmacros\ provides a +command\footnote{The idea and the implementation is shamelessly borrowed from + \paket*{bpchem} by Bjørn Pedersen.} to typeset \ac{iupac} names. Why is +that useful? \ac{iupac} names can get very long. So long indeed that they +span over more than two lines, especially in two-column documents. This means +they must be allowed to be broken more than one time. This is what the +following command does. \begin{beschreibung} - \Befehl{iupac}{<IUPAC name>} Inside this command use \cmd{|} and \cmd{-} to - indicate a breaking point or a breaking dash. Use {\catcode`\^=11\relax\cmd{^}} - as a shortcut for \lstinline=\textsuperscript=. + \Befehl{iupac}{<IUPAC name>}\newline + Inside this command use \cmd{|} and \cmd{-} to indicate a breaking point or + a breaking dash. Use {\catcode`\^=11\relax\cmd{^}} as a shortcut for + \cmd*{textsuperscript}. (These commands are similar to the shorthands + provided by \paket{babel} for certain languages.) \end{beschreibung} \begin{beispiel} @@ -706,13 +750,14 @@ time. This is what the following command does. \iupac{Tetra\|cyclo[2.2.2.1\^{1,4}]\-un\|decane-2\-dodecyl\-5\-(hepta\|decyl\|iso\|dodecyl\|thio\|ester)} \end{minipage} \end{beispiel} -The \cmd{iupac} command is more of a semantic command. Most times you can achieve -(nearly) the same thing by using \cmd{-} instead of \cmd{|}, \code{-} instead of -\cmd{-} and \lstinline=\textsuperscript= instead of {\catcode`\^=11\relax\cmd{^}}. +The \cmd{iupac} command is more of a semantic command. Most times you can +achieve (nearly) the same thing by using \cmd{-} instead of \cmd{|}, \code{-} +instead of \cmd{-} and \cmd*{textsuperscript} instead of +{\catcode`\^=11\relax\cmd{^}}. There are some subtleties: \cmd{-} inserts a small space before the hyphen and -removes a small space after it. The command \cmd{|} not only prevents ligatures -but also inserts a small space. +removes a small space after it. The command \cmd{|} not only prevents +ligatures but also inserts a small space. \begin{beispiel} \huge\iupac{2,4\-Di\|chlor\|pentan} \\ 2,4-Dichlorpentan @@ -720,35 +765,39 @@ but also inserts a small space. The spaces inserted by these commands can be customized. \begin{beschreibung} - \option[iupac]{hyphen-pre-space}{<dim>} Default = \code{.01em} - \option[iupac]{hyphen-post-space}{<dim>} Default = \code{-.03em} - \option[iupac]{break-space}{<dim>} Default = \code{.01em} -\end{beschreibung} - -The command \cmd{iupac} serves another purpose, too, however. Regardless of the -setting of the \key[option]{iupac} option all the commands presented in this -section are always defined \emph{inside} \cmd{iupac}. Quite a number of the naming -commands have very general names: \cmd{meta}, \cmd{D}, \cmd{E}, \cmd{L}, \cmd{R}, -\cmd{S}, \cmd{trans} and so forth. This means they either are predefined already -(\cmd{L} \L) or are easily defined by another package or class (the \paket{cool} -package defines both \cmd{D} and \cmd{E}, for example). In order to give you -control which commands are defined in which way, there is the package option -\key[option]{iupac}\label{desc:iupac}. It has three modes: + \Option[iupac]{hyphen-pre-space}{<dim>}\Default{.01em} + Set the space that is inserted before the hyphen set with \cmd{-}. + \Option[iupac]{hyphen-post-space}{<dim>}\Default{-.03em} + Set the space that is inserted after the hyphen set with \cmd{-}. + \Option[iupac]{break-space}{<dim>}\Default{.01em} + Set the space inserted by \cmd{|}. +\end{beschreibung} + +The command \cmd{iupac} serves another purpose, too, however. Regardless of +the setting of the \key[option]{iupac} option all the commands presented in +this section are always defined \emph{inside} \cmd{iupac}. Quite a number of +the naming commands have very general names: \cmd{meta}, \cmd{D}, \cmd{E}, +\cmd{L}, \cmd{R}, \cmd{S}, \cmd{trans} and so forth. This means they either +are predefined already (\cmd{L} \L) or are easily defined by another package +or class (the \paket{cool} package defines both \cmd{D} and \cmd{E}, for +example). In order to give you control which commands are defined in which +way, there is the package option \key[option]{iupac}\label{desc:iupac}. It +has three modes: \begin{itemize} - \item \key{iupac}{auto}: if the commands are \emph{not} defined by any package - or class you're using they are available generally, otherwise only \emph{inside} - \cmd{iupac}. - \item \key{iupac}{restricted}: all naming commands are \emph{only} defined inside - \cmd{iupac}. If the commands are defined by another package they of course - have that meaning outside. They're not defined outside otherwise. - \item \key{iupac}{strict}: \chemmacros overwrites any other definition and makes - the commands available throughout the document. Of course the commands can be - redefined (but only in the document body). They will still be available inside - \cmd{iupac} then. +\item \key{iupac}{auto}: if the commands are \emph{not} defined by any package + or class you're using they are available generally, otherwise only + \emph{inside} \cmd{iupac}. +\item \key{iupac}{restricted}: all naming commands are \emph{only} defined + inside \cmd{iupac}. If the commands are defined by another package they of + course have that meaning outside. They're not defined outside otherwise. +\item \key{iupac}{strict}: \chemmacros\ overwrites any other definition and + makes the commands available throughout the document. Of course the + commands can be redefined (but only in the document body). They will still + be available inside \cmd{iupac} then. \end{itemize} Table~\ref{tab:iupac_modes} demonstrates the different modes. -\begin{table}[h] +\begin{table}[ht] \centering \begin{tabular}{lccc}\toprule & auto & restricted & strict \\\midrule @@ -761,22 +810,26 @@ Table~\ref{tab:iupac_modes} demonstrates the different modes. \end{table} \subsubsection{Predefined Commands}\secidx[predefined]{IUPAC Names}\secidx{Stereo Descriptors and Nomenclature} -The macros in this section are intended to make the writing of \ac{iupac} names more -convenient. + +The macros in this section are intended to make the writing of \ac{iupac} +names more convenient. \paragraph{Greek Letters}\label{par:greek_letters}\secidx[greek letters]{IUPAC Names} -Greek letters in compound names are typeset upright. For this there are the packages -\paket{upgreek} and \paket{textgreek}. If you have loaded one of them \chemmacros -typesets the following commands upright: -\begin{beschreibung} - \befehl{a} \iupac{\a} - \befehl{b} \iupac{\b} - \befehl{g} \iupac{\g} - \befehl{d} \iupac{\d} - \befehl{k} \iupac{\k} - \befehl{m} \iupac{\m} - \befehl{n} \iupac{\n} - \befehl{w} \iupac{\w} + +Greek letters in compound names are typeset upright. For this there are for +example the packages \paket{upgreek} and \paket{textgreek}. If you have +loaded one of them\footnote{There are other options, see the description of + the \key{greek} option.} \chemmacros\ typesets the following commands +upright: +\begin{beschreibung} + \Befehl{a} \iupac{\a} + \Befehl{b} \iupac{\b} + \Befehl{g} \iupac{\g} + \Befehl{d} \iupac{\d} + \Befehl{k} \iupac{\k} + \Befehl{m} \iupac{\m} + \Befehl{n} \iupac{\n} + \Befehl{w} \iupac{\w} \end{beschreibung} \begin{beispiel} \iupac{5\a\-androstan\-3\b\-ol} \\ @@ -784,15 +837,16 @@ typesets the following commands upright: \end{beispiel} \paragraph{Hetero Atoms and added Hydrogen}\secidx[hetero atoms]{IUPAC Names} + Attachments to hetero atoms and added hydrogen atoms are indicated by italic -letters~\cite{iupac:greenbook}. \chemmacros defines a few shortcuts for the most -common ones. +letters~\cite{iupac:greenbook}. \chemmacros\ defines a few shortcuts for the +most common ones. \begin{beschreibung} - \befehl{H} \iupac{\H} - \befehl{O} \iupac{\O} - \befehl{N} \iupac{\N} - \befehl{Sf} \iupac{\Sf} - \befehl{P} \iupac{\P} + \Befehl{H} \iupac{\H} + \Befehl{O} \iupac{\O} + \Befehl{N} \iupac{\N} + \Befehl{Sf} \iupac{\Sf} + \Befehl{P} \iupac{\P} \end{beschreibung} \begin{beispiel} \iupac{\N\-methyl\|benz\|amide} \\ @@ -802,54 +856,59 @@ common ones. \paragraph{Cahn-Ingold-Prelog}\index{Cahn-Ingold-Prelog}\secidx[Cahn-Ingold-Prelog]{IUPAC Names}\label{par:cip} \begin{beschreibung} - \befehl{cip}{<conf>} \eg: \cmd{cip}{R,S} \cip{R,S} - \befehl{R} \iupac{\R} - \befehl{S} \iupac{\S} + \Befehl{cip}{<conf>} \eg: \cmd{cip}{R,S} \cip{R,S} + \Befehl{R} \iupac{\R} + \Befehl{S} \iupac{\S} \end{beschreibung} -Since the command \cmd{S} has another meaning already (\S) it is only available -inside \cmd{iupac} in the default setting. +Since the command \cmd{S} has another meaning already (\S) it is only +available inside \cmd{iupac} in the default setting. -Both these commands and the entgegen/zusammen descriptors get a small additional -amount of kerning after the closing parenthesis. This amount can be changed through -the following option: +Both these commands and the entgegen/zusammen descriptors get a small +additional amount of kerning after the closing parenthesis. This amount can +be changed through the following option: \begin{beschreibung} - \option[iupac]{cip-kern}{<dim>} amount of kerning after the closing parenthesis. - Default = \code{.075em} + \Option[iupac]{cip-kern}{<dim>}\Default{.075em} + Set the amount of kerning after the closing parenthesis. \end{beschreibung} \paragraph{Fischer}\index{Fischer}\secidx[Fischer]{IUPAC Names} \begin{beschreibung} - \befehl{D} \iupac{\D} - \befehl{L} \iupac{\L} + \Befehl{D} \iupac{\D} + \Befehl{L} \iupac{\L} \end{beschreibung} -Since the command \cmd{L} has another meaning already (\L) it is only available -inside \cmd{iupac} in the default setting. +Since the command \cmd{L} has another meaning already (\L) it is only +available inside \cmd{iupac} in the default setting. + +\paragraph{cis/trans, zusammen/entgegen, syn/anti \& tert} +\index{tert}\secidx[tert]{IUPAC Names} +\index{cis/trans}\secidx[cis/trans]{IUPAC Names} +\index{zusammen/entgegen}\secidx[zusammen/entgegen]{IUPAC Names} +\secidx[syn/anti]{IUPAC Names} -\paragraph{cis/trans, zusammen/entgegen, syn/anti \& tert}\index{tert}\secidx[tert]{IUPAC Names}\index{cis/trans}\secidx[cis/trans]{IUPAC Names}\index{zusammen/entgegen}\secidx[zusammen/entgegen]{IUPAC Names}\secidx[syn/anti]{IUPAC Names} \begin{beschreibung} - \befehl{cis} \cis - \befehl{trans} \trans - \befehl{Z} \Z - \befehl{E} \E - \befehl{syn} \syn - \befehl{anti} \anti - \befehl{tert} \tert + \Befehl{cis} \cis + \Befehl{trans} \trans + \Befehl{Z} \Z + \Befehl{E} \E + \Befehl{syn} \syn + \Befehl{anti} \anti + \Befehl{tert} \tert \end{beschreibung} -The package \paket{cool} defines the commands \cmd{E} and \cmd{D}, too. If you -load it, the \chemmacros version will only be available inside \cmd{iupac} in -the default setting. +The package \paket{cool} defines the commands \cmd{E} and \cmd{D}, too. If +you load it, the \chemmacros version will only be available inside \cmd{iupac} +in the default setting. \paragraph{ortho/meta/para}\index{ortho/meta/para}\secidx[ortho/meta/para]{IUPAC Names} \begin{beschreibung} - \befehl{ortho} \ortho - \befehl{meta} \meta - \befehl{para} \para + \Befehl{ortho} \ortho + \Befehl{meta} \meta + \Befehl{para} \para \end{beschreibung} \paragraph{Absolute Configuration}\index{absolute configuration} (uses \TikZ) \begin{beschreibung} - \befehl{Rconf}[<letter>] \cmd{Rconf}: \Rconf \quad\cmd{Rconf}[]: \Rconf[] - \befehl{Sconf}[<letter>] \cmd{Sconf}: \Sconf \quad\cmd{Sconf}[]: \Sconf[] + \Befehl{Rconf}[<letter>] \cmd{Rconf}: \Rconf \quad\cmd{Rconf}[]: \Rconf[] + \Befehl{Sconf}[<letter>] \cmd{Sconf}: \Sconf \quad\cmd{Sconf}[]: \Sconf[] \end{beschreibung} Examples: @@ -867,10 +926,11 @@ Examples: \secidx*{Stereo Descriptors and Nomenclature} \paragraph{Coordination Chemistry} -\chemmacros provides two commands useful with coordination chemistry: + +\chemmacros\ provides two commands useful with coordination chemistry: \begin{beschreibung} - \befehl{bridge}{<num>} \bridge{3} - \befehl{hapto}{<num>} \hapto{5} + \Befehl{bridge}{<num>} \bridge{3} + \Befehl{hapto}{<num>} \hapto{5} \end{beschreibung} \begin{beispiel} Ferrocene = \iupac{bis(\hapto{5}cyclo\|penta\|dienyl)iron} \\ @@ -879,31 +939,34 @@ Examples: Two options allow customization: \begin{beschreibung} - \option[iupac]{bridge-number}{sub|super} appends the number as a subscript or - superscript. \ac{iupac} recommendation is the subscript \cite{iupac:redbook}. - Default = \code{sub} - \option[iupac]{coord-use-hyphen}{\default{true}|false} append a hyphen to - \cmd{hapto} and \cmd{bridge} or don't. Default = \code{true} + \Option[iupac]{bridge-number}{sub|super}\Default{sub} + Appends the number as a subscript or superscript. \ac{iupac} + recommendation is the subscript \cite{iupac:redbook}. + \Option[iupac]{coord-use-hyphen}{\default{true}|false}\Default{true} + Append a hyphen to \cmd{hapto} and \cmd{bridge} or don't. \end{beschreibung} \subsubsection{Own Naming Commands}\secidx[own]{IUPAC Names} + If you find any commands missing you can define them using \begin{beschreibung} \Befehl{DeclareChemIUPAC}{<cmd>}\ma{<declaration>} \Befehl{RenewChemIUPAC}{<cmd>}\ma{<declaration>} \end{beschreibung} -A command defined in this way will obey the setting of the option \key[option]{iupac}. -This means any existing command is only overwritten with \key{iupac}{strict}. However, -\cmd{DeclareChemIUPAC} will \emph{not} change the definition of an existing \ac{iupac} -naming command but issue a warning/an error (depending on the package option -\key{strict}) if the \ac{iupac} naming command already exists. +A command defined in this way will obey the setting of the option +\key[option]{iupac}. This means any existing command is only overwritten with +\key{iupac}{strict}. However, \cmd{DeclareChemIUPAC} will \emph{not} change +the definition of an existing \ac{iupac} naming command but issue a warning/an +error (depending on the package option \key{strict}) if the \ac{iupac} naming +command already exists. \begin{beispiel} \DeclareChemIUPAC\endo{\textit{endo}} \RenewChemIUPAC\anti{\textit{anti}} \iupac{(2\-\endo,7\-\anti)\-2\-bromo\-7\-fluoro\|bicyclo[2.2.1]heptane} \end{beispiel} -\cmd{RenewChemIUPAC} allows you to redefine the existing \ac{iupac} naming commands. +\cmd{RenewChemIUPAC} allows you to redefine the existing \ac{iupac} naming +commands. \begin{beispiel} \iupac{\meta\-Xylol} \\ \RenewChemIUPAC\meta{\textit{m}} @@ -913,18 +976,19 @@ naming command but issue a warning/an error (depending on the package option \secidx*{IUPAC Names} \subsection{Latin Phrases}\secidx{Latin Phrases} -The package \paket{chemstyle} provides the command \cmd{latin} to typeset common -latin phrases in a consistent way. \chemmacros defines a similar \cmd{latin} only -if \paket{chemstyle} has \emph{not} been loaded and additionally provides these -commands: + +The package \paket{chemstyle} provides the command \cmd{latin} to typeset +common latin phrases in a consistent way. \chemmacros\ defines a similar +\cmd{latin} only if \paket{chemstyle} has \emph{not} been loaded and +additionally provides these commands: \begin{beschreibung} - \befehl{insitu} \insitu - \befehl{abinitio} \abinitio - \befehl{invacuo} \invacuo + \Befehl{insitu} \insitu + \Befehl{abinitio} \abinitio + \Befehl{invacuo} \invacuo \end{beschreibung} If the package \paket{chemstyle} has been loaded they are defined using -\paket{chemstyle}'s \cmd{latin} command. This means that then the appearance +\paket{chemstyle}'s \cmd{latin} command. This means that then the appearance depends on \paket{chemstyle}'s option \code{abbremph}. The commands are defined through @@ -936,65 +1000,71 @@ The commands are defined through \DeclareChemLatin\ltn{latin text} \ltn \end{beispiel} -If you have \emph{not} loaded \paket{chemstyle} you can change the appearance with -this option: +If you have \emph{not} loaded \paket{chemstyle} you can change the appearance +with this option: \begin{beschreibung} - \option[latin]{format}{<definition>} Default = \lstinline+\itshape+ + \Option[latin]{format}{<definition>}\Default{\cmd*{itshape}} + Set the format of the latin phrases. \end{beschreibung} \secidx*{Latin Phrases} \section{Units for the Usage With \textsf{siunitx}}\label{sec:einheiten}\secidx{Units} -In chemistry some non-SI units are very common. \paket{siunitx} provides the -command \lstinline+\DeclareSIUnit{<command>}{<unit>}+ to add arbitrary units. -\chemmacros uses that command to provide some units. Like all \paket{siunitx} -units they're only valid inside \lstinline+\SI{<num>}{<unit>}+ and \lstinline+\si{<unit>}+. -\begin{beschreibung} - \befehl{atmosphere} \si{\atmosphere} - \befehl{atm} \si{\atm} - \befehl{calory} \si{\calory} - \befehl{cal} \si{\cal} - \befehl{cmc} \si{\cmc} The units \cmd{cmc}, \cmd{molar}, and \cmd{Molar} are - defined by the package \paket{chemstyle} as well. \chemmacros only defines them, - if \paket{chemstyle} is not loaded. - \befehl{molar} \si{\molar} - \befehl{moLar} \si{\moLar} - \befehl{Molar} \si{\Molar} - \befehl{MolMass} \si{\MolMass} - \befehl{normal} \si{\normal} - \befehl{torr} \si{\torr} -\end{beschreibung} - -By the way: \lstinline+\mmHg+ \si{\mmHg} already is defined by \paket{siunitx} -and \paket{chemstyle} + +In chemistry some non-SI units are very common. \paket{siunitx} provides the +command \cmd*{DeclareSIUnit}{<command>}\ma{<unit>} to add arbitrary units. +\chemmacros\ uses that command to provide some units. Like all +\paket{siunitx} units they're only valid inside \cmd*{SI}{<num>}\ma{<unit>} +and \cmd*{si}{<unit>}. +\begin{beschreibung} + \Befehl{atmosphere} \si{\atmosphere} + \Befehl{atm} \si{\atm} + \Befehl{calory} \si{\calory} + \Befehl{cal} \si{\cal} + \Befehl{cmc} \si{\cmc}\newline + The units \cmd{cmc}, \cmd{molar}, and \cmd{Molar} are defined by the + package \paket{chemstyle} as well. \chemmacros\ only defines them, if + \paket{chemstyle} is not loaded. + \Befehl{molar} \si{\molar} + \Befehl{moLar} \si{\moLar} + \Befehl{Molar} \si{\Molar} + \Befehl{MolMass} \si{\MolMass} + \Befehl{normal} \si{\normal} + \Befehl{torr} \si{\torr} +\end{beschreibung} + +By the way: \cmd*{mmHg} \si{\mmHg} already is defined by \paket{siunitx} and +\paket{chemstyle}. \secidx*{Units} \section{Acid/Base}\label{sec:saeure_base}\secidx{Acid/Base} + Easy representation of \pH, \pKa \ldots\ (the command \cmd{pKa} depends on the package option \key[option]{language}). \begin{beschreibung} - \befehl{pH} \pH - \befehl{pOH} \pOH - \befehl{Ka} \Ka - \befehl{Kb} \Kb - \befehl{Kw} \Kw - \befehl{pKa}[<num>] \cmd{pKa}: \pKa, \cmd{pKa}[1]: \pKa[1] - \befehl{pKb}[<num>] \cmd{pKb}: \pKb, \cmd{pKb}[1]: \pKb[1] - \befehl{p}{<anything>} \eg \cmd{p}{\cmd{Kw}} \p{\Kw} + \Befehl{pH} \pH + \Befehl{pOH} \pOH + \Befehl{Ka} \Ka + \Befehl{Kb} \Kb + \Befehl{Kw} \Kw + \Befehl{pKa}[<num>] \cmd{pKa}: \pKa, \cmd{pKa}[1]: \pKa[1] + \Befehl{pKb}[<num>] \cmd{pKb}: \pKb, \cmd{pKb}[1]: \pKb[1] + \Befehl{p}{<anything>} \eg \cmd{p}{\cmd{Kw}} \p{\Kw} \end{beschreibung} \begin{beispiel} \Ka \Kb \pKa \pKa[1] \pKb \pKb[1] \end{beispiel} -\achtung{The default appearance of the \p{}-commands has changed to follow \ac{iupac} -recommendations.} +\achtung{The default appearance of the \p{}-commands has changed to follow + \ac{iupac} recommendations.} \begin{zitat}[{\acs{iupac} Green Book {\cite[][p.\,103]{iupac:greenbook}}}] The operator \p{} \textelp{} shall be printed in Roman type. \end{zitat} There is one option which changes the style the \p{} is typeset: \begin{beschreibung} - \option[acid-base]{p-style}{italics|slanted|upright} Default = \code{upright} + \Option[acid-base]{p-style}{italics|slanted|upright}\Default{upright} + Set the style of the \p{} operator. \end{beschreibung} \begin{beispiel} \pH, \pKa @@ -1006,19 +1076,22 @@ There is one option which changes the style the \p{} is typeset: \secidx*{Acid/Base} \section{Oxidation Numbers, Real and Formal Charges}\label{sec:ladungen} -\chemmacros distinguishes between real ($+$/$-$) and formal (\fplus/\fminus) -charge symbols, also see section~\ref{sec:optionen}. All commands using formal -charge symbols start with a \code{f}. + +\chemmacros\ distinguishes between real ($+$/$-$) and formal (\fplus/\fminus) +charge symbols, also see section~\ref{sec:optionen}. All commands using +formal charge symbols start with a \code{f}. \subsection{Ion Charges}\label{ssec:ionen}\secidx{Ion Charges} -Simple displaying of (real) charges. It is worth noting that these commands -really are relicts from a time when \chemmacros tried hard to be compliant -with \paket{mhchem} and \Chemformula didn't exist, yet. They are still provided -for backwards compatibility but my recommendation is to use \cmd{ch} -(see~\ref{part:chemformula}) and forget about these commands: + +Simple displaying of (real) charges. It is worth noting that these commands +really are relicts from a time when \chemmacros\ tried hard to be compliant +with \paket{mhchem} and \chemformula didn't exist, yet. They are still +provided for backwards compatibility but \emph{my recommendation is to use} +\cmd{ch} (see the documentation of the \chemformula\ package) \emph{and forget + about these commands:} \begin{beschreibung} - \befehl{pch}[<number>] positive charge (\textbf{p}lus + \textbf{ch}arge) - \befehl{mch}[<number>] negative charge (\textbf{m}inus + \textbf{ch}arge) + \Befehl{pch}[<number>] positive charge (\textbf{p}lus + \textbf{ch}arge) + \Befehl{mch}[<number>] negative charge (\textbf{m}inus + \textbf{ch}arge) \end{beschreibung} \begin{beispiel} @@ -1028,44 +1101,22 @@ for backwards compatibility but my recommendation is to use \cmd{ch} The same for formal charges: \begin{beschreibung} - \befehl{fpch}[<number>] positive charge - \befehl{fmch}[<number>] negative charge + \Befehl{fpch}[<number>] positive charge + \Befehl{fmch}[<number>] negative charge \end{beschreibung} \begin{beispiel} \fpch\ \fmch\ \fpch[3] \fmch[3] \end{beispiel} - -There is a key which influences the behaviour of the charges. -\begin{beschreibung} - \option[charges]{append}{\default{true}|false} if set \code{true}, the charge - is appended together with an empty group. -\end{beschreibung} -This is how the key influences the behaviour: -\begin{beispiel} - % uses package `mhchem' - \chemsetup{charges/append=false,phases/pos=sub} - \ce{H\pch\aq} \ce{H\aq\pch} - - \chemsetup[charges]{append=true} - \ce{H\pch\aq} \ce{H\aq\pch} -\end{beispiel} -In most cases this behaviour will be unwanted. However, in some cases it might be -useful, for example together with the \cmd{ox} command (see next section): -\begin{beispiel} - \chemsetup{charges/append=false,phases/pos=sub} - \ce{\ox{1,H}\pch\aq} - - \chemsetup[charges]{append=true} - \ce{\ox{1,H}\pch\aq} -\end{beispiel} \secidx*{Ion Charges} \subsection{Oxidation Numbers}\label{ssec:oxidationszahlen}\secidx{Oxidation Numbers} + Typesetting oxidation numbers: \begin{beschreibung} - \befehl{ox}[<keyval>]{<number>,<atom>} places \code{<number>} above \code{<atom>}; - \code{<number>} has to be a (rational) number! + \Befehl{ox}[<keyval>]{<number>,<atom>}\newline + Places \code{<number>} above \code{<atom>}; \code{<number>} has to be a + (rational) number! \end{beschreibung} \begin{beispiel} @@ -1074,19 +1125,20 @@ Typesetting oxidation numbers: There are a number of keys, that can be used to modify the \cmd{ox} command. \begin{beschreibung} - \option[ox]{parse}{\default{true}|false} when \code{false} an arbitrary entry - can be used for \code{<number>}. Default = \code{true} - \option[ox]{roman}{\default{true}|false} switches from roman to arabic numbers. - Default = \code{true} - \option[ox]{pos}{top|super|side}; \code{top} places \code{<number>} above - \code{<atom>}, \code{super} to the upper right as superscript and \code{side} - to the right and inside brackets. Default = \code{top} - \option[ox]{explicit-sign}{\default{true}|false} shows the $+$ for positiv - numbers and the $\pm$ for $0$. Default = \code{false} - \option[ox]{decimal-marker}{comma|point} choice for the decimal marker for - formal oxidation numbers like \ox{1.2,X}. Default = \code{point} - \option[ox]{align}{center|right} center the oxidation number relative to the atom - or right-align it. Default = \code{center} + \Option[ox]{parse}{\default{true}|false}\Default{true} + When \code{false} an arbitrary entry can be used for \code{<number>}. + \Option[ox]{roman}{\default{true}|false}\Default{false} + Switches from roman to arabic numbers. + \Option[ox]{pos}{top|super|side}\Default{top} + \code{top} places \code{<number>} above \code{<atom>}, \code{super} to the + upper right as superscript and \code{side} to the right and inside + brackets. + \Option[ox]{explicit-sign}{\default{true}|false}\Default{false} + Shows the $+$ for positiv numbers and the $\pm$ for $0$. + \Option[ox]{decimal-marker}{comma|point}\Default{point} + Choice for the decimal marker for formal oxidation numbers like \ox{1.2,X}. + \Option[ox]{align}{center|right}\Default{center} + Center the oxidation number relative to the atom or right-align it. \end{beschreibung} \begin{beispiel} @@ -1102,8 +1154,8 @@ The \key[ox]{pos}{super} variant also can be set with the shortcut \cmd{ox}*: \ox{3,Fe} \ox*{3,Fe} \end{beispiel} -Using the \key[ox]{explicit-sign} key will always show the sign of the oxidation -number: +Using the \key[ox]{explicit-sign} key will always show the sign of the +oxidation number: \begin{beispiel} \chemsetup[ox]{explicit-sign = true} \ox{+1,Na}, \ox{2,Ca}, \ox{-2,S}, \ch{"\ox{0,F}" {}2} @@ -1113,13 +1165,14 @@ number: Compare \ox{-1,\ch{O2^2-}} to \ch{"\ox{-1,O}" {}2^2-} \end{beispiel} -Sometimes one might want to use formal oxidation numbers like \num{.5} or $\frac{1}{3}$: +Sometimes one might want to use formal oxidation numbers like \num{.5} or +$\frac{1}{3}$: \begin{beispiel} \ox{.5,\ch{Br2}} \ch{"\ox{1/3,I}" {}3+} \end{beispiel} -The fraction uses the \lstinline+\sfrac+ command of the \paket{xfrac} package. -For this purpose the instance \lstinline+chemmacros-ox-frac+ is defined. +The fraction uses the \cmd*{sfrac} command of the \paket{xfrac} package. For +this purpose the instance \code{chemmacros-ox-frac} is defined. \begin{beispiel}[code only] \DeclareInstance{xfrac}{chemmacros-ox-frac}{text} { @@ -1136,12 +1189,13 @@ strongly depends on the used font. \secidx*{Oxidation Numbers} \subsection{Partial Charges and Similar Stuff}\label{ssec:partialladungen}\secidx{Partial Charges} + The next ones probably are seldomly needed but nevertheless useful: \begin{beschreibung} - \befehl{delp} \delp\ (\textbf{del}ta + \textbf{p}lus) - \befehl{delm} \delm\ (\textbf{del}ta + \textbf{m}inus) - \befehl{fdelp} \fdelp - \befehl{fdelm} \fdelm + \Befehl{delp} \delp\ (\textbf{del}ta + \textbf{p}lus) + \Befehl{delm} \delm\ (\textbf{del}ta + \textbf{m}inus) + \Befehl{fdelp} \fdelp + \Befehl{fdelm} \fdelm \end{beschreibung} These macros for example can be used with the \cmd{ox} command or with the @@ -1157,12 +1211,12 @@ These macros for example can be used with the \cmd{ox} command or with the The following macros are useful together with \paket{chemfig}, too. \begin{beschreibung} - \befehl{scrp} \scrp\ (\textbf{scr}iptstyle + \textbf{p}lus) - \befehl{scrm} \scrm\ (\textbf{scr}iptstyle + \textbf{m}inus) - \befehl{fscrp} \fscrp - \befehl{fscrm} \fscrm - \befehl{fsscrp} \fsscrp\ (using \lstinline+\scriptscriptstyle+) - \befehl{fsscrm} \fsscrm + \Befehl{scrp} \scrp\ (\textbf{scr}iptstyle + \textbf{p}lus) + \Befehl{scrm} \scrm\ (\textbf{scr}iptstyle + \textbf{m}inus) + \Befehl{fscrp} \fscrp + \Befehl{fscrm} \fscrm + \Befehl{fsscrp} \fsscrp\ (using \lstinline+\scriptscriptstyle+) + \Befehl{fsscrm} \fsscrm \end{beschreibung} \begin{beispiel} @@ -1173,42 +1227,57 @@ The following macros are useful together with \paket{chemfig}, too. \secidx*{Partial Charges} \section{Reaction Mechanisms}\label{sec:mechanismen}\secidx{Reaction Mechanisms} + With the command \begin{beschreibung} \Befehl{mech}[<type>] \end{beschreibung} -one can specify the most common reaction mechanisms. \code{<type>} can have one -of the following values: -\begin{beschreibung} - \befehl{mech} (empty, no opt. argument) nucleophilic substitution \mech - \befehl{mech}[1] unimolecular nucleophilic substitution \mech[1] - \befehl{mech}[2] bimolecular nucleophilic substitution \mech[2] - \befehl{mech}[se] electrophilic substitution \mech[se] - \befehl{mech}[1e] unimolecular electrophilic substitution \mech[1e] - \befehl{mech}[2e] bimolecular electrophilic substitution \mech[2e] - \befehl{mech}[ar] electrophilic aromatic substitution \mech[ar] - \befehl{mech}[e] elimination \mech[e] - \befehl{mech}[e1] unimolecular elimination \mech[e1] - \befehl{mech}[e2] bimolecular elimination \mech[e2] - \befehl{mech}[cb] unimolecular elimination \enquote{conjugated base}, \ie via - carbanion \mech[cb] +one can specify the most common reaction mechanisms. \code{<type>} can have +one of the following values: +\begin{beschreibung} + \Befehl{mech}\newline + (empty, no opt. argument) nucleophilic substitution \mech + \Befehl{mech}[1]\newline + unimolecular nucleophilic substitution \mech[1] + \Befehl{mech}[2]\newline + bimolecular nucleophilic substitution \mech[2] + \Befehl{mech}[se]\newline + electrophilic substitution \mech[se] + \Befehl{mech}[1e]\newline + unimolecular electrophilic substitution \mech[1e] + \Befehl{mech}[2e]\newline + bimolecular electrophilic substitution \mech[2e] + \Befehl{mech}[ar]\newline + electrophilic aromatic substitution \mech[ar] + \Befehl{mech}[e]\newline + elimination \mech[e] + \Befehl{mech}[e1]\newline + unimolecular elimination \mech[e1] + \Befehl{mech}[e2]\newline + bimolecular elimination \mech[e2] + \Befehl{mech}[cb]\newline + unimolecular elimination \enquote{conjugated base}, \ie via carbanion + \mech[cb] \end{beschreibung} \secidx*{Reaction Mechanisms} \section{Redox Reactions}\label{sec:redoxreaktionen}\secidx{Redox Reactions}% TODO: watch pagebreaks! -\chemmacros provides two commands to visualize the transfer of electrons in redox -reactions. Both commands are using \TikZ. + +\chemmacros provides two commands to visualize the transfer of electrons in +redox reactions. Both commands are using \TikZ. \begin{beschreibung} \Befehl{OX}{<name>,<atom>} - \Befehl{redox}(<name1>,<name2>)[<tikz>]\oa{<num>}{<text>} \cnpkgdocarrow\ Only - the first argument \da{<name1>,<name2>} is required, the others are all optional. + \Befehl{redox}(<name1>,<name2>)[<tikz>]\oa{<num>}{<text>}\newline + Only the first argument \da{<name1>,<name2>} is required, the others are + all optional. \end{beschreibung} -\cmd{OX} places \code{<atom>} into a node, which is named with \code{<name>}. If -you have set two \cmd{OX}, they can be connected with a line using \cmd{redox}. -To do so the names of the two nodes that are to be connected are written in the -round braces. Since \cmd{redox} draws a tikzpicture with options \code{remember -picture,overlay}, the document needs to be \emph{compiled at least two times}. +\cmd{OX} places \code{<atom>} into a node, which is named with \code{<name>}. +If you have set two \cmd{OX}, they can be connected with a line using +\cmd{redox}. To do so the names of the two nodes that are to be connected are +written in the round braces. Since \cmd{redox} draws a tikzpicture with +options \code{remember picture,overlay}, the document needs to be +\emph{compiled at least two times}. \begin{beispiel}[dist] \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){oxidation} \end{beispiel} @@ -1217,10 +1286,10 @@ This line can be customized using \TikZ keys in \oa{<tikz>}: \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} \end{beispiel} -With the argument \oa{<num>} the length of the vertical parts of the line can be -adjusted. The default length is \code{.6em}. This length is multiplied with -\code{<num>}. If you use a negative value the line is placed \emph{below} the -text. +With the argument \oa{<num>} the length of the vertical parts of the line can +be adjusted. The default length is \code{.6em}. This length is multiplied +with \code{<num>}. If you use a negative value the line is placed +\emph{below} the text. \begin{beispiel}[dist] \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch \redox(a,b)[->,red]{ox} @@ -1229,23 +1298,26 @@ text. \end{beispiel} The default length of the vertical lines can be customized with the option \begin{beschreibung} - \option[redox]{dist}{<dim>} A \TeX\ dimension. Default = \code{.6em} + \Option[redox]{dist}{<dim>}\Default{.6em} + A \TeX\ dimension. \end{beschreibung} \begin{beispiel}[dist] \chemsetup{redox/dist=1em} \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} \end{beispiel} -Additionally the option \begin{beschreibung} - \option[redox]{sep}{<dim>} Default = \code{.2em} + \Option[redox]{sep}{<dim>}\Default{.2em} + The option can be used to change the distance between the atom and the + beginning of the line. \end{beschreibung} -can be used to change the distance between the atom and the beginning of the line. + \begin{beispiel}[dist] \chemsetup{redox/sep=.5em} \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} \end{beispiel} +\newpage Examples:% TODO: watch pagebreaks! \begin{beispiel}[dist] \ch{ 2 "\OX{o1,Na}" + "\OX{r1,Cl}" {}2 -> 2 "\OX{o2,Na}" \pch{} + 2 @@ -1280,9 +1352,9 @@ Examples:% TODO: watch pagebreaks! \end{beispiel} \secidx*{Redox Reactions} -\newpage \section{(Standard) State, Thermodynamics}\label{sec:standardstate}\secidx{Thermodynamics} \subsection{Thermodynamic Variables}\label{ssec:siunitx} + The following commands use \paket{siunitx}: \begin{beschreibung} \Befehl{Enthalpy}[<keyval>]\da{<subscript>}\ma{<value>} @@ -1313,8 +1385,8 @@ The default values depend on the command. \Gibbs[delta=false]{0} \\ \Entropy[delta=\Delta,exponent=]{56.7} \end{beispiel} -The unit is set corresponding to the rules of \paket{siunitx} and depends on its -settings: +The unit is set corresponding to the rules of \paket{siunitx} and depends on +its settings: \begin{beispiel} \Enthalpy{-1234.56e3} \\ \sisetup{per-mode=symbol,exponent-product=\cdot,output-decimal-marker={,},group-four-digits=true} @@ -1322,6 +1394,7 @@ settings: \end{beispiel} \subsubsection{Create New Variables} + You can use the command \begin{beschreibung} \Befehl{DeclareChemState}[<keyval>]{<name>}\ma{<symbol>}\ma{<unit>} @@ -1367,8 +1440,10 @@ define a molar and an absolute variable: \end{beispiel} \subsection{State}\label{ssec:state} + The commands presented in section~\ref{ssec:siunitx} internally all use the -command\footnote{Please note that \ma{<subscript>} is an \emph{optional} argument.} +command\footnote{Please note that \ma{<subscript>} is an \emph{optional} + argument.} \begin{beschreibung} \Befehl{State}[<keyval>]{<symbol>}\ma{<subscript>} \end{beschreibung} @@ -1389,13 +1464,15 @@ Again there are some keys to customize the command: \secidx*{Thermodynamics} \section{Spectroscopy and Experimental Data}\label{sec:spektroskopie}\secidx{Spectroscopy} -\subsection{The \code{\textbackslash\textcolor{code}{NMR}} Command} -When you're trying to find out if a compound is the one you think it is often NMR -spectroscopy is used. The experimental data are typeset similar to this: +\subsection{The \cmd*{NMR} Command} + +When you're trying to find out if a compound is the one you think it is often +NMR spectroscopy is used. The experimental data are typeset similar to this: \begin{center} \NMR(400)[CDCl3] = \num{1.59} \end{center} -\chemmacros provides a command which simplifies the input (uses \paket{siunitx}). +\chemmacros\ provides a command which simplifies the input (uses +\paket{siunitx}). \begin{beschreibung} \Befehl{NMR}*{<num>,<elem>}\da{<num>,<unit>}\oa{<solvent>} @@ -1431,6 +1508,7 @@ The third argument specifies the solvent: \end{beispiel} \subsection{Short Cuts} + It is possible to define short cut commands for specific nuclei. \begin{beschreibung} \Befehl{DeclareChemNMR}{<csname>}\ma{<num>,<atom>} @@ -1446,26 +1524,33 @@ This defines a command with the same arguments as \cmd{NMR} \emph{except} for \end{beispiel} \subsection{An Environment to Typeset Experimental Data} -\chemmacros provides an environment to ease the input of experimental data. + +\chemmacros\ provides an environment to ease the input of experimental data. \begin{beschreibung}\catcode`\#=11 - \umg{experimental}{data} Environment for the output of experimental data. Inside - the environment the following commands are defined. - \Befehl{data}{<type>}\oa{<specification>} \cnpkgdocarrow\ Type of data, \eg\ IR, - MS\ldots\ The optional argument takes further specifications which are output - in parentheses. - \Befehl{data}*{<type>}\oa{<specification>} \cnpkgdocarrow\ Like \cmd{data} but - changes the \code{=} into a \code{:}, given that \key{use-equal}{true} is used. - \Befehl{NMR}{<num>,<elem>\oa{<coupling core>}}\da{<num>,<unit>}\oa{<solvent>} - \cnpkgdocarrow\ this command gets an additional argument: - \cmd{NMR}{13,C[\textasciicircum 1H]} \NMR{13,C[^1H]} - \Befehl{J}\da{<bonds>;<nuclei>}\oa{<unit>}\ma{<list of nums>} \cnpkgdocarrow\ - Coupling constant, values are input separated by \code{;} (NMR). The argument - \da{<bonds>;<nuclei>} is optional and enables further specifications of the - coupling. - \befehl{#}{<num>} Number of nuclei (NMR). - \befehl{pos}{<num>} Position of nuclues (NMR). - \befehl{val}{<num>} A number, an alias of \paket*{siunitx}' \lstinline+\num{<num>}+ - \befehl{val}{<num1>-{}-<num2>} An alias of \paket*{siunitx}' \lstinline+\numrange{<num1>}{<num2>}+ + \Umg{experimental}{data}\newline + Environment for the output of experimental data. Inside the environment + the following commands are defined. + \Befehl{data}{<type>}\oa{<specification>}\newline + Type of data, \eg\ IR, MS\ldots\ The optional argument takes further + specifications which are output in parentheses. + \Befehl{data}*{<type>}\oa{<specification>}\newline + Like \cmd{data} but changes the \code{=} into a \code{:}, given that + \key{use-equal}{true} is used. + \Befehl{NMR}{<num>,<elem>\oa{<coupling core>}}\da{<num>,<unit>}\oa{<solvent>}\newline + This command gets an additional argument: \cmd{NMR}{13,C[\textasciicircum + 1H]} \NMR{13,C[^1H]} + \Befehl{J}\da{<bonds>;<nuclei>}\oa{<unit>}\ma{<list of nums>}\newline + Coupling constant, values are input separated by \code{;} (NMR). The + argument \da{<bonds>;<nuclei>} is optional and enables further + specifications of the coupling. + \Befehl{#}{<num>}\newline + Number of nuclei (NMR). + \Befehl{pos}{<num>}\newline + Position of nuclues (NMR). + \Befehl{val}{<num>}\newline + A number, an alias of \paket*{siunitx}' \cmd*{num}{<num>}. + \Befehl{val}{<num1>-{}-<num2>}\newline + An alias of \paket*{siunitx}' \cmd*{numrange}{<num1>}\ma{<num2>}. \end{beschreibung} \begin{beispiel} @@ -1477,25 +1562,31 @@ This defines a command with the same arguments as \cmd{NMR} \emph{except} for \end{beispiel} \subsection{Customization} -The output of the environment and of the NMR commands can be customized be a number -of options. For historical reasons they all belong to the module + +The output of the environment and of the NMR commands can be customized be a +number of options. For historical reasons they all belong to the module \textcolor{module}{\code{nmr}}. \begin{beschreibung} - \option[nmr]{unit}{<unit>} Default = \lstinline=\mega\hertz= - \option[nmr]{nucleus}{\{<num>,<atom>\}} Default = \ma{1,H} - \option[nmr]{format}{<commands>} for example \lstinline=\bfseries= - \option[nmr]{pos-number}{side|sub} Position of the number next to the atom. - Default = \code{side} - \option[nmr]{coupling-unit}{<unit>} A \paket{siunitx} unit. Default = - \lstinline=\hertz= - \option[nmr]{parse}{\default{true}|false} Treat the solvent as \paket{mhchem}/\chemformula - formula or not. Default = \code{true} - \option[nmr]{delta}{<tokens>} The \code{<tokens>} are added after $\delta$. - \option[nmr]{list}{\default{true}|false} The environment \env{nmr}[<optionen>]{} is - formatted as a list. Default = \code{false} - \option[nmr]{list-setup}{<setup>} Setup of the list. Default = see below. - \option[nmr]{use-equal}{\default{true}|false} Add egual sign after \cmd{NMR} - and \cmd{data}. Default = \code{false} + \Option[nmr]{unit}{<unit>}\Default{\cmd*{mega}\cmd*{hertz}} + The used default unit. + \Option[nmr]{nucleus}{\{<num>,<atom>\}}\Default{\ma{1,H}} + The used default nucleus. + \Option[nmr]{format}{<commands>}\Default{} + For example \cmd*{bfseries}. + \Option[nmr]{pos-number}{side|sub}\Default{side} + Position of the number next to the atom. + \Option[nmr]{coupling-unit}{<unit>}\Default{\cmd*{hertz}} + A \paket{siunitx} unit. + \Option[nmr]{parse}{\default{true}|false}\Default{true} + Treat the solvent as \chemformula\ formula or not. + \Option[nmr]{delta}{<tokens>}\Default{} + The \code{<tokens>} are added after $\delta$. + \Option[nmr]{list}{\default{true}|false}\Default{false} + The environment \env{nmr}[<optionen>]{} is formatted as a list + \Option[nmr]{list-setup}{<setup>}\newline + Setup of the list. See below for the default settings. + \Option[nmr]{use-equal}{\default{true}|false}\Default{false} + Add egual sign after \cmd{NMR} and \cmd{data}. \end{beschreibung} The default setup of the list: @@ -1513,8 +1604,8 @@ The default setup of the list: \end{experimental} \end{beispiel} -The command \cmd{NMR} and all commands defined through \cmd{DeclareChemNMR} can -be used like \cmd{data} for the NMR data. +The command \cmd{NMR} and all commands defined through \cmd{DeclareChemNMR} +can be used like \cmd{data} for the NMR data. \begin{beispiel} \begin{experimental}[format=\bfseries,use-equal] @@ -1525,8 +1616,9 @@ be used like \cmd{data} for the NMR data. \end{beispiel} \subsection{An Example} -The code below is shown with different specifications for \code{<optionen>}. Of -course options can also be chosen with \cmd{chemsetup}. + +The code below is shown with different specifications for \code{<optionen>}. +Of course options can also be chosen with \cmd{chemsetup}. \begin{beispiel}[code only] \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} @@ -1535,24 +1627,45 @@ course options can also be chosen with \cmd{chemsetup}. % \data{mp.} \SI{277}{\celsius} (DSC). % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). + \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, + \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, + \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, + \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). + \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, + \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, + \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, + \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, + \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), + \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). + \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} + (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). + \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, + \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). + \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} + (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), + \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} + (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), + \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} + (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} + (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} + (w). % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). + \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), + \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). % \data*{quantum yield} $\Phi = \val{0.74+-0.1}$\,. \end{experimental} \end{beispiel} \subsubsection{Nearly Standard} -Output with these options: \lstinline+<optionen>: delta=(ppm),pos-number=sub,use-equal+ + +Output with these options: +\lstinline+<optionen>: delta=(ppm),pos-number=sub,use-equal+ + \bigskip \begin{experimental}[delta=(ppm),pos-number=sub,use-equal] @@ -1567,31 +1680,32 @@ Output with these options: \lstinline+<optionen>: delta=(ppm),pos-number=sub,use % \data{mp.} \SI{277}{\celsius} (DSC). % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). + \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, + \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, + \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, + \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). + \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, + \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, + \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, + \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, + \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), + \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). + \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} + (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). % \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). + \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} + (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), + \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} + (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), + \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} + (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} + (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} + (w). % \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). @@ -1600,7 +1714,9 @@ Output with these options: \lstinline+<optionen>: delta=(ppm),pos-number=sub,use \end{experimental} \subsubsection{Formatted List} -Output with these options: \lstinline+<optionen>: format=\bfseries,delta=(ppm),list=true,use-equal+ +Output with these options: +\lstinline+<optionen>: format=\bfseries,delta=(ppm),list=true,use-equal+ + \bigskip \begin{experimental}[format=\bfseries,delta=(ppm),list=true,use-equal] @@ -1615,31 +1731,32 @@ Output with these options: \lstinline+<optionen>: format=\bfseries,delta=(ppm),l % \data{mp.} \SI{277}{\celsius} (DSC). % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). + \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, + \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, + \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, + \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). + \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, + \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, + \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, + \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, + \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), + \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). + \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} + (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). % \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). + \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} + (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), + \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} + (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), + \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} + (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} + (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} + (w). % \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). @@ -1648,6 +1765,7 @@ Output with these options: \lstinline+<optionen>: format=\bfseries,delta=(ppm),l \end{experimental} \subsubsection{Crazy} + Output for these options: \code{<optionen>}: \begin{lstlisting} format=\color{red}\itshape, @@ -1677,31 +1795,32 @@ Output for these options: \code{<optionen>}: % \data{mp.} \SI{277}{\celsius} (DSC). % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), - \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} - (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, - \#{4}, \pos{8}). + \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, + \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, + \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, + \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, - \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), - \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} - ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, - \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), - \val{145.6} (q, \#{2}, \pos{7}). + \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, + \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, + \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, + \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, + \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), + \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), - \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). + \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} + (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). % \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), - \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), - \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), - \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), - \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), - \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), - \val{586} (w), \val{562} (w), \val{515} (w). + \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} + (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), + \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} + (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), + \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} + (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} + (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} + (w). % \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). @@ -1711,34 +1830,35 @@ Output for these options: \code{<optionen>}: \secidx*{Spectroscopy} \section{Commands for \textsf{mhchem}}\label{sec:mhchem}\secidx{Commands for mhchem} -\paket{mhchem} isn't loaded automatically any more but only if you've specified -\key[option]{method}{mhchem} in the preamble. In the default settings \chemmacros -uses \chemformula instead. -\chemmacros provides only one command specifically for \paket*{mhchem}% -\footnote{\chemformula provides its own possibility.}. It is meant to place text -below of compounds. +\paket{mhchem} is not officially supported by \chemmacros\ as it used +\chemformula\ instead. However, for historical reasons the following command +is still provided. + \begin{beschreibung} \Befehl{mhName}[<keyval>]{<formula>}\ma{<text>} \end{beschreibung} For example: \begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} + \ce{4 C2H5Cl + Pb{/}Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} \end{beispiel} There are several keys to customize \cmd{mhName}. \begin{beschreibung} - \option[mhName]{align}{<alignment command>} the alignment of the text in the box - it is placed in, default = \lstinline+\centering+ - \option[mhName]{format}{<anything>} the format of the text - \option[mhName]{fontsize}{<font size command>} the fontsize of the text, default - = \lstinline+\tiny+ - \option[mhName]{width}{<dim>|auto} the width of the box the text is placed in, - default = \code{auto} + \Option[mhName]{align}{<alignment command>}\Default{\cmd*{centering}} + The alignment of the text in the box it is placed in. + \Option[mhName]{format}{<anything>}\Default{} + The format of the text. + \Option[mhName]{fontsize}{<font size command>}\Default{\cmd*{tiny}} + The fontsize of the text. + \Option[mhName]{width}{<dim>|auto}\Default{auto} + The width of the box the text is placed in. \end{beschreibung} +Since version~3.13 of \paket{mhchem} you need to hide the command in braces if +you want to use the optional argument, \begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName[fontsize=\footnotesize]{Pb(C2H5)4}{former antiknock additive} + NaCl}\\ + \ce{4 C2H5Cl + Pb / Na -> {\mhName[fontsize=\footnotesize]{Pb(C2H5)4}{former antiknock additive}} + NaCl}\\ \chemsetup[mhName]{align=\raggedright,fontsize=\small,format=\bfseries\color{red},width=3cm} \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} \end{beispiel} @@ -1746,6 +1866,7 @@ There are several keys to customize \cmd{mhName}. \section{Reaction Environments}\label{sec:reactions}\secidx{Reaction Environments} \subsection{Defined by \chemmacros} + You can use these environments for numbered\ldots \begin{beschreibung} \Umg{reaction}{<formula or mhchem code>} @@ -1758,11 +1879,12 @@ You can use these environments for numbered\ldots \Umg{reactions*}{<formula or mhchem code>} \end{beschreibung} -With them you can create (un)numbered reaction equations similar to mathematical -equations. +With them you can create (un)numbered reaction equations similar to +mathematical equations. -Theses environments use the \code{equation}/\code{equation*} environments or the -\code{align}/\code{align*} environments, respectively, to display the reactions. +Theses environments use the \code{equation}/\code{equation*} environments or +the \code{align}/\code{align*} environments, respectively, to display the +reactions. \begin{beispiel} Reaction with counter: @@ -1806,7 +1928,7 @@ If you want to change the layout of the counter tags, you can use \end{reaction} \end{beispiel} -With version 3.3 referencing and the use of \AmS math's \cmd{intertext} also +With version~3.3 referencing and the use of \AmS math's \cmd{intertext} also function properly: \begin{beispiel} \begin{reactions} @@ -1817,33 +1939,29 @@ function properly: See reaction~\ref{rxn:test}. \end{beispiel} -\achtung{In the standard setting, \ie using \key{method}{chemformula} you should -not use \cmd{mch} and its relatives inside the \code{reaction} environments. They -will very likely mess with spacing. In the standard setting charges inside the -environments automatically recognize the setting of the option \key{circled} so -there's also no need for the charge commands.} +\achtung{You should not use \cmd{mch} and its relatives inside the + \code{reaction} environments.} \subsection{Own Reactions} You can create new types of reactions with the command: \begin{beschreibung} - \Befehl{DeclareChemReaction}[<keyval>]{<name>}\ma{<math name>} + \Befehl{DeclareChemReaction}[<keyval>]{<name>}\ma{<math name>}\newline + \code{<name>} will be the name of the new environment. \code{<math name>} + is the used math environment. \end{beschreibung} -\code{<name>} will be the name of the new environment. \code{<math name>} is the -used math environment. - The command has two options. \begin{beschreibung} \Option*{star}{\default{true}|false} \Option*{arg}{\default{true}|false} \end{beschreibung} There is \key*{star}, which will also define a starred version of the new -environment, if the starred math environment exists. If it doesn't exist, this -will cause an error. +environment, if the starred math environment exists. If it doesn't exist, +this will cause an error. -Then there is \key*{arg}, which is used to define an environment with a mandatory -argument. Of course this only works, if the used math environment has a mandatory -argument. +Then there is \key*{arg}, which is used to define an environment with a +mandatory argument. Of course this only works, if the used math environment +has a mandatory argument. The predefined environments are defined via \begin{beschreibung} @@ -1851,8 +1969,9 @@ The predefined environments are defined via \Befehl{DeclareChemReaction}[star]{reactions}\ma{align}. \end{beschreibung} -Let's suppose, you'd like to have the alignment behaviour of the \code{alignat} -environment for \chemformula/\paket{mhchem} reactions. You could do the following: +Let's suppose, you'd like to have the alignment behaviour of the +\code{alignat} environment for \chemformula/\paket{mhchem} reactions. You +could do the following: \cmd{DeclareChemReaction}[star,arg]{reactionsat}\ma{alignat} @@ -1870,8 +1989,9 @@ With this the \code{reactionsat} environment is defined. \end{beispiel} \subsection{List of Reactions} -\chemmacros also provides a command to display a list of the reactions created -with the \lstinline+reaction+ environment. + +\chemmacros\ also provides a command to display a list of the reactions +created with the \code{reaction} environment. \begin{beschreibung} \Befehl{listofreactions} \end{beschreibung} @@ -1881,76 +2001,80 @@ with the \lstinline+reaction+ environment. The Output of this list can be modified by two options: \begin{beschreibung} - \option[reaction]{list-name}{<name of the list>} Let's you set the name of the - list manually. Default = \code{List of reactions} - \option[reaction]{list-entry}{<prefix to each entry>} Let's you set a prefix to - each list entry. Default = \code{Reaction} + \Option[reaction]{list-name}{<name of the list>}\Default{List of reactions} + Let's you set the name of the list manually. The default name is language + dependent, see section~\ref{sec:languages}. + \Option[reaction]{list-entry}{<prefix to each entry>}\Default{Reaction} + Let's you set a prefix to each list entry. The default name is language + dependent, see section~\ref{sec:languages}. \end{beschreibung} -Both default option values recognize the package option \key[option]{german}. +Instead of using the option \key{list-name} you also could redefine +\cmd{reactionlistname}. -Instead of using the option \key{list-name} you also could redefine \cmd{reactionlistname}. - -The list lists all reactions with a number and disregards reactions without number. -All reaction environments without star have an optional argument which let's you -add a description (or caption) for the entry in the list. +The list lists all reactions with a number and disregards reactions without +number. All reaction environments without star have an optional argument +which let's you add a description (or caption) for the entry in the list. \begin{beispiel} \begin{reaction}[Autoprotolyse] 2 H2O <<=> H3O+ + OH- \end{reaction} \end{beispiel} -If you use the \code{reactions} environment this will not work, though. In this -case you can use +If you use the \code{reactions} environment this will not work, though. In +this case you can use \begin{beschreibung} \Befehl{AddRxnDesc}{<description>} \end{beschreibung} \begin{beispiel} \begin{reactions} - Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 &-> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ - "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 &-> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} + Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 & + -> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ + "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 & + -> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} \end{reactions} \end{beispiel} -Note: you don't have to use the phantom commands if you haven't changed the format -of the atoms, see section~\ref{sec:format} on page~\pageref{sec:format}. +Note: you don't have to use the phantom commands if you haven't changed the +format of the atoms (see the documentation of the \chemformula\ package for +information on how to do this). + \secidx*{Reaction Environments} \section{Phases}\label{sec:phasen}\secidx{Phases} \subsection{Basics}\secidx[basics]{Phases} + These commands are intended to indicate the phase of a compound. \begin{beschreibung} - \befehl{sld} \sld - \befehl{lqd} \lqd - \befehl{gas} \gas - \befehl{aq} \aq + \Befehl{sld} \sld + \Befehl{lqd} \lqd + \Befehl{gas} \gas + \Befehl{aq} \aq \end{beschreibung} -\achtung{The default behaviour of the phases commands has changed to be consistent -with \ac{iupac} recommendations. Both \cmd{sld} and \cmd{lqd} have lost their optional -argument.} +\achtung{The default behaviour of the phases commands has changed to be + consistent with \ac{iupac} recommendations. Both \cmd{sld} and \cmd{lqd} + have lost their optional argument.} \begin{beispiel} \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas}\\ To make it complete: NaCl\aq. \end{beispiel} -With the package option \key{language}{german} (see section~\ref{sec:optionen}) -you get the german versions. - -The \ac{iupac} recommendation to indicate the state of aggregation is to put it in -parentheses after the compound \cite{iupac:greenbook}. However, you might want -to put it as a subscript which is also very common. +The \ac{iupac} recommendation to indicate the state of aggregation is to put +it in parentheses after the compound \cite{iupac:greenbook}. However, you +might want to put it as a subscript which is also very common. \begin{zitat}[{\acs{iupac} Green Book {\cite[][p.\,54]{iupac:greenbook}}}] - The \textelp{} symbols are used to represent the states of aggregation of chemical - species. The letters are appended to the formula in parentheses and should be - printed in Roman (upright) type without a full stop (period). + The \textelp{} symbols are used to represent the states of aggregation of + chemical species. The letters are appended to the formula in parentheses + and should be printed in Roman (upright) type without a full stop (period). \end{zitat} There are two options to customize the output: \begin{beschreibung} - \option[phases]{pos}{side|sub} Switch the position of the phase indicator. - Default = \code{side} - \option[phases]{space}{<dim>} Change the default spacing between compound a phase - indicator if \key{pos}{side}. A \TeX\ dimension. Default = \code{.1333em} + \Option[phases]{pos}{side|sub}\Default{side} + Switch the position of the phase indicator. + \Option[phases]{space}{<dim>}\Default{.1333em} + Change the default spacing between compound a phase indicator if + \key{pos}{side}. A \TeX\ dimension. \end{beschreibung} \begin{beispiel} \chemsetup[phases]{pos=sub} @@ -1959,22 +2083,27 @@ There are two options to customize the output: \end{beispiel} \subsection{Define Own Phases}\secidx[own]{Phases} -Depending on the subject of your document you might need to indicate other states -of aggregation. You can easily define them. +Depending on the subject of your document you might need to indicate other +states of aggregation. You can easily define them. \begin{beschreibung} \Befehl{DeclareChemPhase}{<cmd>}\oa{<german>}\ma{<english>} \Befehl{RenewChemPhase}{<cmd>}\oa{<german>}\ma{<english>} - \befehl{phase}{<phase>} If you need a phase indicator just once or twice. -\end{beschreibung} -\cmd{DeclareChemPhase} only defines a phase if \code{<cmd>} is not already used -by any other command. If it \emph{is} already used \chemmacros will either give -a warning or an error, depending on the option \key{strict}. \cmd{RenewChemPhase} -\emph{only} defines a phase if \code{<cmd>} \emph{is} already used and issues a -warning/error otherwise. -\begin{beispiel} - \DeclareChemPhase{\aqi}{aq,$\infty$}% aqueous solution at infinite dilution - \DeclareChemPhase{\cd}{cd}% condensed phase - \RenewChemPhase{\lqd}{lc}% liquid crystal + \Befehl{phase}{<phase>}\newline + If you need a phase indicator just once or twice. +\end{beschreibung} +\cmd{DeclareChemPhase} only defines a phase if \code{<cmd>} is not already +used by any other command. If it \emph{is} already used \chemmacros will +either give a warning or an error, depending on the option \key{strict}. +\cmd{RenewChemPhase} \emph{only} defines a phase if \code{<cmd>} \emph{is} +already used and issues a warning/error otherwise. Unlike the other +declaration commands of \chemmacros\ \cmd{DeclareChemPhase} and +\cmd{RenewChemPhase} \emph{can only be used in the preamble.} + +\begin{beispiel} + % preamble: + % \DeclareChemPhase{\aqi}{aq,$\infty$}% aqueous solution at infinite dilution + % \DeclareChemPhase{\cd}{cd}% condensed phase + % \RenewChemPhase{\lqd}{lc}% liquid crystal NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd \\ \chemsetup[phases]{pos=sub} NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd @@ -1986,8 +2115,9 @@ warning/error otherwise. \begin{beschreibung} \Befehl{newman}[<keyval>]\da{<angle>}\ma{<1>,<2>,<3>,<4>,<5>,<6>} \end{beschreibung} -which allows you to create newman projections (uses \TikZ). With \code{<angle>} -the back atoms are rotated counter clockwise with respect to the front atoms. +which allows you to create newman projections (uses \TikZ). With +\code{<angle>} the back atoms are rotated counter clockwise with respect to +the front atoms. \begin{beispiel} \newman{} \newman(170){} \newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6} @@ -1995,11 +2125,16 @@ the back atoms are rotated counter clockwise with respect to the front atoms. Several options allow customization: \begin{beschreibung} - \option[newman]{angle}{<angle>} default angle - \option[newman]{scale}{<factor>} scale the whole projection - \option[newman]{ring}{<tikz>} customize the ring with \TikZ keys - \option[newman]{atoms}{<tikz>} customize the nodes within which the atoms are set - \option[newman]{back-atoms}{<tikz>} explicitly customize the back atoms + \Option[newman]{angle}{<angle>}\Default{0} + Default angle. + \Option[newman]{scale}{<factor>}\Default{1} + Scale the whole projection. + \Option[newman]{ring}{<tikz>}\Default{} + Customize the ring with \TikZ keys. + \Option[newman]{atoms}{<tikz>}\Default{} + Customize the nodes within which the atoms are set. + \Option[newman]{back-atoms}{<tikz>}\Default{} + Explicitly customize the back atoms. \end{beschreibung} \begin{beispiel} @@ -2020,6 +2155,7 @@ Several options allow customization: \secidx*{Newman Projections} \section{s, p, and Hybrid Orbitals}\label{sec:orbitale}\secidx{Orbitals} + \chemmacros provides the following command to create orbitals: \begin{beschreibung} \Befehl{orbital}[<keyval>]{<type} @@ -2040,13 +2176,17 @@ There are the following types available for \code{<type>}: Depending on the type you have different options to modify the orbitals: \begin{beschreibung} - \option[orbital]{phase}{\default{+}|-} changes the phase of the orbital (all types) - \option[orbital]{scale}{<factor>} changes the size of the orbital (all types) - \option[orbital]{color}{<color>} changes the color of the orbital (all types) - \option[orbital]{angle}{<angle>} rotates the orbitals with a p contribution counter - clockwise (all types except \code{s}) - \option[orbital]{half}{\default{true}|false} displays only half an orbital (only - \code{p}) + \Option[orbital]{phase}{\default{+}|-}\newline + changes the phase of the orbital (all types) + \Option[orbital]{scale}{<factor>}\newline + changes the size of the orbital (all types) + \Option[orbital]{color}{<color>}\newline + changes the color of the orbital (all types) + \Option[orbital]{angle}{<angle>}\newline + rotates the orbitals with a p contribution counter clockwise (all types + except \code{s}) + \Option[orbital]{half}{\default{true}|false}\newline + displays only half an orbital (only \code{p}) \end{beschreibung} \begin{beispiel} @@ -2054,15 +2194,19 @@ Depending on the type you have different options to modify the orbitals: \orbital{p} \orbital[phase=-]{p} \orbital{sp3} \orbital[phase=-]{sp3} - \orbital[angle=0]{p} \orbital[color=red!50]{p} \orbital[angle=135,scale=1.5]{p} \orbital[half]{p} + \orbital[angle=0]{p} \orbital[color=red!50]{p} + \orbital[angle=135,scale=1.5]{p} \orbital[half]{p} \end{beispiel} -Additionally there are two options, with which the \TikZ behaviour can be changed. +Additionally there are two options, with which the \TikZ behaviour can be +changed. \begin{beschreibung} - \option[orbital]{overlay}{\default{true}|false} the orbital \enquote{doesn't need - space}; it is displayed with the \TikZ option \code{overlay}. - \option[orbital]{opacity}{<num>} the orbital becomes transparent; \code{<value>} - can have values between \code{1} (fully opaque) to \code{0} (invisible). + \Option[orbital]{overlay}{\default{true}|false}\newline + The orbital \enquote{doesn't need space}; it is displayed with the \TikZ + option \code{overlay}. + \Option[orbital]{opacity}{<num>}\newline + The orbital becomes transparent; \code{<value>} can have values between + \code{1} (fully opaque) to \code{0} (invisible). \end{beschreibung} \begin{beispiel}[dist] \hspace{1cm} @@ -2071,7 +2215,14 @@ Additionally there are two options, with which the \TikZ behaviour can be change p/color = black!70 } \setbondoffset{0pt} - \chemfig{?\orbital{p}-[,1.3]{\orbital[phase=-]{p}}-[:30,1.1]\orbital{p}-[:150,.9]{\orbital[phase=-]{p}}-[4,1.3]\orbital{p}-[:-150,1.1]{\orbital[phase=-]{p}}?} + \chemfig{ + ?\orbital{p} + -[,1.3]{\orbital[phase=-]{p}} + -[:30,1.1]\orbital{p} + -[:150,.9]{\orbital[phase=-]{p}} + -[4,1.3]\orbital{p} + -[:-150,1.1]{\orbital[phase=-]{p}}? + } \vspace{7mm} \end{beispiel} @@ -2086,1349 +2237,52 @@ Additionally there are two options, with which the \TikZ behaviour can be change s/color = blue!50 , s/scale = 1.6 } - \chemfig{\orbital{s}-[:-20]{\orbital[scale=2]{p}}{\orbital[half,angle=0]{p}}{\orbital[angle=170,half]{p}}{\orbital[angle=-150,half]{p}}(-[:-150]\orbital{s})-\orbital{s}} + \chemfig{ + \orbital{s} + -[:-20]{\orbital[scale=2]{p}}{\orbital[half,angle=0]{p}}{\orbital[angle=170,half]{p}}{\orbital[angle=-150,half]{p}} + (-[:-150]\orbital{s})-\orbital{s} + } \vspace{1cm} \end{beispiel} \bspmidlength{dist}{7mm} \secidx*{Orbitals}\secidx*{CHEMMACROS} -\newpage -\part{\texorpdfstring{\Chemformula}{chemformula}}\secidx{CHEMFORMULA}\label{part:chemformula} -\chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} -} -\section{Setup} -All of \chemformula's options belong to the module \textcolor{module}{\code{chemformula}}. -This means they can be setup with -\begin{beispiel}[code only] - \chemsetup[chemformula]{<options>} or - \chemsetup{chemformula/<option1>,chemformula/<option2>} -\end{beispiel} - -\section{The Basic Principle} -\chemformula offers one main command. -\begin{beschreibung} - \Befehl{ch}[<options>]{<input>} -\end{beschreibung} -The usage will seem very familiar to you if you're familiar with \paket{mhchem}: -\begin{beispiel} - \ch{H2O} \\ - \ch{Sb2O3} \\ - \ch{H+} \\ - \ch{CrO4^2-} \\ - \ch{AgCl2-} \\ - \ch{[AgCl2]-} \\ - \ch{Y^{99}+} \\ - \ch{Y^{99+}} \\ - \ch{H2_{(aq)}} \\ - \ch{NO3-} \\ - \ch{(NH4)2S} \\ - \ch{^{227}_{90}Th+} \\ - $V_{\ch{H2O}}$ \\ - \ch{Ce^{IV}} \\ - \ch{KCr(SO4)2 * 12 H2O} -\end{beispiel} - -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{beschreibung} - \Befehl{ch}{part1 part2 part3 part4} -\end{beschreibung} -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{beispiel} - \ch{A + B ->[a] C} \\ - \ce{A + B ->[a] C} -\end{beispiel} - -This means that \cmd{ch}{2H2O} is recognized as a \emph{single} part, which in -this case is recognized as a compound. -\begin{beispiel} - \ch{2H2O} \\ - \ch{2 H2O} -\end{beispiel} -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 -\lstinline+~+. However, since commands in most cases gobble a space after them a -input like \cmd{ch}{\textbackslash command ABC} will be treated as a single part. -If you want or need to divide them you need to add an empty group: -\cmd{ch}{\textbackslash command\{\} ABC}. The different input types are described -in the following sections. - -There are some options to customize the output of the \cmd{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 -\textcolor{module}{\code{chemformula}}. -\begin{beschreibung} - \Befehl{chemsetup}[chemformula]{<options>} -\end{beschreibung} - -\section{Stoichiometric Factors}\secidx{Stoichiometric Factors} -A stoichiometric factor may only contain of numbers and the signs \lstinline+.,_/()+ -\begin{beispiel} - \ch{2} \\ - \ch{12} - - % decimals: - \ch{.5} \\ - \ch{5,75} - - % fractions: - \ch{3/2} \\ - \ch{1_1/2} - - % ``iupac'': - \ch{(1/2)} -\end{beispiel} - -As you can see if you input decimal numbers a missing leading zero is added. +\part{Other Packages of the Bundle} -You have to be a little bit careful with the right syntax but I believe it is -rather intuitive. -\begin{beispiel}[code only] - this won't work but will result in an error: \ch{1/1_1} -\end{beispiel} - -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{beispiel} - \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} -\end{beispiel} -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{beschreibung} - \option{decimal-marker}{<marker>} the symbol to indicate the decimal. Default = - \code{.} - \option{frac-style}{math|xfrac|nicefrac} determines how fractions are displayed. - Default = \code{math} - \option{stoich-space}{<skip>} The space that is placed after the stoichiometric - factor. A rubber length. Default = \code{.1667em plus .0333em minus .0117em} - \option{stoich-paren-parse}{\default{true}|false} If set to true stoichiometric - factors enclosed by parentheses also are parsed. Default = \code{false} -\end{beschreibung} -\begin{beispiel} - \ch[decimal-marker={,}]{3.5} \ch[decimal-marker={$\cdot$}]{3,5} -\end{beispiel} - -The option \key{frac-style}{xfrac} uses the \lstinline+\sfrac+ command of the -\paket{xfrac} package. The output strongly depends on the font you use.\secidx[xfrac]{Stoichiometric Factors} -\begin{beispiel} - \ch[frac-style=xfrac]{3/2} \ch[frac-style=xfrac]{1_1/2} -\end{beispiel} -\chemformula defines the instance \lstinline=formula-text-frac= which you can -redefine to your needs. See the \paket{xfrac} documentation for further information. -The default definition is this: -\begin{beispiel}[code only] - \DeclareInstance{xfrac}{chemformula-text-frac}{text} - { - slash-left-kern = -.15em , - slash-right-kern = -.15em - } -\end{beispiel} -This document uses the font Linux Libertine~O and the following definition: -\begin{beispiel}[code only] - \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{beispiel} - -The option \key{frac-style}{nicefrac} uses the \lstinline+\nicefrac+ command of -the \paket{nicefrac} package.\secidx[nicefrac]{Stoichiometric Factors} -\begin{beispiel} - \ch[frac-style=nicefrac]{3/2} \ch[frac-style=nicefrac]{1_1/2} -\end{beispiel} - -The option \key{stoich-space} allows you to customize the space between -stoichiometric factor and the group following after it.\secidx[space]{Stoichiometric Factors} -\begin{beispiel} - \ch{2 H2O} \\ - \ch[stoich-space=.3em]{2 H2O} -\end{beispiel} -\secidx*{Stoichiometric Factors} - -\section{Compounds}\label{ssec:compounds}\secidx{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{beispiel} - \ch{H2SO4} \\ - \ch{[Cu(NH3)4]^2+} -\end{beispiel} - -\subsection{Adducts}\secidx[adducts]{Compounds} -\chemformula has two identifiers which will create adducts. -\begin{beschreibung} - \befehl{ch}{A.B} - \befehl{ch}{A*B} -\end{beschreibung} -\begin{beispiel} - \ch{CaSO4.H2O} \\ - \ch{CaSO4*H2O} -\end{beispiel} -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{beispiel} - \ch{Na3PO4*12H2O} \\ - \ch{Na3PO4* 12 H2O} \\ - \ch{Na3PO4 * 12 H2O} -\end{beispiel} - -\subsection{Subscripts}\label{ssec:subscripts}\secidx[subscripts]{Compounds} -\emph{All} numbers in a compound are treated as subscripts. -\begin{beispiel} - \ch{H2SO4} -\end{beispiel} -If you want a letter to be a subscript you can use the math syntax: -\begin{beispiel} - \ch{A_nB_m} -\end{beispiel} -The subscript recognizes groups. You can also use math inside it. -\begin{beispiel} - \ch{A_{$n$}B_{$m$}} \\ - \ch{NaCl_{(aq)}} -\end{beispiel} - -\subsection{Commands}\secidx[commands]{Compounds} -Commands are allowed in a compound: -\begin{beispiel} - \ch{\textbf{A2}B3} \ch{A2\color{red}B3} -\end{beispiel} -However, if the commands demand numbers as argument, \eg space commands or -\chemmacros' \lstinline+\ox+ command the direct use will fail. This is because -the numbers are treated as subscripts \emph{before} the command expands. -\begin{beispiel}[code only] - \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{beispiel} -See section~\ref{ssec:text} for a way around this. - -\subsection{Charges and Other Superscripts}\secidx[charges]{Compounds}\secidx[superscripts]{Compounds} -\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{beispiel} - \ch{A+B} \ch{AB+} \\ - \ch{A-B} \ch{AB-} -\end{beispiel} - -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{beispiel} - \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^*} -\end{beispiel} - -Ions and ion composites with more than one charge can be typeset quite as easy: -\begin{beispiel} - \ch{SO4^2-} \ch{Ca^2+ SO4^2-} -\end{beispiel} - -\paragraph{Charge Commands}\secidx[superscripts!charge commands]{Compounds} -You don't need to use \cmd{mch} and related commands inside \cmd{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 \cmd{ch}. -\begin{beispiel} - \chemsetup[option]{circled=all} - \ch{H+ + OH- <=> H2O} -\end{beispiel} - -\paragraph{Behaviour}\secidx[superscripts!behaviour]{Compounds} -The supercripts behave differently depending on their position in a compound, if -there are super- and subscripts following each other directly. -\begin{beispiel} - \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \\ - \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} \ch{B^{23}} \ch{B_{123}^{23}} \\ - \ch{^{123}_{23}B} \ch{{}^{123}_{23}B} \ch{_{23}^{123}B} \ch{B^{123}} \ch{B23^{123}} -\end{beispiel} +The other three package, \chemformula, \ghsystem\ and \chemgreek, all have +their own documentation: \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. + \item \url{chemformula_en.pdf} + \item \url{ghsystem_en.pdf} + \item \url{chemgreek_en.pdf} \end{itemize} -The second point follows \ac{iupac}'s recommendations: -\begin{zitat}[{\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{zitat} -\subsection{Bonds}\label{ssec:bonds}\secidx[bonds]{Compounds} -\subsubsection{Native Bonds} -There are three kinds of what I will call ``native bonds'': -\begin{beispiel} - single: \ch{CH3-CH3} \\ - double: \ch{CH2=CH2} \\ - triple: \ch{CH+CH} -\end{beispiel} - -\subsubsection{Flexible Bonds} -\paragraph{Predefined Bonds} -In addition to the three native bonds there are a few more which can be called by -\begin{beschreibung} - \Befehl{bond}{<bond name>} -\end{beschreibung} -The predefined bond types are shown in table~\ref{tab:bond_types}. - -\begin{table} - \centering - \caption{Bonds available with \protect\cmd{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{beispiel} - \ch{C\bond{sb}C\bond{db}C\bond{tp}C\bond{deloc}C\bond{tdeloc}C\bond{co>}C\bond{<co}C} -\end{beispiel} - -\paragraph{Own Bonds} -\chemformula offers commands to define own bond types: -\begin{beschreibung} - \Befehl{DeclareChemBond}{<name>}\ma{<code>} - \Befehl{RenewChemBond}{<name>}\ma{<code>} - \Befehl{DeclareChemBondAlias}{<new name>}\ma{<old name>} - \Befehl{ShowChemBond}{<name>} -\end{beschreibung} -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{beispiel}[code only] - \DeclareChemBond{single} - { \draw[chembond] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBond{coordright} - { \draw[chembond,butt cap->] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBondAlias{co>}{coordright} -\end{beispiel} -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{beispiel} - \usetikzlibrary{decorations.pathreplacing} - \makeatletter - \DeclareChemBond{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{beispiel} - -The last example showed you another macro: \makeatletter\cmd{chemformula@bondlength}\makeatother. -It only exists so you can use it to access the bond length as set with \key{bond-length} -directly.% (see also page~\pageref{key:bond-length}). - -\subsection{Customization}\secidx[customization]{Compounds}\label{ssec:compounds:customization} -These options allow you to customize the ouptut of the compounds: -\begin{beschreibung} - \option{subscript-vshift}{<dim>} Extra vertical shift of the subscripts. Default - = \code{0pt} - \option{subscript-style}{text|math} Style that is used to typeset the subscripts. - Default = \code{text} - \option{charge-hshift}{<dim>} Shift of superscripts when following a subscript. - Default = \code{.25em}\label{desc:charge-hshift} - \option{charge-vshift}{<dim>} Extra vertical shift of the superscripts. - Default = \code{0pt} - \option{charge-style}{text|math} Style that is used to typeset the superscripts. - Default = \code{text} - \option{adduct-space}{<dim>} Space to the left and the right of the adduct point. - Default = \code{.1333em} - \option{bond-length}{<dim>} The length of the bonds. Default = \code{.5833em} - \option{bond-offset}{<dim>} Space between bond and atoms. Default = \code{.07em} - \option{bond-style}{<tikz>} \TikZ\ options for the bonds. Initially empty. - \option{radical-style}{<tikz>} \TikZ\ options for the radical point. Initially - empty. - \option{radical-radius}{<dim>} The radius of the radical point. Default = - \code{.2ex} - \option{radical-hshift}{<dim>} Horizontal shift before the radical point is - drawn. Default = \code{.15em} - \option{radical-vshift}{<dim>} Vertical shift relative to the current baseline. - Default = \code{.5ex} - \option{radical-space}{<dim>} Horizontal shift after the radical point is - drawn. Default = \code{.15em} -\end{beschreibung} - -Maybe you have noticed that charges of certain ions are shifted to the right.\secidx[charges!shift]{Compounds} -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} -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 \key{charge-hshift}. -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5ex} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5pt} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} - -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 \key{charge-hshift}{full}. -\begin{beispiel} - \ch[charge-hshift=0pt]{C5H11+} \ch[charge-hshift=0pt]{SO4^2-} \\ - \ch{C5H11+} \ch{SO4^2-} \\ - \ch[charge-hshift=1ex]{C5H11+} \ch[charge-hshift=1ex]{SO4^2-} \\ - \ch[charge-hshift=full]{C5H11+} \ch[charge-hshift=full]{SO4^2-} -\end{beispiel} - -If you don't want the charges to be typeset in text mode you can switch to math -mode: -\begin{beispiel} - \ch{M^x+} \ch{SO4^2-} \\ - \chemsetup[chemformula]{charge-style = math} - \ch{M^x+} \ch{SO4^2-} -\end{beispiel} - -The option \key{subscript-vshift} can be used to adjust the vertical shift of -the subscripts:\secidx[subscripts!shift]{Compounds} -\begin{beispiel} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=.5ex} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=-.2ex} - \ch{H2SO4} \ch{Na3PO4} -\end{beispiel} - -You can choose the mode subscripts are typeset in the same way as it is possible -for the charges: -\begin{beispiel} - \ch{A_nB_m} \ch{H2SO4} \\ - \chemsetup[chemformula]{subscript-style = math} - \ch{A_nB_m} \ch{H2SO4} -\end{beispiel} - -The option \key{adduct-space} sets the space left and right to the adduct symbol -$\cdot$. -\begin{beispiel} - \ch{Na3PO3*H2O} \\ - \chemsetup[chemformula]{adduct-space=.2em} - \ch{Na3PO3*H2O} -\end{beispiel} - -Changing the length of the bonds:\secidx[bonds!length]{Compounds} -\begin{beispiel} - \chemsetup[chemformula]{bond-length=4mm}% - single: \ch{CH3-CH3} \\ - double: \ch{CH2=CH2} \\ - triple: \ch{CH+CH} -\end{beispiel} - -You can change the distance between bond and atom, too: -\begin{beispiel} - \ch{H-H + N+N + O=O} \\ - \ch[bond-offset=1pt]{H-H + N+N + O=O} -\end{beispiel} -\secidx*{Compounds} - -\section{Special Input Types}\secidx{Special Types} -There are some \enquote{special type} input groups. - -\subsection{Single Token Groups}\secidx[single token groups]{Special Types} -The first kind are groups which consist of only one token, namely of the -following ones: -\begin{beschreibung} - \befehl{ch}{ + } \ch{+} creates the plus sign between compounds with space - around it:\\ - \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} - \befehl{ch}{ v } \ch{v} sign for precipitate: \cmd{ch}{BaSO4 v} \ch{BaSO4 v} - \befehl{ch}{ \lstinline+^+ } \ch{^} sign for escaping gas\footnotemark: - \cmd{ch}{\lstinline=H2 ^=} \ch{H2 ^} -\end{beschreibung} -\footnotetext{Is this the correct English term? Please correct me if it isn't.} - -The space left and right of the plus sign can be set with this option: -\begin{beschreibung} - \option{plus-space}{<skip>} A rubber length. Default = \code{.3em plus .1em minus .1em} -\end{beschreibung} -\begin{beispiel} - \ch{A + B}\\ - \ch[plus-space=4pt]{A + B} -\end{beispiel} - -\subsection{Option Input}\secidx[option input]{Special Types} -\achtung{This is an experimental feature and may well be dropped in future versions.} -Sometimes you might want to apply an option only to a part of a, say, reaction. -Of course you have the possibility to use \cmd{ch} several times. -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} -\end{beispiel} -This, however, interrupts the input in your source and \emph{may} mess with the -spacing. That's why there is an alternative: -\begin{beschreibung}\makeatletter - \befehl{ch}{ @\{<options>\} } The options specified this way will be valid - \emph{only} until the next compound is set. -\end{beschreibung} -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ - or of course:\\ - \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} -\end{beispiel} -\secidx*{Special Types} - -\section{Escaped Input}\secidx{Escaped Input} -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}\secidx[text]{Escaped Input} -If you put something between \lstinline+" "+ or \lstinline+' '+ then the input -will be treated as normal text, except that spaces are not allowed and have to be -input with \lstinline+~+. -\begin{beschreibung} - \Befehl{ch}{ "<escaped text>" } - \Befehl{ch}{ '<escaped text>' } -\end{beschreibung} -\begin{beispiel} - \ch{"\ox{2,Ca}" O} \\ - \ch{"\ldots\," Na + "\ldots\," Cl2 -> "\ldots\," NaCl} \\ - \ch{'A~->~B'} -\end{beispiel} -In many cases you won't need to escape the input. But when you get into trouble -when using a command inside \cmd{ch} try hiding it. - -\subsection{Math}\secidx[math]{Escaped Input} -If you especially want to input math you just enclose it with \lstinline+$ $+. -This output is different from the escaped text as it is followed by a space. The -reasoning behind this is that I assume math will mostly be used to replace -stoichiometric factors. -\begin{beschreibung} - \Befehl{ch}{ \string$<escaped math>\string$ } - \Befehl{ch}{ \string\(<escaped math>\string\) } -\end{beschreibung} -\begin{beispiel} - escaped text: \ch{"$x$" H2O} \\ - escaped math: \ch{$x$ H2O} \\ - also escaped math: \ch{\(x\) H2O} \\ - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} -\end{beispiel} - -The space that is inserted after a math group can be edited: -\begin{beschreibung} - \option{math-space}{<skip>} A rubber length. Default = - \code{.1667em plus .0333em minus .0117em} -\end{beschreibung} -\begin{beispiel} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \chemsetup[chemformula]{math-space=.25em} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \ch{$A->B$} -\end{beispiel} -\secidx*{Escaped Input} - -\section{Arrows}\label{sec:arrows}\secidx{Arrows} -\subsection{Arrow types}\secidx[types]{Arrows} -Arrows are input in the same intuitive way they are with \paket{mhchem}. There -are various different types: -\begin{beschreibung} - \befehl{ch}{ -> } \ch{->} standard right arrow - \befehl{ch}{ <- } \ch{<-} standard left arrow - \befehl{ch}{ -/> } \ch{-/>} does not react (right) - \befehl{ch}{ </- } \ch{</-} does not react (left) - \befehl{ch}{ <-> } \ch{<->} resonance arrow - \befehl{ch}{ <> } \ch{<>} reaction in both directions - \befehl{ch}{ == } \ch{==} stoichiometric equation - \befehl{ch}{ <=> } \ch{<=>} equilibrium arrow - \befehl{ch}{ \lstinline+<=>>+ } \ch{<=>>} unbalanced equilibrium arrow to the right - \befehl{ch}{ \lstinline+<<=>+ } \ch{<<=>} unbalanced equilibrium arrow to the left - \befehl{ch}{ <o> } \ch{<o>} isolobal arrow -\end{beschreibung} -All these arrows are drawn with \TikZ. -\begin{beispiel} - \ch{H2 + Cl2 -> 2 HCl} \\ - \ch{H2O + CO3^2- <=> OH- + HCO3-} \\ - \ch{A <- B} \\ - \ch{\{[CH2=CH-CH2]- <-> [CH2-CH=CH2]- \}} \\ - \ch{A <> B} \\ - \ch{H+ + OH- <=>> H2O} \\ - \ch{2 NO2 <<=> N2O4} -\end{beispiel} - -\subsection{Labels}\secidx[labels]{Arrows} -The arrows take two optional arguments to label them. -\begin{beschreibung} - \Befehl{ch}{ ->[<above>][<below>] } -\end{beschreibung} -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[a][b] B} \\ - \ch{A ->[\SI{100}{\celsius}] B} -\end{beispiel} -The label text can be parsed seperately from the arrow. The recipe is easy: leave -blanks. -\begin{beispiel} - \ch{A ->[H2O] B} \\ - \ch{A ->[ H2O ] B} \\ - \ch{A ->[ "\ox{2,Ca}" F2 ] B} \\ - \ch{A ->[$\Delta$,~ \[H+ \]] B} -\end{beispiel} -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 should be produced using \cmd{[} -and \cmd{]}. They keep their usual meaning outside \cmd{ch}. These commands are -necessary since the usual grouping (\ie hiding the brackets inside curly brackets) -doesn't work due to the way \cmd{ch} reads its argument. -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[ab] B} \\ - \ch{A ->[abc] B} \\ - \ch{A ->[abc~abc] B} \\ - % needs the `chemfig' package: - \setatomsep{15pt} - \ch{A ->[ "\chemfig{-[:30]-[:-30]OH}" ] B} \\ - \ch{A ->[[]] B} vs. \ch{A ->[\[\]] B} -\end{beispiel} - -\subsection{Customization}\secidx[customization]{Arrows} -These are the options which enable you to customize the arrows: -\begin{beschreibung} - \option{arrow-offset}{<dim>} This is the length that an arrow protrudes a label - on both sides. This means an empty arrow's length is two times \code{arrow-offset}. - Default = \code{.75em} - \option{arrow-min-length}{<dim>} The minimal length an error must have unless - two times \key{arrow-offset} plus the width of the label is larger. - Default = \code{0pt} - \option{arrow-yshift}{<dim>} Shifts an arrow up (positive value) or down (negative - value). Default = \code{0pt} - \option{arrow-ratio}{<factor>} 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. Default = \code{.6} - \option{compound-sep}{<dim>} The space between compounds and the arrows. - Default = \code{.5em} - \option{label-offset}{<dim>} The space between the labels and the arrows. - Default = \code{2pt} - \option{label-style}{<font command>} The relative font size of the labels. - Default = \lstinline+\footnotesize+ -\end{beschreibung} - -The following code shows the effect of the different options on the \lstinline+<=>>+ -arrow: -\begin{beispiel} - standard: \ch{A <=>>[x][y] B} \\ - longer: \ch[arrow-offset=12pt]{A <=>>[x][y] B} \\ - higher: \ch[arrow-yshift=2pt]{A <=>>[x][y] B} \\ - more balanced: \ch[arrow-ratio=.8]{A <=>>[x][y] B} \\ - labels further away: \ch[label-offset=4pt]{A <=>>[x][y] B} \\ - larger distance to compounds: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ - smaller labels: \ch[label-style=\tiny]{A <=>[x][y] B} -\end{beispiel} - -\subsection{Modify Arrow Types}\label{sec:arrows_modify}\secidx[types!modify]{Arrows} -The arrows are defined with the command -\begin{beschreibung} - \Befehl{DeclareChemArrow}{<tokens>}\ma{<tikz>} -\end{beschreibung} -\ma{<tokens>} is the sequence of tokens that is replaced with the actual arrow code. -For example the basic arrow is defined via -\begin{beispiel}[code only] - \DeclareChemArrow{->}{\draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ;} -\end{beispiel} -In order to define arrows yourself you need to know the basics of \TikZ\footnote{Please -see the \textsf{pgfmanual} for details.}. There are some predefined coordinates -you can and should use: -\begin{description} - \item[\code{(cf\_arrow\_start)}] The beginning of the arrow. - \item[\code{(cf\_arrow\_end)}] The end of the arrow. - \item[\code{(cf\_arrow\_mid)}] The mid of the arrow. - \item[\code{(cf\_arrow\_mid\_start)}] The beginning of the shorter arrow in - types like \lstinline+<=>>+. - \item[\code{(cf\_arrow\_mid\_end)}] The end of the shorter arrow in types like - \lstinline+<=>>+. - \item[\code{cf}, \code{left cf}, \code{right cf}] \chemformula's own arrow heads. -\end{description} -\begin{beispiel} - \DeclareChemArrow{.>}{\draw[-cf,dotted,red] (cf_arrow_start) -- (cf_arrow_end);} - \DeclareChemArrow{n>}{\draw[-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{beispiel} -If you want to redefine an existing arrow there are two commands you can use: -\begin{beschreibung} - \Befehl{RenewChemArrow}{<tokens>}\ma{<tikz>} - \Befehl{ShowChemArrow}{<tokens>} -\end{beschreibung} -The second one gives the current definition, the first one redefines an existing -arrow. -\begin{beispiel} - \texttt{\ShowChemArrow{->}} \\ - \RenewChemArrow{->}{\draw[->,red] (cf_arrow_start) -- (cf_arrow_end) ;} - \texttt{\ShowChemArrow{->}} \\ - \ch{A -> B} -\end{beispiel} -\secidx*{Arrows} - -\section{Names}\secidx{Names} -\subsection{Syntax}\secidx[syntax]{Names} -\chemformula has a built-in syntax to write text under a compound. In a way it -works very similar to the arrows. -\begin{beschreibung} - \Befehl{ch}{ !(<name>)( <formula> ) } -\end{beschreibung} -If an exclamation mark is followed by a pair of parentheses \chemformula will -parse it this way: -\begin{beispiel} - \ch{!(ethanol)( CH2CH2OH )} -\end{beispiel} -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{beispiel} - \ch{!(water)(H2O)} \quad - \ch{!( "\textcolor{blue}{water}" )( H2O )} \quad - \ch{!( $2n-1$ )( H2O )} \quad - \ch{!( H2O )( H2O )} \quad - \ch{!(oxonium)( H3O+ )} -\end{beispiel} -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{beispiel} - \ch{H2O~(!)} \\ - \ch{A!{}()} -\end{beispiel} - -\subsection{Customization}\secidx[customization]{Names} -\chemformula provides two options to customize the output of the names: -\begin{beschreibung} - \option{name-format}{<commands>} The format of the name. This can be arbitrary - input. Default = \lstinline+\scriptsize\centering+ - \option{name-width}{<dim>|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. - Default = \code{auto} -\end{beschreibung} -\begin{beispiel} - \ch{!(acid)( H2SO4 ) -> B} \\ - \ch[name-format=\sffamily\small]{!(acid)( H2SO4 ) -> B} \\ - \ch[name-format=\scriptsize N:~]{!(acid)( H2SO4 ) -> B} \\ - \ch[name-width=3em,name-format=\scriptsize\raggedright]{!(acid)( H2SO4 ) -> B} -\end{beispiel} -\secidx*{Names} - -\section{Format and Font}\secidx{Format and Font}\label{sec:format} -In the standard setting \chemformula doesn't make any default changes to the font -of the formula output. Let's take a look at a nonsense input which shows all features: -\begin{beispiel} - \newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} - \sample -\end{beispiel} -\newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} -Now we're going to change different aspects of the font a look what happens: -\begin{beispiel}[below] - \sffamily Hallo \sample \\ - \ttfamily Hallo \sample \normalfont \\ - \bfseries Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{beispiel} -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{beschreibung} - \option{format}{<anything>} Adds arbitrary code before the output of \cmd{ch}. -\end{beschreibung} -\begin{beispiel} - \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{beispiel} - -You can also specifically change the fontfamily, fontseries and fontshape of the output. -\begin{beschreibung} - \option{font-family}{<family>} Changes the fontfamily of the output with - \lstinline+\fontfamily{<family>}\selectfont+. - \option{font-series}{<series>} Changes the fontseries of the output with - \lstinline+\fontseries{<series>}\selectfont+. - \option{font-shape}{<shape>} Changes the fontshape of the output with - \lstinline+\fontshape{<shape>}\selectfont+. -\end{beschreibung} -\begin{beispiel} - \chemsetup[chemformula]{font-series=bx} - Hallo \sample \\ - \sffamily Hallo \sample \normalfont \\ - \chemsetup[chemformula]{font-family=lmr,font-series=m} Hallo \sample \normalfont \\ - \itshape Hallo \sample -\end{beispiel} - -If you're using \hologo{XeLaTeX} or \hologo{LuaLaTeX} and have loaded \paket{fontspec} -you have the possibilty to set the font with it: -\begin{beschreibung} - \Option{font-spec}{\{<font>\}} or with options - \Option{font-spec}{\{[<options>]<font>\}} -\end{beschreibung} -\begin{beispiel} - \chemsetup[chemformula]{font-spec={Linux Biolinum O}} \sample \\ - \chemsetup[chemformula]{font-spec={[Color=darkgray]Augie}} \sample \\ - \chemsetup[chemformula]{font-spec={Tipbrush Script}} \sample \\ - \chemsetup[chemformula]{font-spec={Latin Modern Sans}} \sample \\ - \bfseries \sample \normalfont \\ - \chemsetup[chemformula]{font-spec={Feathergraphy Decoration}} \sample -\end{beispiel} -\secidx*{Format and Font} - -\section{Usage In Math Equations}\secidx{Math Environments} -The \cmd{ch} command can be used inside math equations. It recognizes -\lstinline+\\+ and \lstinline+&+ and passes them on. However, you can't use the -optional arguments of \lstinline+\\+ inside \cmd{ch}. -\begin{beispiel} - \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{beispiel} -\secidx*{Math Environments} - -\section{Further Examples} -This section presents some examples of a possible usage. - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \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{beispiel} - -\begin{beispiel} - \begin{reactions*} - CH3MgBr + "\ox*{1,Cu}" X &-> "\glqq" CH3 "\ox*{1,Cu}\grqq" + MgBrX "\qquad X~$=$~Br,I,CN" \\ - 2 MeLi + CuI &-> !(Dimethylcuprat~(Gilmann-Cuprat))( Me2CuLi ) + Li - \end{reactions*} -\end{beispiel} - -\begin{beispiel} - % 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{beispiel} - -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{beispiel} - % 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{beispiel} -\secidx*{CHEMFORMULA} - -\part{\texorpdfstring{\Ghsystem}{ghsystem}}\secidx{GHSYSTEM}\label{part:ghsystem} -\section{Setup} -All of \ghsystem's options belong to the module \textcolor{module}{\code{ghsystem}}. -This means they can be setup with -\begin{beispiel}[code only] - \chemsetup[ghsystem]{<options>} or - \chemsetup{ghsystem/<option1>,ghsystem/<option2>} -\end{beispiel} - -\section{Get Hazard and Precautionary Statements}\secidx{Hazard and Precautionary Statements} -\subsection{Simple Statements}\secidx[get statements]{GHSYSTEM} -The general usage is simple: you use the command -\begin{beschreibung} - \Befehl{ghs}*[<options>]{<type>}\ma{<number>} -\end{beschreibung} -There are three types available: \code{h}, \code{euh} and \code{p}. The \ma{<type>} -argument is case insensitive, so just type them in as you like. -\begin{beispiel} - \ghs{h}{200} \\ - \ghs{H}{224} \\ - \ghs{euh}{001} \\ - \ghs{Euh}{202} \\ - \ghs{p}{201} -\end{beispiel} - -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{beschreibung} - \Option{hide}{\default{true}|false} -\end{beschreibung} - -There is an option to customize the output, too. -\begin{beschreibung} - \option{space}{<space command>} Space between \code{<type>} and \code{<number>}. -\end{beschreibung} -\begin{beispiel} - \ghs{h}{200} \\ - \ghs[space=\,]{h}{200} \\ - \ghs*{h}{200} \\ - \ghs[hide]{h}{200} -\end{beispiel} - -\subsection{Statements with Placeholders}\secidx[statements with placeholders]{GHSYSTEM} -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{beschreibung} - \option{fill-in}{\default{true}|false} Show placeholders. Default = \code{false} -\end{beschreibung} -\begin{beispiel}[below] - \ghs{h}{340} \\ - \ghs[fill-in]{h}{340} \\ - \ghs{h}{360} \\ - \ghs[fill-in]{h}{360} \\ - \ghs{h}{370} \\ - \ghs[fill-in]{h}{370} \\ - \ghs{euh}{208} \\ - \ghs[fill-in]{euh}{208} -\end{beispiel} - -These placeholders can be replaced with one of these options: -\begin{beschreibung} - \option{exposure}{<text>} exposure placeholder - \option{effect}{<text>} effect placeholder - \option{organs}{<text>} organ placeholder - \option{substance}{<text>} substance placeholder -\end{beschreibung} -\begin{beispiel} - \ghs[exposure=This is how you get exposed.]{h}{340} \\ - \ghs[effect=These are the effects.]{h}{360} \\ - \ghs[organs=to this organ]{h}{370} \\ - \ghs[substance=substance]{euh}{208} -\end{beispiel} - -\subsection{Statements with Gaps}\secidx[statements with gaps]{GHSYSTEM} -Some of the statements have gaps that can be filled. -\begin{beispiel} - \ghs{p}{301} \\ - \ghs{p}{401} \\ - \ghs{p}{411} \\ - \ghs{p}{413} -\end{beispiel} - -These gaps can be filled using these options: -\begin{beschreibung} - \Option{text}{<text>} - \Option{dots}{<text>} - \Option{C-temperature}{<num>} - \Option{F-temperature}{<num>} - \Option{kg-mass}{<num>} - \Option{lbs-mass}{<num>} -\end{beschreibung} -\begin{beispiel} - \ghs[text=contact physician!]{p}{301} \\ - \ghs[dots=here]{p}{401} \\ - \ghs[C-temperature=50, F-temperature=122]{p}{411} \\ - \ghs[kg-mass=5.0, lbs-mass=11, C-temperature=50, F-temperature=122]{p}{413} -\end{beispiel} - -\subsection{Combined Statements}\secidx[combined statements]{GHSYSTEM} -There are some combinations of statements. They are input with a \code{+} between -the numbers: -\begin{beispiel}[below] - \ghs{p}{235+410} \\ - \ghs{p}{301+330+331} -\end{beispiel} - -Note that you can only get combinations that officially exist. \emph{You can't -combine freely}. -\secidx*{Hazard and Precautionary Statements} - -\section{Pictograms}\secidx{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} - -The command -\begin{beschreibung} - \Befehl{ghspic}[<options>]{<name>} -\end{beschreibung} -loads them. Table~\ref{tab:ghs_pictograms} shows all available pictograms and their -names. To be more precise: it shows the names to use with the \cmd{ghspic} command. -The file names are \lstinline=ghsystem_<name>.<filetype>= where \code{<filetype>} -is \code{eps}, \code{pdf}, \code{jpg} or \code{png}, see also section~\ref{ssec:picture_type}. -\begin{beispiel} - \ghspic{skull} -\end{beispiel} - -If you don't like the default size you can change it using this option: -\begin{beschreibung} - \option{scale}{<factor>} Scales the pictogram. Default = \code{1} -\end{beschreibung} -The pictures are actually quite large. The default setting scales them by a factor -of $\frac{1}{20}$. -\begin{beispiel} - \ghspic[scale=2]{skull} -\end{beispiel} - -If you want to use some specific \lstinline=\includegraphics= options, \eg if you -want to rotate the pictogram for some reason, use this option: -\begin{beschreibung} - \Option{includegraphics}{\{<includegraphics keyvals>\}} -\end{beschreibung} -\begin{beispiel} - \ghspic[includegraphics={angle=90}]{skull} -\end{beispiel} - -\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{beschreibung} - \Option{pic-type}{eps|pdf|jpg|png} -\end{beschreibung} -\secidx*{Pictograms} - -\section{Available Languages}\label{sec:ghsystem_language} -Right now the H and P statements are only available in English, German or Italian. -The package adapts the package option \key[option]{german} but does not (yet) -recognize language settings by \paket{babel} or \paket{polyglossia}. - -You can also choose the language explicitly. -\begin{beschreibung} - \Option{language}{english|german|italian} -\end{beschreibung} -\begin{beispiel} - \ghs{h}{201} - - \chemsetup[ghsystem]{language=german} - \ghs{h}{201} -\end{beispiel} - -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}\secidx{List of All Statements} -If for some reason you want to list all sentences you can use -\begin{beschreibung} - \Befehl{ghslistall}[<options>] -\end{beschreibung} - -This command has a number of options to customize the table, which is created with -the \lstinline=longtable= environment of the \paket{longtable} package. -\begin{beschreibung} - \option{table-head-number}{<text>} Default = \code{Identifier} - \option{table-head-text}{<text>} Default = \code{Statement} - \option{table-next-page}{<text>} Default = \code{continues on next page} - \option{table-caption}{<text>} As \code{<text>} in \lstinline=\caption{<text>}=. - Default = \code{All H, EUH, and P Statements.} - \option{table-caption-short}{<text>} As \code{<short>} in \lstinline=\caption[<short>]{<text>}=. - \option{table-label}{<text>} The label to refer to the table with \lstinline=\ref= - and similar commands. Default = \code{tab:ghs-hp-statements} - \option{table-row-sep}{<dim>} The separation of the table rows. A \TeX\ dimension. - Default = \code{3pt} - \option{table-rules}{\default{default}|booktabs|none} The style of the horizontal - rules in the table. \code{default} uses \lstinline=\hline=, \code{booktabs} uses - \lstinline=\toprule=, \lstinline=\midrule= or \lstinline=\bottomrule=, resp. - This option needs the \paket{booktabs} package which you have to load yourself - then. Default = \code{default} - \option{table-top-head-rule}{\default{default}|booktabs|none} Change top rule - explicitly. Default = \code{default} - \option{table-head-rule}{\default{default}|booktabs|none} Change rule below head - explicitly. Default = \code{default} - \option{table-foot-rule}{\default{default}|booktabs|none} Change foot rule - explicitly. Default = \code{default} - \option{table-last-foot-rule}{\default{default}|booktabs|none} Change last foot - rule explicitly. Default = \code{default} -\end{beschreibung} - -The code below shows how table~\ref{tab:ghs-hp-statements} was created: -\begin{beispiel}[code only] - \ghslistall[fill-in,table-rules=booktabs] -\end{beispiel} - -\ghslistall[fill-in,table-rules=booktabs] -\secidx*{List of All Statements}\secidx*{GHSYSTEM} +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}\index{APPENDIX@\textbf{APPENDIX}} -\addsec{Overview: Options and Customization}\label{sec:overview}\secidx{Option Overview (chemmacros)} -\minisec{Options} -In the table below all options provided by \chemmacros for customization are listed. -All options that belong to a module can be set with -\begin{beschreibung} - \Befehl{chemsetup}[<module>]{<keyval>} or - \Befehl{chemsetup}{<module>/<keyval>}. -\end{beschreibung} -Some options can be set without value. Then the \default{underlined} value is used. -The options belonging to the modules \code{\textcolor{module}{chemformula}} and -\code{\textcolor{module}{ghsystem}} are not listed here. -\small -\begin{longtable}{>{\ttfamily\color{key}\hspace{5mm}}l>{\ttfamily\color{module}}l>{\ttfamily}l>{\ttfamily}ll} - \toprule - \normalfont\normalcolor\bfseries option & - \normalfont\normalcolor\bfseries module & - \normalfont\bfseries values & - \normalfont\bfseries default & \\ - \midrule - \endhead - \bottomrule - \endfoot - \multicolumn{5}{l}{package options:} \\ - bpchem & option & \default{true}|false & false & page~\pageref{key:option_bpchem} \\ - circled & option & formal|\default{all}|none & formal & page~\pageref{key:option_circled} \\ - circletype & option & chem|math & chem & page~\pageref{key:option_circletype} \\ - cmversion & option & 1|2|bundle & bundle & page~\pageref{key:option_cmversion} \\ - ghsystem & option & \default{true}|false & true & page~\pageref{key:option_ghsystem} \\ - iupac & option & auto|restricted|strict & auto & page~\pageref{key:option_iupac} \\ - language & option & <language> & english & page~\pageref{key:option_language} \\ - method & option & chemformula|mhchem & chemformula & page~\pageref{key:option_method} \\ - Nu & option & chemmacros|mathspec & chemmacros & page~\pageref{key:option_Nu} \\ - strict & option & \default{true}|false & false & page~\pageref{key:option_strict} \\ - synchronize & option & \default{true}|false & false & page~\pageref{key:option_synchronize} \\ - greek & option & math|textgreek|\default{upgreek} & upgreek & page~\pageref{key:option_greek} \\ - xspace & option & \default{true}|false & true & page~\pageref{key:option_xspace} \\ - \multicolumn{5}{l}{\cmd{ba}, \cmd{Nu}:} \\ - elpair & particle & \default{dots}|dash|false & false & page~\pageref{key:particle_elpair} \\ - \multicolumn{5}{l}{\ac{iupac} commands:} \\ - break-space & iupac & <dim> & .01em & page~\pageref{key:iupac_break-space} \\ - bridge-number & iupac & sub|super & sub & page~\pageref{key:iupac_bridge-number} \\ - cip-kern & iupac & <dim> & .075em & page~\pageref{key:iupac_cip-kern} \\ - coord-use-hyphen & iupac & \default{true}|false & true & page~\pageref{key:iupac_coord-use-hyphen} \\ - hyphen-pre-space & iupac & <dim> & .01em & page~\pageref{key:iupac_hyphen-pre-space} \\ - hyphen-post-space & iupac & <dim> & -.03em & page~\pageref{key:iupac_hyphen-post-space} \\ - \multicolumn{5}{l}{\cmd{DeclareChemLatin}:} \\ - format & latin & <anything> & \lstinline=\itshape= & page~\pageref{key:latin_format} \\ - \multicolumn{5}{l}{\cmd{pch}, \cmd{mch}, \cmd{fpch}, \cmd{fmch}:} \\ - append & charges & \default{true}|false & false & page~\pageref{key:charges_append} \\ - \multicolumn{5}{l}{acid/base:} \\ - p-style & acid-base & slanted|italics|upright & upright & page~\pageref{key:acid-base_p-style} \\ - \multicolumn{5}{l}{\cmd{ox}:} \\ - align & ox & center|right & center & page~\pageref{key:ox_align} \\ - parse & ox & \default{true}|false & true & page~\pageref{key:ox_parse} \\ - roman & ox & \default{true}|false & true & page~\pageref{key:ox_roman} \\ - pos & ox & top|super|side & top & page~\pageref{key:ox_pos} \\ - explicit-sign & ox & \default{true}|false & false & page~\pageref{key:ox_explicit-sign} \\ - decimal-marker & ox & comma|point & point & page~\pageref{key:ox_decimal-marker} \\ - \multicolumn{5}{l}{\cmd{OX}, \cmd{redox}:} \\ - dist & redox & <dim> & .6em & page~\pageref{key:redox_dist} \\ - sep & redox & <dim> & .2em & page~\pageref{key:redox_sep} \\ - \multicolumn{5}{l}{\cmd{Enthalpy}, \cmd{Entropy}, \cmd{Gibbs}:} \\ - exponent & & <anything> & \cmd{standardstate} & page~\pageref{key:none_exponent} \\ - delta & & <anything>|false & & page~\pageref{key:none_delta} \\ - subscript & & left|right & & page~\pageref{key:none_subscript} \\ - unit & & <unit> & & page~\pageref{key:none_unit} \\ - \multicolumn{5}{l}{\cmd{DeclareChemState}, \cmd{RenewChemState}:} \\ - exponent & & <anything> & \cmd{standardstate} & page~\pageref{key:none_exponent} \\ - delta & & <anything>|false & & page~\pageref{key:none_delta} \\ - subscript & & <anything> & & page~\pageref{key:none_subscript} \\ - subscript-left & & \default{true}|false & & page~\pageref{key:none_subscript-left} \\ - \multicolumn{5}{l}{\cmd{State}:} \\ - exponent & state & <anything> & \cmd{standardstate} & page~\pageref{key:state_exponent} \\ - delta & state & <anything>|false & & page~\pageref{key:state_delta} \\ - subscript-left & state & \default{true}|false & & page~\pageref{key:state_subscript-left} \\ - \multicolumn{5}{l}{\cmd{NMR}:} \\ - unit & nmr & <unit> & \cmd{mega}\cmd{hertz} & page~\pageref{key:nmr_unit} \\ - nucleus & nmr & \{<num>,<atom symbol>\} & \{1,H\} & page~\pageref{key:nmr_nucleus} \\ - format & nmr & <anything> & & page~\pageref{key:nmr_format} \\ - pos-number & nmr & side|sub & side & page~\pageref{key:nmr_pos-number} \\ - coupling-unit & nmr & <unit> & \lstinline+\hertz+ & page~\pageref{key:nmr_coupling-unit} \\ - parse & nmr & \default{true}|false & true & page~\pageref{key:nmr_parse} \\ - delta & nmr & <anything> & & page~\pageref{key:nmr_delta} \\ - list & nmr & \default{true}|false & false & page~\pageref{key:nmr_list} \\ - list-setup & nmr & & see text & page~\pageref{key:nmr_list-setup} \\ - use-equal & nmr & \default{true}|false & true & page~\pageref{key:nmr_use-equal} \\ - \multicolumn{5}{l}{\cmd{DeclareChemReaction}:} \\ - star & & \default{true}|false & false & page~\pageref{key:none_star} \\ - arg & & \default{true}|false & false & page~\pageref{key:none_arg} \\ - list-name & reaction & <anything> & List of reactions & page~\pageref{key:reaction_list-name} \\ - list-entry & reaction & <anything> & Reaction & page~\pageref{key:reaction_list-entry} \\ - \multicolumn{5}{l}{\cmd{mhName}:} \\ - align & mhName & <alignment> & \cmd{centering} & page~\pageref{key:mhName_align} \\ - format & mhName & <commands> & & page~\pageref{key:mhName_format} \\ - fontsize & mhName & <fontsize> & \cmd{tiny} & page~\pageref{key:mhName_fontsize} \\ - width & mhName & <dim> & & page~\pageref{key:mhName_width} \\ - \multicolumn{5}{l}{phases:} \\ - pos & phases & side|sub & side & page~\pageref{key:phases_pos} \\ - space & phases & <dim> & .1333em & page~\pageref{key:phases_space} \\ - \multicolumn{5}{l}{\cmd{newman}:} \\ - angle & newman & <angle> & 0 & page~\pageref{key:newman_angle} \\ - scale & newman & <factor> & 1 & page~\pageref{key:newman_scale} \\ - ring & newman & <tikz> & & page~\pageref{key:newman_ring} \\ - atoms & newman & <tikz> & & page~\pageref{key:newman_atoms} \\ - back-atoms & newman & <tikz> & & page~\pageref{key:newman_back-atoms} \\ - \multicolumn{5}{l}{\cmd{orbital} \ttfamily <type> = s|p|sp|sp2|sp3:} \\ - phase & orbital/<type> & +|- & + & page~\pageref{key:orbital_phase} \\ - scale & orbital/<type> & <factor> & 1 & page~\pageref{key:orbital_scale} \\ - color & orbital/<type> & <color> & black & page~\pageref{key:orbital_color} \\ - angle & orbital/<type> & <angle> & 90 & page~\pageref{key:orbital_angle} \\ - half & orbital/p & \default{true}|false & false & page~\pageref{key:orbital_half} \\ - overlay & orbital & \default{true}|false & false & page~\pageref{key:orbital_overlay} \\ - opacity & ornital & <num> & 1 & page~\pageref{key:orbital_opacity} -\end{longtable} -\normalsize - -\minisec{Commands} -Quite a number of commands has been presented with which the possibilities of -\chemmacros can be expanded. They are listed below for a quick overview. -\begin{beschreibung} - \befehl{DeclareChemArrow} Define new arrow, see - page~\pageref{cmd:DeclareChemArrow}. - \befehl{RenewChemArrow} Redefine existing arrow. - \befehl{DeclareChemBond} Define a bond, see - page~\pageref{cmd:DeclareChemBond}. - \befehl{RenewChemBond} Redefine a bond. - \befehl{DeclareChemBondAlias} Declare an alias to an existing bond. - \befehl{DeclareChemIUPAC} Define new \ac{iupac} command, see - page~\pageref{cmd:DeclareChemIUPAC}. - \befehl{RenewChemIUPAC} Redefine \ac{iupac} command. - \befehl{DeclareChemLatin} Define new latin phrases, see - page~\pageref{cmd:DeclareChemLatin}. - \befehl{RenewChemLatin} Redefine latin phrases. - \befehl{DeclareChemNMR} Define new NMR command, see - page~\pageref{cmd:DeclareChemNMR}. - \befehl{RenewChemNMR} Redefine NMR command. - \befehl{DeclareChemParticle} Define new particle, see - page~\pageref{cmd:DeclareChemParticle}. - \befehl{RenewChemParticle} Redefine particle. - \befehl{DeclareChemPhase} Define new phases command, see - page~\pageref{cmd:DeclareChemPhase}. - \befehl{RenewChemPhase} Redefine phases command. - \befehl{DeclareChemReaction} Define new reaction environment, see - page~\pageref{cmd:DeclareChemReaction}. - \befehl{DeclareChemState} Define new state command, see - page~\pageref{cmd:DeclareChemState}. - \befehl{RenewChemState} Redefine state command. -\end{beschreibung} -\secidx*{Option Overview (chemmacros)} - \addsec{Suggestions and Bug Reports} + Feedback on \chemmacros, \chemformula and \ghsystem is highly appreciated and -welcome! Especially \chemformula and \ghsystem are still in beta testing phase -so even if I repeat myself: feedback is highly welcome. +welcome! -If you have suggestions for macros, missing features \etc, please don't hesitate -to contact me. If you recognize any errors, be it chemical ones, wrong documentation -and the like, I'd be grateful about a short email% -\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. +If you have suggestions for macros, missing features \etc, please don't +hesitate to contact me. If you recognize any errors, be it chemical ones, +wrong documentation and the like, I'd be grateful about a short +email\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. -If you find any bugs, it would be best, if you'd send me a minimal example, with -which I can reproduce the bug. You can also submit an issue on +If you find any bugs, it would be best, if you'd send me a minimal example, +with which I can reproduce the bug. You can also submit an issue on \url{https://bitbucket.org/cgnieder/chemmacros/} instead. -Many thanks to all the people who already provided me with feedback, especially -(in alphabetical order): +Many thanks to all the people who already provided me with feedback, +especially (in alphabetical order): \begin{itemize} \item Peter Cao \item Christina Lüdigk @@ -3444,5 +2298,4 @@ Many thanks to all the people who already provided me with feedback, especially {\catcode`\^=11 \catcode`\#=11 \printindex} -% \listoftodos -\end{document}
\ No newline at end of file +\end{document} diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.pdf b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.pdf Binary files differdeleted file mode 100644 index 58bb3daf1c9..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.tex b/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.tex deleted file mode 100644 index 5b88b4c684d..00000000000 --- a/Master/texmf-dist/doc/latex/chemmacros/chemmacros_it.tex +++ /dev/null @@ -1,3465 +0,0 @@ -% arara: xelatex -% arara: biber -% arara: xelatex -% arara: xelatex -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ----------------------------------------------------------------------------- -% - the CHEMMACROS bundle -% - chemmacros_it.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-2012 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. -% ----------------------------------------------------------------------------- -% - the Italian translation was kindly provided by Jonas Rivetti. Many thanks! -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% if you want to compile this documentation -% a) you'll need the document class `cnpkgdoc' which you can get here: -% https://bitbucket.org/cgnieder/cnpkgdoc/ -% the class is licensed LPPL 1.3 or later -% b) you need the following compilation order: -% > xelatex chemmacros_it (2 or probably 3 times) -% > biber chemmacros_it -% > xelatex chemmacros_it (2 times) -% -\documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} -\docsetup{ - pkg = chemmacros, - title = Il bundle \Chemmacros, - language = it, - subtitle = {I pacchetti \Chemmacros, \Chemformula\ e \Ghsystem}, - modules = true, - code-box = {skipabove=1ex,skipbelow=1ex}, - label = {}, -} - -\usepackage{chemfig,upgreek,textgreek,booktabs,cancel} -\usepackage[version=3]{mhchem} -\usepackage{hologo} -\newcommand*\pdfTeX{\hologo{pdfTeX}} -\newcommand*\XeTeX{\hologo{XeTeX}} -\newcommand*\LuaTeX{\hologo{LuaTeX}} -\newcommand*\XeLaTeX{\hologo{XeLaTeX}} -\newcommand*\LuaLaTeX{\hologo{LuaLaTeX}} - -\usepackage{fnpct} -\usepackage[biblatex]{embrac} -\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] -\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] - -\pagestyle{headings} - -\usepackage{acro} -\acsetup{long-format=\scshape} -\DeclareAcronym{ghs}{ - short = GHS , - long = Globally Harmonized System of Classification and Labelling of Chemicals -} -\DeclareAcronym{eu}{ - short = EU , - long = European Union -} -\DeclareAcronym{iupac}{ - short = IUPAC , - long = International Union of Pure and Applied Chemistry -} -\DeclareAcronym{UN}{ - short = UN , - long = Nazioni Unite -} -\DeclareAcronym{dvi}{ - short = dvi , - long = device independent file format , - format = \scshape -} -\DeclareAcronym{pdf}{ - short = pdf , - long = portable document file , - format = \scshape -} - -\chemsetup[option]{synchronize,language=italian} -\colorlet{chemformula}{darkgray} - -\sisetup{ - detect-mode=false, - mode=text, - text-rm=\addfontfeatures{Numbers={Proportional,Lining}} -} - -\usepackage{filecontents} - -\begin{filecontents*}{\jobname.ist} - preamble "\\begin{theindex}\n I titoli sono posti in \\textbf{grassetto}, i - pacchetti \\textsf{senza grazie}, i comandi in - \\code{\\textbackslash\\textcolor{code}{marrone}}, le opzioni in - \\textcolor{key}{\\code{verde}} e i moduli (solo per \\chemmacros) in - \\textcolor{module}{\\code{rosso}}.\\newline\n\n" - heading_prefix "{\\bfseries " - heading_suffix "\\hfil}\\nopagebreak\n" - headings_flag 1 - delim_0 "\\dotfill\\hyperpage{" - delim_1 "\\dotfill\\hyperpage{" - delim_2 "\\dotfill\\hyperpage{" - delim_r "}\\textendash\\hyperpage{" - delim_t "}" - suffix_2p "\\nohyperpage{\\,f.}" - suffix_3p "\\nohyperpage{\\,ff.}" -\end{filecontents*} - -\usepackage[backend=biber,style=alphabetic,maxbibnames=20]{biblatex} -\addbibresource{\jobname.bib} -\begin{filecontents*}{\jobname.bib} -@book{iupac:greenbook, - author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and - Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and - Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and - Michio Takami and Anders J Thor}, - title = {“Quantities, Symbols and Units in Physical Chemistry”, \acs{iupac} - Green Book}, - 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}, - 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 - } - -\newcommand*\chemformula{{\scshape\textcolor{cnpkgblue}{chemformula}}\xspace} -\newcommand*\ghsystem{{\scshape\textcolor{cnpkgblue}{ghsystem}}\xspace} - -\newcommand*\Chemmacros{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemmacros}} -\newcommand*\Chemformula{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}chemformula}} -\newcommand*\Ghsystem{{\fontspec[Color=cnpkgblue,Scale=1.2]{Linux Biolinum Shadow O}ghsystem}} - -\renewcommand*\AmS{\hologo{AmS}} -% \newcommand*\pdfTeX{\hologo{pdfTeX}} -% \renewcommand*\LuaTeX{\hologo{LuaTeX}} - -\TitlePicture{% - \ch[font-spec={[Color=chemformula]Augie}]{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- } - \redox(o1,o2)[red,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} - \redox(r1,r2)[blue,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} - -\addcmds{ - a,abinitio,AddRxnDesc,anti,aq,aqi, - b,ba,bond,bottomrule,bridge, - cancel,cd,cdot,ce,cee,celsius,centering,chemabove,Chemalpha,Chembeta,Chemgamma, - Chemdelta,ChemDelta,chemfig,chemname,Chemomega,chemsetup,cip,cis,ch,cnsetup, - CNMR,color,cstsetup, - d,D,data,DeclareChemArrow,DeclareChemBond,DeclareChemBondAlias,DeclareChemIUPAC, - DeclareChemLatin,DeclareChemNMR,DeclareChemParticle,DeclareChemPhase, - DeclareChemReaction,DeclareChemState,DeclareInstance,DeclareSIUnit,definecolor, - delm,delp,Delta,Dfi,draw, - E,el,electronvolt,ElPot,endo,Enthalpy,enthalpy,Entropy, - footnotesize,fmch,fpch,fscrm,fscrp, - g,gas,ghs,ghslistall,ghspic,Gibbs,glqq,gram,grqq, - H,hapto,HNMR,Helmholtz,hertz,hspace, - includegraphics,insitu,intertext,invacuo,iupac,IUPAC,J,joule, - Ka,Kb,kilo,Kw, - L,latin,lewis,Lewis,Lfi,listofreactions,lqd,ltn, - mch,mega,meta,metre,mhName,midrule,milli,mmHg,mole, - N,nano,nicefrac,newman,NMR,Nu,Nuc,num,numrange, - O,ominus,orbital,ortho,oplus,ox,OX, - p,P,para,pch,per,percent,pgfarrowsdeclarealias,pgfarrowsrenewalias,pH,phase, - photon,pKa,pKb,pOH,pos,positron,Pot,prt, - R,Rad,redox,RenewChemArrow,RenewChemBond,RenewChemIUPAC,RenewChemLatin,RenewChemNMR, - RenewChemParticle,RenewChemPhase,RenewChemState,renewtagform,rightarrow, - S,Sf,sample,scriptscriptstyle,scrm,scrp,second,setatomsep,setbondoffset,sfrac, - shorthandoff,ShowChemArrow,ShowChemBond,si,SI,sisetup,sld,Sod,square,State, - subsection, - textcolor,textendash,textsuperscript,tiny,toprule,trans, - upbeta,upeta,upgamma, - val,volt,vphantom,vspave, - w,xspace,Z} - -\newcommand*\pes{\mbox{p.\,es.}\xspace} - -\usepackage{imakeidx} -\indexsetup{othercode=\footnotesize} -\makeindex[columns=3,intoc,options={-sl \jobname.ist}] - -\begin{document} -\chemsetup[chemformula]{ - font-spec = - {[Color=chemformula,Numbers={Proportional,Lining}]Latin Modern Sans} -} -\def\glqq{„} -\def\grqq{“} - -\part{Prima di cominciare}\secidx{PRIMA DI COMINCIARE} -\section{Licenza, requisiti e LEGGIMI} -Il bundle \chemmacros è pubblicato sotto la \LaTeX\ Project Public License -(LPPL) versione 1.3 o successive (\url{http://www.latex-project.org/lppl.txt}) -ed ha lo stato \enquote{maintained}. - -Il bundle \chemmacros richiede versioni attuali dei bundle \paket{l3kernel} e -\paket{l3packages}. Inoltre sono richiesti i pacchetti \paket{siunitx}, -\paket{mathtools}, \paket{bm}, \paket{nicefrac} ed \paket{environ} come anche -\paket*{tikz}\footnote{CTAN:~\href{http://www.ctan.org/pkg/pgf/}{pgf}} e le sue -librerie \code{calc} e \code{arrows}. - -L'opzione globale del pacchetto (d'ora in poi indicata come \enquote{opzione -globale}) \key{bpchem} (vedi paragrafo~\ref{sec:optionen}) richiede -\paket{bpchem}, l'opzione globale \key{xspace} richiede \paket{xspace} e l'opzione -globale \key{method}{mhchem} richiede \paket{mhchem}. - -Dalla v3.0 il pacchetto \chemmacros è stato riunito con i nuovi pacchetti -\chemformula e \ghsystem; \chemformula è un'alternativa a \paket{mhchem}. Questo -ha portato ad alcuni cambiamenti interni a \chemmacros. Contemporaneamente è -stato totalmente rielaborato questo manuale. - -Forse l'utente ricorderà che le opzioni di \chemmacros appartengono tutte a -moduli diversi (per ulteriori informazioni a riguardo vedi il paragrafo~% -\ref{sec:setup}). Questi vengono poste nel margine sinistro quando l'opzione -viene citata per la prima volta. L'appendice (vedi la parte~\ref{sec:overview}) -elenca tutte le opzioni di \chemmacros e i rispettivi moduli. In questo documento -le opzioni sono contrassegnate dal colore \textcolor{key}{\code{verde}} e i moduli -dal colore \textcolor{module}{\code{rosso}}. - -Il pacchetto \ghsystem richiede i pacchetti \chemmacros, \paket{tabu}, -\paket{longtable}, \paket{ifpdf} e \paket{graphicx}. %\ghsystem non ha opzioni -%sdi pacchetto proprie ma passa tutte le opzioni a \chemmacros. - -\achtung{Il pacchetto riconosce alcuni comandi e opzioni obsolete, che non -vengono più descritti in questo manuale; sono ancora definiti per garantire la -compatibilità con documenti meno recenti. Questi comandi restituiscono un -avviso; in futuro potrebbero non essere più definiti.} - -\section{Motivazioni e ragioni} -\chemmacros nacque qualche anno fa come una lista crescente di macro che usavo -frequentemente. Non ricordo più il momento e le ragioni che mi spinsero a -pubblicarle come pacchetto. Ora lo avete davanti a voi \textendash\ spero che -anche voi riusciate a trarne qualche beneficio. - -Nel corso del tempo le macro ed il loro funzionamento sono leggermente variati, -e se ne sono aggiunte di nuove. Con il passare del tempo molte cose si sono -unificate, introducendo sempre più possibilità di apportare personalizzazioni. - -Ogni chimico che usi \LaTeX\ per la compilazione dei propri documenti conoscerà -il meraviglioso pacchetto \paket{mhchem} di Martin Hensel. Fin dall'inizio vi -furono delle difficoltà a fare cooperare \paket{mhchem} e \chemmacros. -Alcuni dettagli di \paket{mhchem} non mi hanno mai soddisfatto particolarmente, -ma non sembravano essere sufficienti per un nuovo pacchetto, nemmeno per inviare -un \enquote{feature request} all'autore di \paket{mhchem}. La sfida e il -divertimento nel creare un pacchetto nuovo nonché il desiderio di raggiungere -una flessibilità massima hanno infine portato a \chemformula. - -\chemformula funziona in modo analogo a \paket{mhchem}, ma è più severo per quanto -riguarda l'input di composti, fattori stechiometrici e frecce di reazione; -contemporaneamente \chemformula offre alcune possibilità di adattare l'output che -\paket{mhchem} non ha. Dato che \chemformula nasce come alternativa a -\paket{mhchem}, \chemmacros offre un'opzione per selezionare uno tra -\paket{mhchem} e \chemformula. - -Il lettore di formazione chimica probabilmente sarà a conoscenza che le -\acl{UN} hanno introdotto il \ac{ghs} come sostituto di validità -globale per i numerosi sistemi dei diversi paesi, simili ma non unitari. Nonostante -non sia ancora stato adottato da tutti i paesi \cite{unece:ghsystem_implementation}, -questo avverrà ben presto. Il pacchetto \ghsystem offre la possibilità di inserire -e richiamare in modo semplice tutti gli \enquote{hazard and precautionary statements}. -Le frasi sono tratte dal regolamento CE 1272/2008 \cite{eu:ghsystem_regulation}. - -Con questo bundle spero di essere riuscito a realizzare i seguenti quattro punti: -\begin{itemize} - \item permettere un utilizzo intuitivo, soprattutto per quanto riguarda la - sintassi dei comandi; - \item proporre dei comandi non solo per semplificare la stesura ma anche la - lettura del codice, migliorandone la semantica e rendendola più logica - (\lstinline=\ortho-diclorobenzene= è più leggibile e più comprensibile di - \lstinline=\textsl{o}-diclorobenzene=); - \item introdurre flessibilità e adattabilità ove possibile, in modo che ogni - utente possa adattare i comandi alle proprie necessità; - \item usare impostazioni predefinite conformi alle norme e le indicazioni della \ac{iupac}. -\end{itemize} -L'ultimo punto in particolare ha richiesto qualche incitamento da parte degli -utenti\footnote{Molte grazie al Dr.~Paul~King!} per applicare le -impostazioni giuste in numerosi punti. Se doveste notare qualcosa che non -corrisponde ai consigli \ac{iupac}\footnote{Questo non vale per il comando \cmd{ox}. -La versione \ac{iupac} è \cmd[oxa]{ox*}.} sarei molto grato di una notifica via -e-mail! - -In un pacchetto di questa mole comprendente parti meno e più recenti (le ultime -debbono essere considerate ancora in fase beta) non è possibile evitare la -presenza di errori o bug. Ho grande interesse a correggere e migliorare questo -pacchetto, e quindi prego tutti gli utenti che notino un funzionamento imprevisto -o indesiderato (anche se apparentemente insignificante) di mandarmi un'e-mail, e -vedrò di fare quel che posso. Sono particolarmente interessato a feedback -riguardante \chemformula (vedi la parte~\ref{part:chemformula}) e \ghsystem (vedi -la parte~\ref{part:ghsystem}), ma sono felice di ricevere feedback anche su -qualunque altra parte del bundle. - -\section{Installazione e caricamento del bundle}\secidx{Caricamento del -bundle}\secidx{Installazione} -Il bundle contiene tre fogli di stile\footnote{Con l'estensione \code{sty}.}, una -cartella di nome \code{language/} che contiene i file di definizione di lingua per -il GHS (estensione \code{def}) e una cartella di nome \code{pictures/} che -contiene immagini di tipo \code{eps}, \code{pdf}, \code{jpg} e \code{png} (i -pittogrammi GHS). Nel caso di un'installazione manuale \emph{è necessario copiare -le cartelle \code{language/} e \code{pictures/} nella \emph{stessa} cartella dei -fogli di stile}. - -Il caricamento di \chemmacros via -\begin{beispiel}[code only] - \usepackage{chemmacros} % `chemmacros', `chemformula' and `ghsystem' are loaded -\end{beispiel} -carica anche \chemformula e \ghsystem. È tuttavia possibile impedire a \chemmacros -di caricare \ghsystem: -\begin{beispiel}[code only] - \usepackage[ghsystem=false]{chemmacros} % `chemmacros' and `chemformula' are loaded -\end{beispiel} -Il caricamento di \chemformula non può essere evitato a causa dell'interazione tra -\chemmacros e \chemformula. - -Il caricamento esplicito di \chemformula o \ghsystem è possibile e carica -contemporaneamente anche \chemmacros, se non ancora caricato; implicitamente -quindi si caricano a vicenda. -\begin{beispiel}[code only] - \usepackage{chemformula} - or - \usepackage{ghsystem} -\end{beispiel} - -Si consiglia tuttavia di utilizzare solamente \lstinline=\usepackage{chemmacros}= -e di applicare le opzioni desiderate con \lstinline=\chemsetup= (confronta il -paragrafo~\ref{sec:setup}). -\secidx*{Installazione}\secidx*{Caricamento del pacchetto} - -\section{Opzioni globali}\label{sec:optionen}\secidx{Opzioni globali} -\chemmacros ha diverse opzioni, che seguono tutte il principio chiave/valore: -\begin{beispiel}[code only] - \usepackage[option1 = <value1>, option2 = <value2>]{chemmacros} -\end{beispiel} -La maggior parte delle opzioni può essere richiamata anche senza assegnargli un -valore (\lstinline+\usepackage[option]{chemmacros}+); in questo caso richiamano il -valore \default{sot\-to\-li\-ne\-a\-to}. - -Sia \chemformula che \ghsystem non hanno opzioni di pacchetto proprie; se caricati -esplicitamente, perdono tutte le opzioni passate loro, che devono poi essere -impostate con il comando di setup. -\chemmacros. -\begin{beschreibung} - % bpchem - \option[option]{bpchem}{\default{true}|false} Questa opzione carica \paket{bpchem} - e adatta il layout di \cmd{NMR} ai comandi propri di \paket{bpchem} - \lstinline+\HNMR+ e \lstinline+\CNMR+. Default = \code{false} - % circled - \option[option]{circled}{\default{formal}|all|none} \chemmacros distingue due - tipi di cariche:\footnote{Ringrazio Christoph Schäfer per avermi fatto notare - che la v1.1 trattava le cariche in modo poco coerente!} le cariche reali ($+/-$) - e quelle formali (\fplus/\fminus). L'opzione \code{formal} distingue tra i - due tipi, \code{all} le rappresenta tutte cerchiate, \code{none} tutte senza - cerchio. Default = \code{formal} - % circletype - \option[option]{circletype}{\default{chem}|math} Questa opzione varia tra due - rappresentazioni per le cariche formali: \cmd{fplus} \fplus\ e - \lstinline+$\oplus$+ $\oplus$. Default = \code{chem} - % cmversion - \option[option]{cmversion}{1|2|bundle} Questa opzione ripristina le definizioni - di alcuni comandi, in modo da compilare correttamente documenti composti - utilizzando v1.*. Default = \code{bundle}; in realtà \code{2} e \code{bundle} - sono equivalenti. L'opzione può essere impostata solamente nel preambolo. - % ghsystem - \option[option]{ghsystem}{\default{true}|false} Attiva/disattiva il pacchetto - \ghsystem. L'impostazione \key{ghs}{false} sopprime il caricamento di \ghsystem. - Default = \code{true} - % greek - \option[option]{greek}{auto|math|textgreek|\default{upgreek}} Questa opzione - determina come vengono rappresentate la lettera \cmd{Chemalpha} e le sue simili - (vedi a pagina~\pageref{desc:upgreek} per ulteriori informazioni). L'opzione - può essere impostata solo nel preambolo. Nota bene: l'opzione non carica né - \paket{upgreek} né \paket{textgreek}, bensì determina solamente quale dei due - viene utilizzato, se caricato. Scegliendo \code{upgreek}, è necessario - \emph{anche} caricare il pacchetto corrispondente. - Default = \code{auto} - % iupac - \option[option]{iupac}{auto|restricted|strict} Determina le impostazioni dei comandi - di nomenclatura (vedi a pagina~\pageref{desc:iupac}). Default = \code{auto} - % language - \option[option]{language}{american|british|english|french|german|italian|ngerman} - Carica impostazioni specifiche per una lingua. \code{english}, \code{american} - e \code{british} sono tra loro equivalenti, come anche \code{german} e \code{ngerman}. - L'opzione può essere impostata solo nel preambolo. Default = \code{english} - % method - \option[option]{method}{\default{chemformula}|mhchem} È possibile scegliere tra - \paket{mhchem} e \chemformula per gli ambienti di reazione di \chemmacros (vedi - il paragrafo~\ref{sec:reactions}) e per le particelle (vedi il paragrafo~\ref{sec:teilchen}). - Default = \code{chemformula}. L'opzione può essere impostata solo nel preambolo. - % Nu - \option[option]{Nu}{\default{chemmacros}|mathspec} Anche il pacchetto \paket{mathspec} - definisce una macro \cmd{Nu}; questa opzione decide quale definizione verrà - applicata (vedi a pagina~\pageref{Nu}). Default = \code{chemmacros}. L'opzione - può essere impostata solo nel preambolo. - % strict - \option[option]{strict}{\default{true}|false} L'impostazione \key{strict}{true} - trasforma tutti gli avvisi in messaggi di errore. Default = \code{false} - % synchronize - \option[option]{synchronize}{\default{true}|false} Impostando \code{true}, se - \chemformula è stato scelto come metodo \chemmacros ne adotta le impostazioni - di carattere. Default = \code{false}. Per dimostrare il funzionamento di questa - opzione, il documento è stato compilato con \key{synchronize}{true} e l'impostazione - di \chemformula \lstinline+\chemsetup[chemformula]{font-spec={[Color=darkgray]Latin Modern Sans}}+. - % xspace - \option[option]{xspace}{\default{true}|false} Con questa opzione la maggior parte - delle macro comprende un \lstinline+\xspace+. Default = \code{true} -\end{beschreibung} -\secidx*{Opzioni globali} - -\section{Setup}\label{sec:setup}\secidx{Setup} -Numerosi comandi di \chemmacros, \chemformula e \ghsystem hanno come opzioni delle -coppie chiave/valore attraverso le quali possono essere adattate. Tipicamente -possono essere utilizzate come argomento (opzionale) del comando, e in genere anche -con il comando \cmd{chemsetup}. -\begin{beschreibung} - \Befehl{chemsetup}[<module>]{<key> = <value>} oppure - \Befehl{chemsetup}{<module>/<key> = <value>} -\end{beschreibung} -Quasi tutte le opzioni appartengono ad un modulo, che indica quale comando vanno -ad influenzare. Quando viene presentata un'opzione, il suo modulo di appartenenza -viene qui segnato nel margine sinistro. Con il comando \cmd{chemsetup} è possibile -utilizzare le opzioni in due modalità diverse, come mostrato sopra. - -Le opzioni globali possono essere considerate anche come opzioni appartenenti al -modulo \textcolor{module}{\ttfamily option}; possono essere quindi richiamate anche -da \cmd{chemsetup}. -\begin{beispiel} - \chemsetup[option]{circled=none}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup[option]{circled=formal}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup[option]{circletype=math}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup{option/circletype=chem,option/circled=all}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt \\ - \chemsetup{option/circletype=math}\mch\ \pch\ \fmch\ \fpch\ \el\ \prt -\end{beispiel} -Le opzioni che non appartengono a nessun modulo \emph{non possono essere utilizzate} -con \cmd{chemsetup}! - -Tutte le opzioni di \chemformula appartengono al modulo \textcolor{module}{\code{chemformula}}, -e tutte le opzioni di \ghsystem appartengono al modulo \textcolor{module}{\code{ghs}}. -\secidx*{Setup} - -\section{Impostazioni di lingua}\label{sec:languages}\secidx{Impostazioni di lingua} -\subsection{Lingue supportate} -Impostando l'opzione -\begin{beispiel}[code only] - \chemsetup[option]{language=<language>} -\end{beispiel} -può essere selezionata una tra le seguenti lingue: \code{american}, \code{british}, -\code{english}, \code{french}, \code{german}, \code{italian} e \code{ngerman}. Le -lingue \code{american}, \code{british} e \code{english} sono tra loro equivalenti, -come anche le lingue \code{german} e \code{ngerman} - -Vengono tradotti -\begin{itemize} - \item Il titolo della lista delle reazioni. - \item Le voci della lista delle reazioni. - \item Le frasi H e P. -\end{itemize} - -\achtung{Attenzione: le frasi GHS non sono disponibili in tutte le lingue (vedi -anche il paragrafo~\ref{sec:ghsystem_language}).} - -\subsection{Particolarità} -\subsubsection{Tedesco} -Selezionando come lingua \code{german/ngerman} vengono tradotti i comandi di fase -\cmd{sld}, \cmd{lqd} nonché \cmd{pKa}. - -\subsubsection{Italiano} -Selezionando come lingua \code{italian} vengono definiti ulteriori comandi \ac{iupac}: -\begin{beschreibung} - \befehl{ter} \iupac{\ter} - \befehl{sin} \iupac{\sin} -\end{beschreibung} -\secidx*{Impostazioni di lingua} - -\section{Novità}\secidx{Novità} -\subsection{Versione 3.3} -\begin{itemize} - \item Dalla versione 3.3 è disponibile l'ambiente \env{experimental}{} (vedi il - paragrafo~\ref{sec:spektroskopie}), che può essere impiegato con alcuni nuovi - comandi e opzioni per riportare dei dati sperimentali in modo consistente. - \item L'ambiente \env{reaction}{} e i suoi simili sanno utilizzare - \lstinline+\label+, \lstinline+\ref+ e \lstinline+\intertext+ (vedi il - paragrafo~\ref{sec:reactions}). - \item Le opzioni globali \key{german} e \key{ngerman} vengono sostituite dall'opzione - \key{language} (vedi a pagina~\pageref{key:option_language} e il paragrafo~\ref{sec:languages} - da pagina~\pageref{sec:languages}). - \item L'opzione \key{upgreek} è stata rinominata a \key{greek}. - \item Ai comandi del tipo \code{\textbackslash\textcolor{code}{Chem<greekletter>}} - sono state aggiunte alcune lettere (vedi il paragrafo~\ref{sec:teilchen}). -\end{itemize} - -\subsection{Versione 3.3a} -\begin{itemize} - \item I comandi \ac{iupac} \cmd{hapto} e \cmd{bridge} sono nuovi. - \item Le frasi H e P sono ora disponibili anche in italiano. -\end{itemize} - -\subsection{Versione 3.3d} -\begin{itemize} - \item Versioni \code{pdf} dei pittogrammi \ac{ghs}. - \item Nuovi valori di default per lunghezza e offset dei legami, vedi a - pagina~\pageref{ssec:compounds:customization}. - \item Nuova opzione \key{bond-style}, vedi a - pagina~\pageref{ssec:compounds:customization}. - \item Nuova opzione \key{cip-kern}, vedi a pagina~\pageref{par:cip}. -\end{itemize} - -\subsection{Versione 3.4} -\begin{itemize} - \item \chemmacros ha ora un manuale italiano; tante grazie a Jonas Rivetti per la - sua traduzione sia delle frasi H \&\ P che di questo manuale! - \item Il comando \cmd{bond} permette di usare legami ulteriori a quello - singolo, doppio e triplo (vedi il sottoparagrafo~\ref{ssec:bonds}). Volevo - aggiungere questa funzionalità da molto tempo! - \item Alcuni cambiamenti all'aspetto del punto radicalico e nuove opzioni per la - sua personalizzazione (vedi il sottoparagrafo~\ref{ssec:compounds:customization}). -\end{itemize} - -\subsection{Versioni 3.5 e 3.6} -\begin{itemize} - \item Le interruzioni di riga che precedono o seguono i legami nelle formule non - sono più possibili. - \item Le interruzioni di riga seguenti le frecce di reazione nelle formule sono - ora permesse. - \item Alcuni degli spazi orizzontali nelle formule ora hanno dei componenti - elastici. - \item È ora possibile inserire un ambiente matematico protetto all'interno - delle formule anche con \cmd*{(} e \cmd*{)}. - \item Le nuove opzioni \key{radical-vshift}, \key{radical-hshift} e - \key{radical-space} permettono un controllo fine sul punto di radicale. - \item Nei fattori stechiometrici viene inserito uno zero iniziale quando mancante. - \item Nuova opzione \key{stoich-paren-parse}. - \item Numerose variazioni interne del codice. - \item Nuova opzione \key{arrow-min-length}. -\end{itemize} -\secidx*{Novità}\secidx*{PRIMA DI COMINCIARE} - -\part{\texorpdfstring{\Chemmacros}{chemmacros}}\secidx{CHEMMACROS} -\section{Particelle, ioni e simboli}\label{sec:teilchen}\secidx{Particelle, ioni e simboli} -\subsection{Predefiniti}\secidx[predefiniti]{Particelle, ioni e simboli} -\chemmacros definisce alcune semplici macro per raffigurare particelle e simboli -di uso comune. Si noti che questi possono essere rappresentati in modo diverso a -seconda delle opzioni globali utilizzate. I comandi possono essere utilizzati -anche in modalità matematica. -\begin{beschreibung} - \befehl{Hpl} \Hpl (protone) - \befehl{Hyd} \Hyd (ione idrossido) - \befehl{HtO} \HtO (ione ossonio) (\textbf{H} \textbf{t}hree \textbf{O}) - \befehl{water} \water - \befehl{el} \el (elettrone) - \befehl{prt} \prt (protone) - \befehl{ntr} \ntr (neutrone) - \befehl{Nu} \Nu (nucleofilo). Anche il pacchetto \paket{mathspec} definisce una - macro di nome \cmd{Nu}: selezionando l'opzione globale \key[option]{Nu}{mathspec}, - \chemmacros definisce una macro sostitutiva \cmd{Nuc}\label{Nu}. - \befehl{El} \El (elettrofilo) - \befehl{ba} \ba (base) - \befehl{fplus} \fplus - \befehl{fminus} \fminus - \befehl{transitionstatesymbol} \transitionstatesymbol - \befehl{standardstate} \standardstate. Questo simbolo viene reso da \chemmacros - solamente se non è caricato il pacchetto \paket{chemstyle}. L'idea proviene proprio - da questo pacchetto\footnote{Molte grazie al suo autore~\href{http://www.texdev.net/}{Joseph Wright}.}. - \befehl{Chemalpha} \Chemalpha - \befehl{Chembeta} \Chembeta - \befehl{Chemgamma} \Chemgamma - \befehl{Chemdelta} \Chemdelta - \befehl{Chemepsilon} \Chemepsilon - \befehl{Chemeta} \Chemeta - \befehl{Chemkappa} \Chemkappa - \befehl{Chemmu} \Chemmu - \befehl{Chemnu} \Chemnu - \befehl{Chemrho} \Chemrho - \befehl{Chempi} \Chempi - \befehl{Chemsigma} \Chemsigma - \befehl{Chemomega} \Chemomega - \befehl{ChemDelta} \ChemDelta -\end{beschreibung} - -\achtung{Il comando \cmd{Rad} non è più disponibile!} - -Entrambe le particelle \cmd{Nu} e \cmd{ba} possono essere adattate. Per farlo si -impiega l'opzione -\begin{beschreibung} - \Option[particle]{elpair}{false|\default{dots}|dash} -\end{beschreibung} -Questa ha effetto solo quando è caricato il pacchetto \paket{chemfig}, da cui -prende il comando \lstinline+\Lewis+. -\begin{beispiel} - % needs package `chemfig' - \ba[elpair] \Nu[elpair=dash] - - \chemsetup[particle]{elpair} - \ba \Nu -\end{beispiel} - -\label{desc:upgreek}Le lettere greche non sono comandi nuovi: la loro definizione -dipende dai pacchetti caricati. La loro versione predefinita corrisponde alle lettere -greche corsive proprie del modo matematico. Se è caricato il pacchetto \paket{textgreek}, -vengono utilizzate le sue lettere; se è caricato il pacchetto \paket{upgreek}, -vengono utilizzate le lettere di quest'ultimo. Questo manuale impiega \paket{upgreek}. -Quando sono caricati entrambi \paket{textgreek} e \paket{upgreek}, viene impiegato -automaticamente \paket{upgreek}. - -Nel caso in cui l'utente non voglia adattarsi alla selezione automatica di \chemmacros, -per scegliere autonomamente va impiegata l'opzione globale \key[option]{greek}. -La tabella~\ref{tab:upgreek_mode} mostra le diverse varianti di alcune lettere. - -\begin{table}[h] - \centering - \begin{tabular}{lccc}\toprule - & math & upgreek & textgreek \\\midrule - \cmd{Chemalpha} & $\alpha$ & $\upalpha$ & \textalpha \\ - \cmd{Chembeta} & $\beta$ & $\upbeta$ & \textbeta \\ - \cmd{ChemDelta} & $\Delta$ & $\Updelta$ & \textDelta \\ \bottomrule - \end{tabular} - \caption{Le lettere greche}\label{tab:upgreek_mode} -\end{table} - -La ragione per cui \chemmacros definisce queste macro è per conformarsi alle regole -\ac{iupac}: la \ac{iupac} consiglia di utilizzare lettere greche tonde nella nomenclatura. - -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,9]{iupac:greenbook}}}] - Greek letters are used in systematic organic, inorganic, macromolecular and - biochemical nomenclature. These should be roman (upright), since they are not - symbols for physical quantities. -\end{zitat} - -\chemmacros impiega questi comandi per definire comandi di nomenclatura (vedi a -pagina~\pageref{par:greek_letters}). - -\subsection{Definire particelle proprie}\secidx[proprie]{Particelle, ioni e simboli} -Talvolta può essere utile avere a disposizione delle ulteriori particelle come macro, -come ad esempio \lstinline+\positron+ oppure \lstinline+\photon+. È possibile -definirle agevolmente con i seguenti comandi: -\begin{beschreibung} - \Befehl{DeclareChemParticle}{<cmd>}\ma{<definition>} - \Befehl{RenewChemParticle}{<cmd>}\ma{<definition>} -\end{beschreibung} -A seconda del \key{method} scelto come opzione, la \code{<definition>} viene svolta -alternativamente con \paket{mhchem} o con \chemformula. La particella si comporta -come quelle predefinite, tranne che per un'eccezione: la particella così definita -obbedisce all'opzione \key{circled} solamente se è stato selezionato -\key{method}{chemformula}. Se si desiderano cariche formali con \key{method}{mhchem}, -è necessario richiamare i comandi di \chemmacros in modo esplicito (vedi il -paragrafo~\ref{sec:ladungen}). -\begin{beispiel} - % uses the `upgreek' package - \DeclareChemParticle{\positron}{$\upbeta$+} - \DeclareChemParticle{\photon}{$\upgamma$} - \RenewChemParticle{\el}{$\upbeta$-} - \positron\ \photon\ \el -\end{beispiel} -\cmd{DeclareChemParticle} definisce la particella solamente se \code{<cmd>} non -esiste ancora. In caso diverso \chemmacros restituisce un avvertimento oppure un -errore, dipendentemente dall'opzione \key{strict}. \cmd{RenewChemParticle} definisce -una particella \emph{solamente} se \code{<cmd>} è \emph{già} esistente e restituisce -un avvertimento o un errore in caso contrario. -\secidx*{Particelle, ioni e simboli} - -\section{Nomenclatura, stereodescrittori e termini in latino}\label{sec:stereo} -\subsection{Nomi IUPAC}\secidx{Nomi IUPAC} -Analogamente al pacchetto \paket{bpchem} anche \chemmacros mette a disposizione -un comando\footnote{L'idea e la realizzazione provengono dal pacchetto \paket*{bpchem} -di Bjørn Pedersen.} per inserire nomi \ac{iupac}. La sua utilità deriva da un -motivo molto semplice: i nomi \ac{iupac} possono diventare particolarmente lunghi, -così lunghi da riempire anche più di due righe, specialmente all'interno di documenti -in due colonne. Ciò significa che devono poter essere divisi più di una volta. Per -metterlo in pratica si può utilizzare il seguente comando: -\begin{beschreibung} - \befehl{iupac}{<IUPAC name>} All'interno di questo comando vengono impiegati - {\catcode`\|=11\cmd{|}} e \cmd{-} per segnare punti di divisione oppure un - trattino separatore. {\catcode`\^=11\cmd{^}} può essere utilizzato come - abbreviazione per \lstinline=\textsuperscript=. -\end{beschreibung} -\begin{beispiel} - \begin{minipage}{.4\linewidth} - \iupac{Tetra\|ciclo[2.2.2.1\^{1,4}]\-un\|decano-2\-dodecil\-5\-(epta\|decil\|iso\|dodecil\|tio\|estere)} - \end{minipage} -\end{beispiel} -Nonostante ciò, il comando \cmd{iupac} è più che altro un comando semantico. Nella -maggior parte dei casi si può raggiungere un risultato (quasi) identico utilizzando -\cmd{-} anziché {\catcode`\|=11\cmd{|}}, \code{-} anziché \cmd{-} e -\lstinline=\textsuperscript= anziché {\catcode`\^=11\cmd{^}}. - -Vi sono delle sottili differenze: \cmd{-} inserisce un sottile spazio prima del -trattino e rimuove un sottile spazio dopo. Il comando {\catcode`\|=11\cmd{|}} non -evita solo le legature, bensì inserisce anche un sottile spazio. -\begin{beispiel} - \huge\iupac{2,4\-di\|cloro\|pentano} \\ - 2,4-dicloropentano -\end{beispiel} - -Gli spazi inseriti possono essere adattati: -\begin{beschreibung} - \option[iupac]{hyphen-pre-space}{<dim>} default = \code{.01em} - \option[iupac]{hyphen-post-space}{<dim>} default = \code{-.03em} - \option[iupac]{break-space}{<dim>} default = \code{.01em} -\end{beschreibung} - -Il comando \cmd{iupac} serve anche ad un altro scopo: indipendentemente dall'opzione -globale \key[option]{iupac} tutti i comandi presentati in questo paragrafo sono -sempre definiti \emph{internamente} a \cmd{iupac}. Tutta una serie di comandi di -nomenclatura ha nomi molto generici come \cmd{meta}, \cmd{D}, \cmd{E}, \cmd{L}, -\cmd{R}, \cmd{S}, \cmd{trans} e così via; ne segue che spesso sono già predefiniti -(\cmd{L} \L) oppure facilmente modificati da altri pacchetti o altre classi (ad -esempio, il pacchetto \paket{cool} definisce sia \cmd{D} che \cmd{E}). Per potere -controllare quali comandi siano definiti e come, esiste l'opzione globale -\key[option]{iupac}\label{desc:iupac}, con tre modalità di utilizzo: -\begin{itemize} - \item \key{iupac}{auto}: se il comando \emph{non è definito} all'interno di un - pacchetto o una classe in uso è disponibile generalmente, altrimenti solo - \emph{all'interno} di \cmd{iupac}. - \item \key{iupac}{restricted}: tutti i comandi di nomenclatura sono definiti - \emph{solo internamente} a \cmd{iupac}. Sono disponibili esternamente solo se - definiti da un'altro pacchetto. - \item \key{iupac}{strict}: \chemmacros sovrascrive ogni definizione preesistente - e rende disponibili i comandi \emph{in tutto il documento}. Possono essere ridefiniti - (solo dopo \lstinline=\begin{document}=). Mantengono il significato di nomenclatura - all'interno di \cmd{iupac}. -\end{itemize} -Nella tabella~\ref{tab:iupac_modes} è dimostrato il funzionamento delle diverse modalità. - -\begin{table}[h] - \centering - \begin{tabular}{lccc}\toprule - & auto & restricted & strict \\\midrule - \lstinline=\L= & \L & \L & \iupac{\L} \\ - \lstinline=\iupac{\L}= & \iupac{\L} & \iupac{\L} & \iupac{\L} \\ - \lstinline=\D= & \D & -- & \D \\ - \lstinline=\iupac{\D}= & \iupac{\D} & \iupac{\D} & \iupac{\D} \\\bottomrule - \end{tabular} - \caption{Esempio dimostrativo del funzionamento delle diverse modalità di \protect\key{iupac}.}\label{tab:iupac_modes} -\end{table} - -\subsubsection{Comandi predefiniti}\secidx[predefiniti]{Nomi IUPAC}\secidx{Stereodescrittori e nomenclatura} -\paragraph{Caratteri greci}\label{par:greek_letters}\secidx[caratteri greci]{Nomi IUPAC} -Le lettere greche all'interno dei nomi di composti vanno scritte in carattere tondo; -per realizzarlo sono impiegati i pacchetti \paket{upgreek} e \paket{textgreek}. -Quando viene caricato uno dei due, vengono scritti in tondo i seguenti caratteri: -\begin{beschreibung} - \befehl{a} \iupac{\a} - \befehl{b} \iupac{\b} - \befehl{g} \iupac{\g} - \befehl{d} \iupac{\d} - \befehl{k} \iupac{\k} - \befehl{m} \iupac{\m} - \befehl{n} \iupac{\n} - \befehl{w} \iupac{\w} -\end{beschreibung} -\begin{beispiel} - \iupac{5\a\-androstan\-3\b\-olo} \\ - \iupac{\a\-(tri\|cloro\|metil)\-\w\-cloro\|poli(1,4\-fenilene\|metilene)} -\end{beispiel} - -\paragraph{Eteroatomi e idrogeni aggiunti}\secidx[Eteroatomi]{Nomi IUPAC} -I legami agli eteroatomi e gli idrogeni aggiunti sono rappresentati da caratteri -corsivi \cite{iupac:greenbook}. \chemmacros definisce alcune abbreviazioni: -\begin{beschreibung} - \befehl{H} \iupac{\H} - \befehl{O} \iupac{\O} - \befehl{N} \iupac{\N} - \befehl{Sf} \iupac{\Sf} - \befehl{P} \iupac{\P} -\end{beschreibung} -\begin{beispiel} - \iupac{\N\-methyl\|benz\|amide} \\ - \iupac{3\H\-pyrrole} \\ - \iupac{\O\-ethyl hexanethioate} -\end{beispiel} - -\paragraph{Cahn-Ingold-Prelog}\index{Cahn-Ingold-Prelog}\secidx[Cahn-Ingold-Prelog]{Nomi IUPAC}\label{par:cip} -\begin{beschreibung} - \befehl{cip}{<conf>} \pes: \cmd{cip}{R,S} \cip{R,S} - \befehl{R} \iupac{\R} - \befehl{S} \iupac{\S} -\end{beschreibung} -Dato che il comando \cmd{S} ha già un altro significato (\S) come impostazione di -default è disponibile solo all'interno di \cmd{iupac}. - -Sia i comandi che i descrittori \emph{entgegen}/\emph{zusammen} ricevono un po' di -kerning aggiuntivo dopo la parentesi chiusa. La sua quantità può essere variata -attraverso l'opzione seguente: -\begin{beschreibung} - \option[iupac]{cip-kern}{<dim>} ammontare del kerning dopo la parentesi chiusa. - Default = \code{.075em} -\end{beschreibung} - -\paragraph{Fischer}\index{Fischer}\secidx[Fischer]{Nomi IUPAC} -\begin{beschreibung} - \befehl{D} \iupac{\D} - \befehl{L} \iupac{\L} -\end{beschreibung} -Dato che il comando \cmd{L} ha già un altro significato (\L) come impostazione di -default è disponibile solo all'interno di \cmd{iupac}. - -\paragraph{cis/trans, zusammen/entgegen, sin/anti \& tert}\index{tert}\secidx[tert]{Nomi IUPAC}\index{cis/trans}\secidx[cis/trans]{Nomi IUPAC}\index{zusammen/entgegen}\secidx[zusammen/entgegen]{Nomi IUPAC}\secidx[sin/anti]{Nomi IUPAC} -\begin{beschreibung} - \befehl{cis} \cis - \befehl{trans} \trans - \befehl{Z} \Z - \befehl{E} \E - \befehl{syn} \syn - \befehl{anti} \anti - \befehl{tert} \tert -\end{beschreibung} -Anche il pacchetto \paket{cool} definisce i comandi \cmd{E} e \cmd{D}. Quando viene -caricato, come impostazione predefinita la loro versione in \chemmacros è disponibile -solo all'interno di \cmd{iupac}. - -\paragraph{orto/meta/para}\index{orto/meta/para}\secidx[orto/meta/para]{Nomi IUPAC} -\begin{beschreibung} - \befehl{ortho} \ortho - \befehl{meta} \meta - \befehl{para} \para -\end{beschreibung} - -\paragraph{Configurazione assoluta}\index{Configurazione assoluta} (utilizza \TikZ) -\begin{beschreibung} - \befehl{Rconf}[<letter>] \cmd{Rconf}: \Rconf \quad\cmd{Rconf}[]: \Rconf[] - \befehl{Sconf}[<letter>] \cmd{Sconf}: \Sconf \quad\cmd{Sconf}[]: \Sconf[] -\end{beschreibung} - -Esempi: -\begin{beispiel} - \iupac{acido \D\-tartar\|ico} = - \iupac{acido \cip{2S,3S}\-tartar\|ico} \\ - \iupac{\D\-($-$)\-treosio} = - \iupac{\cip{2S,3R}\-($-$)\-2,3,4\-tri\|idrossi\|butanale} \\ - \iupac{\cis\-2\-butene} = - \iupac{\Z\-2\-butene} \\ - \iupac{\cip{2E,4Z}\-esa\|diene} \\ - \iupac{\meta\-xilene} = - \iupac{1,3\-di\|metil\|benzene} -\end{beispiel} -\secidx*{Stereodescrittori e nomenclatura} - -\paragraph{Chimica di coordinazione} -\chemmacros mette a disposizione due comandi che possono essere utili in chimica -di coordinazione: -\begin{beschreibung} - \befehl{bridge}{<num>} \bridge{3} - \befehl{hapto}{<num>} \hapto{5} -\end{beschreibung} -\begin{beispiel} - Ferrocene = \iupac{bis(\hapto{5}cyclo\|penta\|dienyl)iron} \\ - \iupac{tetra\-\bridge{3}iodido\-tetrakis[tri\|methyl\|platinum(IV)]} -\end{beispiel} - -Sono disponibili due opzioni per l'adattamento: -\begin{beschreibung} - \option[iupac]{bridge-number}{sub|super} appende il numero come apice o pedice; - \ac{iupac} consiglia l'uso del pedice \cite{iupac:redbook}. Default = \code{sub} - \option[iupac]{coord-use-hyphen}{\default{true}|false} appende un trattino a - \cmd{hapto} e \cmd{bridge} quando vale \code{true}. Default = \code{true} -\end{beschreibung} - -\subsubsection{Comandi di nomenclatura propri}\secidx[propri]{Nomi IUPAC} -Se l'utente avesse bisogno di nuovi comandi è possibile definirli nel modo seguente: -\begin{beschreibung} - \Befehl{DeclareChemIUPAC}{<cmd>}\ma{<declaration>} - \Befehl{RenewChemIUPAC}{<cmd>}\ma{<declaration>} -\end{beschreibung} -Un comando definito in questa maniera obbedisce all'opzione \key[option]{iupac}. -Eventuali comandi preesistenti vengono sostituiti solamente se è attiva l'opzione -globale \key{iupac}{strict}. \cmd{DeclareChemIUPAC} \emph{non sostituisce} la -definizione di un comando di nomenclatura preesistente, bensì restituisce -un'avvertimento o un errore (in base all'opzione globale \key{strict}). -\begin{beispiel} - \DeclareChemIUPAC\endo{\textit{endo}} - \RenewChemIUPAC\anti{\textit{anti}} - \iupac{(2\-\endo,7\-\anti)\-2\-bromo\-7\-fluoro\|bicyclo[2.2.1]heptane} -\end{beispiel} - -\cmd{RenewChemIUPAC} permette di ridefinire i comandi predefiniti. -\begin{beispiel} - \iupac{\meta\-xilene} \\ - \RenewChemIUPAC\meta{\textit{m}} - \iupac{\meta\-xilene} -\end{beispiel} -\secidx*{Nomi IUPAC} - -\subsection{Termini in latino}\secidx{Termini in latino} -Il pacchetto \paket{chemstyle} mette a disposizione il comando \cmd{latin} per -riportare termini latini comuni in modo consistente. \chemmacros definisce un -comando \cmd{latin} analogo solamente se \paket{chemstyle} \emph{non} è caricato; -mette inoltre a disposizione i seguenti comandi: -\begin{beschreibung} - \befehl{insitu} \insitu - \befehl{abinitio} \abinitio - \befehl{invacuo} \invacuo -\end{beschreibung} - -Nel caso sia caricato il pacchetto \paket{chemstyle}, i comandi sono stati già -definiti con il suo comando \lstinline+\latin+; il loro aspetto dipende quindi -dall'opzione \code{abbremph} di \paket{chemstyle}. - -Le macro sono state definite con il comando seguente: -\begin{beschreibung} - \Befehl{DeclareChemLatin}{<cmd>}\ma{<phrase>} - \Befehl{RenewChemLatin}{<cmd>}\ma{<phrase>} -\end{beschreibung} -\begin{beispiel} - \DeclareChemLatin\ltn{latin text} - \ltn -\end{beispiel} -Nel caso in cui \paket{chemstyle} \emph{non} sia stato caricato è possibile -cambiarne l'aspetto tramite l'opzione seguente: -\begin{beschreibung} - \option[latin]{format}{<definition>} Default = \lstinline+\itshape+ -\end{beschreibung} -\secidx*{Termini in latino} - -\section{Unità di misura per l'impiego con \textsf{siunitx}}\label{sec:einheiten}\secidx{Unità di misura}[Unita di misura] -In chimica sono largamente impiegate alcune unità non-SI. Il pacchetto -\paket{siunitx} mette a disposizione il comando \lstinline+\DeclareSIUnit{<command>}{<unit>}+ -per definire unità arbitrarie, e \chemmacros impiega questo comando per definire -le unità elencate in seguito. Come tutte le unità di misura di \paket{siunitx}, -anche queste unità aggiuntive sono valide solamente all'interno di \lstinline+\SI{<num>}{<unit>}+ -e \lstinline+\si{<unit>}+. -\begin{beschreibung} - \befehl{atmosphere} \si{\atmosphere} - \befehl{atm} \si{\atm} - \befehl{calory} \si{\calory} - \befehl{cal} \si{\cal} - \befehl{cmc} \si{\cmc} Le unità \cmd{cmc}, \cmd{molar} e \cmd{Molar} sono - definite anche dal pacchetto \paket{chemstyle}; \chemmacros le definisce solo - nel caso in cui \paket{chemstyle} non sia stato caricato. - \befehl{molar} \si{\molar} - \befehl{moLar} \si{\moLar} - \befehl{Molar} \si{\Molar} - \befehl{MolMass} \si{\MolMass} - \befehl{normal} \si{\normal} - \befehl{torr} \si{\torr} -\end{beschreibung} - -Nota bene: \lstinline+\mmHg+ \si{\mmHg} è messo a disposizione da \paket{siunitx} -e \paket{chemstyle}. -\secidx*{Unità di misura}[Unita di misura] - -\section{Acidi/basi}\label{sec:saeure_base}\secidx{Acidi/basi} -È possibile rappresentare semplicemente \pH, \pKa \ldots\ (la resa dei comandi -\cmd{Ka} e \cmd{pKa} dipende dall'opzione globale \key{language}). -\begin{beschreibung} - \befehl{pH} \pH - \befehl{pOH} \pOH - \befehl{Ka} \Ka - \befehl{Kb} \Kb - \befehl{Kw} \Kw - \befehl{pKa}[<num>] \cmd{pKa}: \pKa, \cmd{pKa}[1]: \pKa[1] - \befehl{pKb}[<num>] \cmd{pKb}: \pKb, \cmd{pKb}[1]: \pKb[1] - \befehl{p}{<anything>} \pes: \cmd{p}{\cmd{Kw}} \p{\Kw} -\end{beschreibung} - -\begin{beispiel} - \Ka \Kb \pKa \pKa[1] \pKb \pKb[1] -\end{beispiel} - -\achtung{L'aspetto predefinito dei comandi di tipo \p{} è stato modificato per -accogliere l'indicazione \ac{iupac}.} -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,103]{iupac:greenbook}}}] - The operator \p{} \textelp{} shall be printed in Roman type. -\end{zitat} - -Esiste un'opzione che varia lo stile di rappresentazione di \p{}: -\begin{beschreibung} - \option[acid-base]{p-style}{italics|slanted|upright} Default = \code{upright} -\end{beschreibung} -\begin{beispiel} - \pH, \pKa - - \chemsetup[acid-base]{p-style=slanted} \pH, \pKa - - \chemsetup[acid-base]{p-style=italics} \pH, \pKa -\end{beispiel} -\secidx*{Acido/base} - -\section{Numeri di ossidazione, cariche reali e formali}\label{sec:ladungen} -\chemmacros distingue tra simboli di cariche reali ($+$/$-$) e formali (\fplus/\fminus) -(vedi anche il paragrafo~\ref{sec:optionen}). Tutti i comandi che restituiscono -cariche formali iniziano con la lettera \code{f}. - -\subsection{Cariche ioniche}\label{ssec:ionen}\secidx{Cariche ioniche} -Le cariche (reali) sono di facile impiego. Si noti che i comandi sono stati -introdotti quando \chemmacros aveva ancora come obbiettivo l'alta compatibilità -con \paket{mhchem}, e \Chemformula non esisteva ancora. Sono ancora disponibili, -anche se personalmente consiglio di usare \cmd{ch} (vedi~ref{part:chemformula}) -e di dimenticare questi comandi. -\begin{beschreibung} - \befehl{pch}[<number>] carica positiva (\textbf{p}lus + \textbf{ch}arge) - \befehl{mch}[<number>] carica negativa (\textbf{m}inus + \textbf{ch}arge) -\end{beschreibung} - -\begin{beispiel} - \pch, Na\pch, Ca\pch[2]\\ - \mch, F\mch, S\mch[2] -\end{beispiel} - -Altrettanto vale per le cariche formali: -\begin{beschreibung} - \befehl{fpch}[<number>] carica positiva - \befehl{fmch}[<number>] carica negativa -\end{beschreibung} - -\begin{beispiel} - \fpch\ \fmch\ \fpch[3] \fmch[3] -\end{beispiel} - -Esiste un'opzione che influenza il comportamento delle cariche: -\begin{beschreibung} - \option[charges]{append}{\default{true}|false} Quando è impostata a \code{true}, - la carica viene appesa ad un gruppo vuoto. Default = \code{false} -\end{beschreibung} - -Questo ha delle conseguenze: -\begin{beispiel} - % uses package `mhchem' - \chemsetup{charges/append=false,phases/pos=sub} - \ce{H\pch\aq} \ce{H\aq\pch} - - \chemsetup[charges]{append=true} - \ce{H\pch\aq} \ce{H\aq\pch} -\end{beispiel} - -Nella maggior parte dei casi questo comportamento può essere indesiderato, anche -se esistono delle occasioni dove può tornare utile: -\begin{beispiel} - \chemsetup{charges/append=false,phases/pos=sub} - \ce{\ox{1,H}\pch\aq} - - \chemsetup[charges]{append=true} - \ce{\ox{1,H}\pch\aq} -\end{beispiel} -\secidx*{Cariche ioniche} - -\subsection{Numeri di ossidazione}\label{ssec:oxidationszahlen}\secidx{Numeri di ossidazione} -Inserimento di numeri di ossidazione: -\begin{beschreibung} - \befehl{ox}[<options>]{<number>,<atom>} inserisce \code{<number>} al di sopra di - \code{<atom>}; \code{<number>} deve essere un numero (razionale)! -\end{beschreibung} - -\begin{beispiel} - \ox{+1,Na}, \ox{2,Ca}, \ox{-2,S}, \ox{-1,F} -\end{beispiel} - -Esiste una serie di opzioni con le quali è possibile adattare \cmd{ox}. -\begin{beschreibung} - \option[ox]{parse}{\default{true}|false} Quando vale \code{false}, può essere - inserito un contenuto qualunque per \code{<number>}. Default = \code{true} - \option[ox]{roman}{\default{true}|false} Seleziona l'impiego di numeri romani o - arabi. Default = \code{true} - \option[ox]{pos}{top|super|side} Varia la posizione del numero di ossidazione: - \code{top} pone \code{<number>} al di sopra di \code{<atom>}, \code{super} come - apice alla destra e \code{side} a destra tra parentesi. Default = \code{top} - \option[ox]{explicit-sign}{\default{true}|false} Restituisce $+$ per numeri positivi - e $\pm$ per $0$ aus. Default = \code{false} - \option[ox]{decimal-marker}{comma|point} Sceglie il tipo di segno decimale per - i numeri di ossidazione come \ox{1.2,X}. Default = \code{point} - \option[ox]{align}{center|right} Centra il numero di ossidazione sopra l'atomo - o lo giustifica a destra. Default = \code{center} -\end{beschreibung} - -\begin{beispiel} - \ox[roman=false]{2,Ca} \ox{2,Ca} \\ - \ox[pos=super]{3,Fe}-oxide \\ - \ox[pos=side]{3,Fe}-oxide \\ - \ox[parse=false]{?,Mn} \\ - \ox[align=right]{2,Ca} -\end{beispiel} - -La variante \key[ox]{pos}{super} può essere selezionata anche tramite -l'abbreviazione \cmd[oxa]{ox*}: -\begin{beispiel} - \ox{3,Fe} \ox*{3,Fe} -\end{beispiel} - -Impiegando \key[ox]{explicit-sign} viene sempre indicato il segno del numero di -ossidazione: -\begin{beispiel} - \chemsetup[ox]{explicit-sign = true} - \ox{+1,Na}, \ox{2,Ca}, \ox{-2,S}, \ch{"\ox{0,F}" {}2} -\end{beispiel} - -\begin{beispiel} - Si confronti ad esempio \ox{-1,\ch{O2^2-}} con \ch{"\ox{-1,O}" {}2^2-} -\end{beispiel} - -Talvolta è necessario impiegare numeri d'ossidazione formali come \num{.5} oppure -$\frac{1}{3}$: -\begin{beispiel} - \ox{.5,\ch{Br2}} \ch{"\ox{1/3,I}" {}3+} -\end{beispiel} - -La frazione impiega il comando \lstinline+\sfrac+ del pacchetto \paket{xfrac}. A -questo proposito è definita l'istanza \lstinline+chemmacros-ox-frac+. -\begin{beispiel}[code only] -\DeclareInstance{xfrac}{chemmacros-ox-frac}{text} - { - scale-factor = 1.2 , - denominator-bot-sep = -.5ex , - numerator-top-sep = -.3ex , - slash-left-kern = -.2em , - slash-right-kern = -.2em , - slash-symbol-font = lmr - } -\end{beispiel} -Naturalmente può essere ridefinita a seconda dei propri gusti. -\secidx*{Numeri di ossidazione} - -\subsection{Cariche parziali e simili}\label{ssec:partialladungen}\secidx{Cariche parziali} -Sono poco usate, ma possono risultare utili: -\begin{beschreibung} - \befehl{delp} \delp\ (\textbf{del}ta + \textbf{p}lus) - \befehl{delm} \delm\ (\textbf{del}ta + \textbf{m}inus) - \befehl{fdelp} \fdelp - \befehl{fdelm} \fdelm -\end{beschreibung} - -Segue un esempio con il comando \cmd{ox} oppure con il pacchetto \paket{chemfig}: -\begin{beispiel} - \chemsetup{ - option/circled = all, - ox/parse = false - } - \ce{\ox{\delp,H}-\ox{\delm,Cl}} \hspace*{1cm} - \chemfig{\chemabove[3pt]{\lewis{246,Br}}{\delm}-\chemabove[3pt]{H}{\delp}} -\end{beispiel} - -Anche queste macro possono essere utilizzate comodamente con \paket{chemfig}. -\begin{beschreibung} - \befehl{scrp} \scrp\ (\textbf{scr}iptstyle + \textbf{p}lus) - \befehl{scrm} \scrm\ (\textbf{scr}iptstyle + \textbf{m}inus) - \befehl{fscrp} \fscrp - \befehl{fscrm} \fscrm - \befehl{fsscrp} \fsscrp\ (impiega \lstinline+\scriptscriptstyle+) - \befehl{fsscrm} \fsscrm -\end{beschreibung} - -\begin{beispiel} - \setatomsep{1.8em}\chemfig{CH_3-\chemabove{C}{\scrp}(-[6]C|H_3)-\vphantom{H_3}CH_3} - - \chemfig{\fmch{}|O-\chemabove{N}{\fscrp}(-[1]O|\fmch)-[7]O|\fmch} -\end{beispiel} -\secidx*{Cariche parziali} - -\section{Meccanismi di reazione}\label{sec:mechanismen}\secidx{Meccanismi di reazione} -Con il comando -\begin{beschreibung} - \Befehl{mech}[<type>] -\end{beschreibung} -è possibile specificare i meccanismi di reazione più diffusi. \code{<type>} può -assumere uno dei valori seguenti: -\begin{beschreibung} - \befehl{mech} (vuoto, nessun argomento opzionale) sostituzione nucleofila \mech - \befehl{mech}[1] sostituzione nucleofila unimolecolare \mech[1] - \befehl{mech}[2] sostituzione nucleofila bimolecolare \mech[2] - \befehl{mech}[se] sostituzione elettrofila \mech[se] - \befehl{mech}[1e] sostituzione elettrofila unimolecolare \mech[1e] - \befehl{mech}[2e] sostituzione elettrofila bimolecolare \mech[2e] - \befehl{mech}[ar] sostituzione elettrofila aromatica \mech[ar] - \befehl{mech}[e] eliminazione \mech[e] - \befehl{mech}[e1] eliminazione unimolecolare \mech[e1] - \befehl{mech}[e2] eliminazione bimolecolare \mech[e2] - \befehl{mech}[cb] eliminazione unimolecolare \enquote{conjugated base}, cioè via - carbanione \mech[cb] -\end{beschreibung} -\secidx*{Meccanismi di reazione} - -% TODO: watch pagebreaks! -\section{Reazioni redox}\label{sec:redoxreaktionen}\secidx{Reazioni redox} -\chemmacros mette a disposizione due comandi con cui mostrare il trasferimento -di elettroni nelle reazioni redox\footnote{Ringrazio~\href{http://www.mathannotated.com/}{Peter Cao}, -che ha proposto questa funzione.}. Entrambi i comandi utilizzano \TikZ. -\begin{beschreibung} - \Befehl{OX}{<name>,<atom>} - \Befehl{redox}(<name1>,<name2>)[<tikz>]\oa{<num>}\ma{<text>} \cnpkgdocarrow\ È - necessario solamente il primo argomento\\\da{<name1>,<name2>}; gli altri due - sono opzionali. -\end{beschreibung} - -\cmd{OX} pone \code{<atom>} in un nodo (un \enquote{node}) dal nome \code{<name>}. -Una volta impiegati due \cmd{OX}, questi possono essere collegati tramite \cmd{redox}; -i nomi dei nodi da collegare vanno posti tra parentesi tonde. Dato che \cmd{redox} -crea una Tikzpicture con le opzioni \code{remember picture,overlay}, il documento -deve essere compilato \emph{almeno due volte}. -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b){ossidazione} -\end{beispiel} -Questa linea può essere adattata con chiavi \TikZ entro \oa{<tikz>}: -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -Con l'argomento \oa{<num>} si può adattare la lunghezza delle linee verticali. -L'impostazione predefinita vale \code{.6em}, lunghezza che poi viene moltiplicata -per \code{<num>}. Un valore negativo pone la linea \emph{sotto} il testo. -\begin{beispiel}[dist] - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch - \redox(a,b)[->,red]{ox} - \redox(a,b)[<-,blue][-1]{red} - \vspace{7mm} -\end{beispiel} - -Con la chiave -\begin{beschreibung} - \option[redox]{dist}{<dim>} Default = \code{.6em} -\end{beschreibung} -è possibile aggiustare il valore predefinito delle linee verticali: -\begin{beispiel}[dist] - \chemsetup{redox/dist=1em} - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -Inoltre l'opzione -\begin{beschreibung} - \option[redox]{sep}{<dim>} Default = \code{.2em} -\end{beschreibung} -permette di variare la distanza tra atomo e inizio della linea. -\begin{beispiel}[dist] - \chemsetup{redox/sep=.5em} - \OX{a,Na} $\rightarrow$ \OX{b,Na}\pch\redox(a,b)[->,red]{ox} -\end{beispiel} - -% TODO: watch pagebreaks! -Esempi: -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,Na}" + "\OX{r1,Cl}" {}2 -> 2 "\OX{o2,Na}" \pch{} + 2 -"\OX{r2,Cl}" \mch } - \redox(o1,o2){\small OX: $- 2\el$} - \redox(r1,r2)[][-1]{\small RED: $+ 2\el$} - \vspace{7mm} -\end{beispiel} - -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2){\small OX: $- 2\el$} - \redox(r1,r2)[][-1]{\small RED: $+ 2\el$} - \vspace{7mm} -\end{beispiel} -\bspmidlength{dist}{15mm} -\begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2)[draw=red,->][3.33]{\small OX: $- 2\el$} - \redox(r1,r2)[draw=blue,->]{\small RED: $+ 2\el$} -\end{beispiel} - -\bspmidlength{dist}{7mm} - \begin{beispiel}[dist] - \ch{ 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 -> 2 "\OX{o2,\ox{+1,Na}}" -\pch{} + 2 "\OX{r2,\ox{-1,Cl}}" \mch } - \redox(o1,o2)[green,-stealth]{\small OX} - \redox(r1,r2)[purple,-stealth][-1]{\small RED} - \vspace{7mm} -\end{beispiel} -\secidx*{Reazioni redox} - -% TODO: watch pagebreaks! -\newpage -\section{Stati (standard), termodinamica}\label{sec:standardstate}\secidx{Termodinamica} -\subsection{Grandezze termodinamiche}\label{ssec:siunitx} -I comandi seguenti impiegano \paket{siunitx}: -\begin{beschreibung} - \Befehl{Enthalpy}[<options>]\da{<subscript>}\ma{<value>} - \Befehl{Entropy}[<options>]\da{<subscript>}\ma{<value>} - \Befehl{Gibbs}[<options>]\da{<subscript>}\ma{<value>} -\end{beschreibung} - -Il loro utilizzo si spiega da sé: -\begin{beispiel} - \Enthalpy{123} \\ - \Entropy{123} \\ - \Gibbs{123} -\end{beispiel} -\da{<subscript>} aggiunge un pedice descrittivo: \cmd{Enthalpy}(r){123} \Enthalpy(r){123}. - -Questi comandi possono essere adattati tramite diverse opzioni: -\begin{beschreibung} - \Option*{exponent}{<anything>} - \Option*{delta}{<anything>/false} - \Option*{subscript}{left/right} - \Option*{unit}{<unit>} -\end{beschreibung} - -Il valore predefinito dipende dal relativo comando: -\begin{beispiel} - \Enthalpy[unit=\kilo\joule]{-285} \\ - \Gibbs[delta=false]{0} \\ - \Entropy[delta=\Delta,exponent=]{56.7} -\end{beispiel} - -Numero e unità vengono composti secondo le regole di \paket{siunitx} e dipendono -dalle sue impostazioni: -\begin{beispiel} - \Enthalpy{-1234.56e3} \\ - \sisetup{per-mode=symbol,exponent-product=\cdot,output-decimal-marker={,},group-four-digits=true} - \Enthalpy{-1234.56e3} -\end{beispiel} - -\subsubsection{Definire nuove grandezze} -Con il comando -\begin{beschreibung} - \Befehl{DeclareChemState}[<options>]{<name>}\ma{<symbol>}\ma{<unit>} -\end{beschreibung} -è possibile definire nuove grandezze. -\begin{beispiel} - \DeclareChemState{Helmholtz}{A}{\kilo\joule\per\mole} - \DeclareChemState[subscript-left=false,exponent=]{ElPot}{E}{\volt} - \Helmholtz{123.4} \\ - \ElPot{-1.1} \\ - \ElPot[exponent=0]($\ch{Sn}|\ch{Sn^2+}||\ch{Pb^2+}|\ch{Pb}$){0.01} -\end{beispiel} - -Le opzioni di questo comando sono quasi identiche a quelle delle grandezze stesse, -con cui possono essere variate le impostazioni predefinite delle nuove grandezze. -\begin{beschreibung} - \Option*{exponent}{<anything>} - \Option*{delta}{<anything>|false} - \Option*{subscript-left}{\default{true}|false} - \Option*{subscript}{<anything>} -\end{beschreibung} - -\subsubsection{Ridefinire grandezze} -Con -\begin{beschreibung} - \Befehl{RenewChemState}[<options>]{<name>}\ma{<symbol>}\ma{<unit>} -\end{beschreibung} -è possibile ridefinire grandezze preesistenti: - -\begin{beispiel} - \RenewChemState{Enthalpy}{h}{\joule} - \Enthalpy(f){12.5} -\end{beispiel} -Il comando è analogo a \cmd{DeclareChemState}, cioè ha le stesse opzioni. - -Sarebbe quindi facile -- seguendo le convenzioni termodinamiche -- definire una -grandezza molare ed una assoluta: -\begin{beispiel} - \DeclareChemState[exponent=]{enthalpy}{h}{\kilo\joule\per\mole}% molar - \RenewChemState[exponent=]{Enthalpy}{H}{\kilo\joule}% absolute - \enthalpy{-12.3} \Enthalpy{-12.3} -\end{beispiel} - -\subsection{Grandezze di stato}\label{ssec:state} -I comandi presentati nel paragrafo~\ref{ssec:siunitx} internamente impiegano il -comando\footnote{Nota bene: \ma{<subscript>} è un argomento \emph{opzionale}.} -\begin{beschreibung} - \Befehl{State}[<options>]{<symbol>}\ma{<subscript>} -\end{beschreibung} -Questo comando può essere utilizzato per scrivere le grandezze prive di valore e -unità. - -Esempi: -\begin{beispiel} - \State{A}, \State{G}{f}, \State[subscript-left=false]{E}{\ch{Na}}, \State[exponent=\SI{1000}{\celsius}]{H} -\end{beispiel} - -Le sue opzioni sono (quasi) identiche a quelle viste in precedenza: -\begin{beschreibung} - \Option[state]{exponent}{<anything>} - \Option[state]{subscript-left}{true|false} - \Option[state]{delta}{<anything>|false} -\end{beschreibung} -\secidx*{Termodinamica} - -\section{Spettroscopia e valori sperimentali}\label{sec:spektroskopie}\secidx{Spettroscopia} -\subsection{Il comando \code{\textbackslash\textcolor{code}{NMR}}} -Quando delle sostanze vengono analizzate per verificare se sono quello che si è -previsto spesso si ricorre alla spettroscopia NMR. I valori sperimentali vengono -riportati all'incirca in questo modo: -\begin{center} - \NMR(400)[CDCl3] = \num{1.59} -\end{center} -\chemmacros mette a disposizione un comando che semplifica questa stesura (impiega -\paket{siunitx}). - -\begin{beschreibung} - \Befehl{NMR}{<num>,<elem>}\da{<num>,<unit>}\oa{<solvent>} - \Befehl{NMR*}{<num>,<elem>}\da{<num>,<unit>}\oa{<solvent>} -\end{beschreibung} - -\emph{Tutti} gli argomenti sono opzionali! Senza argomenti\footnote{Tutti gli -argomenti possono essere combinati a piacimento. Il comando può essere impiegato -anche in modalità matematica.} si ottiene: -\begin{beispiel} - \NMR \\ - \NMR* -\end{beispiel} - -Il primo argomento specifica il tipo di analisi NMR eseguito: -\begin{beispiel} - \NMR{13,C} -\end{beispiel} - -Con il secondo argomento viene riportata la frequenza utilizzata (in \si{\mega\hertz}): -\begin{beispiel} - \NMR(400) -\end{beispiel} -Anche munita della sua unità: -\begin{beispiel} - \NMR(4e8,\hertz) -\end{beispiel} -Nota bene: le impostazioni del pacchetto \paket{siunitx} hanno effetto anche su -questo comando: -\begin{beispiel} - \sisetup{exponent-product=\cdot}\NMR(4e8,\hertz) -\end{beispiel} - -Con il terzo argomento può essere indicato il solvente: -\begin{beispiel} - \NMR[CDCl3] -\end{beispiel} - -\subsection{Abbreviazioni} -Dato che all'interno di un singolo documento alcuni nuclei possono essere richiamati -più di una volta \chemmacros offre una possibilità di definire delle abbreviazioni. -\begin{beschreibung} - \Befehl{DeclareChemNMR}{<csname>}\ma{<num>,<atom>} - \Befehl{RenewChemNMR}{<csname>}\ma{<num>,<atom>} -\end{beschreibung} -Questo definisce un comando con gli stessi argomenti di \cmd{NMR} \emph{eccetto} -\ma{<num>,<atom>}. -\begin{beispiel} - \DeclareChemNMR\HNMR{1,H}% - \DeclareChemNMR\CNMR{13,C}% - \CNMR*(100) \\ - \HNMR*(400) -\end{beispiel} - -\subsection{Un ambiente per elencare valori sperimentali} -\chemmacros offre un ambiente dedicato per facilitare l'elenco di valori sperimentali. -\begin{beschreibung}\catcode`\#=11 - \umg{experimental}{Dati} Ambiente per l'elenco di dati sperimentali. All'interno - di questo ambiente sono definiti i comandi seguenti: - \Befehl{data}{<tipo>}\oa{<specifiche>} \cnpkgdocarrow\ Tipo dei dati, \pes IR, - MS\ldots\ Nell'argomento opzionale possono essere inserite specifiche ulteriori - che vengono stampate in parentesi tonde. - \Befehl{data*}{<tipo>}\oa{<specifiche>} \cnpkgdocarrow\ Come \cmd{data}, ma - restituisce \code{=} anziché \code{:} se vale \key{use-equal}{true}. - \Befehl{NMR}{<num>,<elem>\oa{<coupling core>}}\da{<num>,<unit>}\oa{<solvent>} - \cnpkgdocarrow\ questo comando prende un argomento aggiuntivo: - \cmd{NMR}{13,C[\textasciicircum 1H]} \NMR{13,C[^1H]} - \Befehl{J}\da{<bonds>;<nuclei>}\oa{<unit>}\ma{<list of nums>} \cnpkgdocarrow\ - Costante di accoppiamento (NMR) con il separatore \code{;} tra i valori. - L'argomento \da{<bonds>;<nuclei>} è opzionale e permette di specificare - ulteriormente l'accoppiamento. - \befehl{#}{<num>} Numero di nuclei (NMR). - \befehl{pos}{<num>} Posizione/numero del nucleo (NMR). - \befehl{val}{<num>} Valore numerico, un alias per \lstinline+\num{<num>}+ di - \paket*{siunitx}. - \befehl{val}{<num1>-{}-<num2>} Un alias per \lstinline+\numrange{<num1>}{<num2>}+ - di \paket*{siunitx}. -\end{beschreibung} - -\begin{beispiel} - \begin{experimental} - \data{TIPO1} dati. - \data{TIPO2}[specifiche] altri dati. - \data*{TIPO3} ulteriori dati. - \end{experimental} -\end{beispiel} - -\subsection{Personalizzazione} -L'output dell'ambiente e dei comandi NMR può essere adattato con una serie di -opzioni; per ragioni storiche appartengono al modulo \textcolor{module}{\code{nmr}}. -\begin{beschreibung} - \option[nmr]{unit}{<unit>} Default = \lstinline=\mega\hertz= - \option[nmr]{nucleus}{\{<num>,<atom>\}} Default = \ma{1,H} - \option[nmr]{format}{<commands>} Formato delle specifiche dei dati, ad esempio - \lstinline=\bfseries=. - \option[nmr]{pos-number}{side|sub} Posizione del numero vicino all'atomo. - Default = \code{side} - \option[nmr]{coupling-unit}{<unit>} Un'unità di \paket{siunitx}. Default = - \lstinline=\hertz= - \option[nmr]{parse}{\default{true}|false} Tratta il solvente come formula di - \paket{mhchem}/\chemformula. Default = \code{true} - \option[nmr]{delta}{<token>} I \code{<token>} vengono inseriti dopo $\delta$. - \option[nmr]{list}{true|false} L'ambiente \env{nmr}[<options>]{} viene formattato - come lista. Default = \code{false} - \option[nmr]{list-setup}{<setup>} Setup della lista. Default = vedi in basso. - \option[nmr]{use-equal}{\default{true}|false} Inserisce un segno di uguale dopo - \cmd{NMR} e \cmd{data}. Default = \code{false} -\end{beschreibung} - -Il setup di default della lista: -\begin{beispiel}[code only] - \topsep\z@skip \partopsep\z@skip - \itemsep\z@ \parsep\z@ \itemindent\z@ - \leftmargin\z@ -\end{beispiel} - -\begin{beispiel} - \begin{experimental}[format=\bfseries] - \data{TIPO1} dati. - \data{TIPO2}[specifiche] altri dati. - \data*{TIPO3} ulteriori dati. - \end{experimental} -\end{beispiel} - -Il comando \cmd{NMR} e tutti i comandi definiti con \cmd{DeclareChemNMR} possono -essere impiegati al posto di \cmd{data} per dati NMR. - -\begin{beispiel} - \begin{experimental}[format=\bfseries,use-equal] - \data{TIPO1} dati. - \data{TIPO2}[specifiche] altri dati. - \NMR ulteriori dati. - \end{experimental} -\end{beispiel} - -\subsection{Esempio di applicazione} -Il codice seguente è riportato in diverse versioni a seconda della selezione delle -\code{<opzioni>}. Ovviamente le opzioni possono essere impostate anche globalmente -con \cmd{chemsetup}. - -\begin{beispiel}[code only] -\sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} -\begin{experimental}[<opzioni>] - \data*{Resa} \SI{17}{\milli\gram} aghi gialli (\SI{0.04}{\milli\mole}, \SI{13}{\percent}). - % - \data{P.f.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). - % - \data*{Resa quantica} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} -\end{beispiel} - -\subsubsection{Quasi standard} -Output per \lstinline+<opzioni>: delta=(ppm),pos-number=sub,use-equal+: -\bigskip - -\begin{experimental}[delta=(ppm),pos-number=sub,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Resa} \SI{17}{\milli\gram} aghi gialli (\SI{0.04}{\milli\mole}, \SI{13}{\percent}). - % - \data{P.f.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). - % - \data*{Resa quantica} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} - -\subsubsection{Lista formattata} -Output per le seguenti \lstinline+<opzioni>: format=\bfseries,delta=(ppm),list=true,use-equal+: -\bigskip - -\begin{experimental}[format=\bfseries,delta=(ppm),list=true,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Resa} \SI{17}{\milli\gram} aghi gialli (\SI{0.04}{\milli\mole}, \SI{13}{\percent}). - % - \data{P.f.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). - % - \data*{Resa quantica} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} - -\subsubsection{Buffo} -Output per \code{<opzioni>}: -\begin{lstlisting} - format=\color{red}\itshape, - list=true, - delta=\textcolor{green}{\ch{M+ + H2O}}, - pos-number=side, - coupling-unit=\mega\gram\per\square\second, - list-setup=, - use-equal -\end{lstlisting} - -\begin{experimental}[ - format=\color{red}\itshape, - list=true, - delta=\textcolor{green}{\ch{M+ + H2O}}, - pos-number=side, - coupling-unit=\mega\gram\per\square\second, - list-setup=,use-equal] - \sisetup{separate-uncertainty,per-mode=symbol,detect-all,range-phrase=--} - \chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} - } - % - \data*{Resa} \SI{17}{\milli\gram} aghi gialli (\SI{0.04}{\milli\mole}, \SI{13}{\percent}). - % - \data{P.f.} \SI{277}{\celsius} (DSC). - % - \NMR(600)[CDCl3] \val{2.01} (s, \#{24}, \pos{5}), \val{2.31} (s, \#{12}, \pos{1}), \val{6.72--6.74} (m, \#{2}, \pos{11}), \val{6.82} (s, \#{8}, \pos{3}), \val{7.05--7.07} (m, \#{2}, \pos{12}), \val{7.39--7.41} (m, \#{4}, \pos{9}), \val{7.48--7.49} (m, \#{4}, \pos{8}). - % - \NMR{13,C}(150)[CDCl3] \val{21.2} ($+$, \#{4}, \pos{1}), \val{23.4} ($+$, \#{8}, \pos{5}), \val{126.0} ($+$, \#{4}, \pos{9}), \val{128.2} ($+$, \#{8}, \pos{3}), \val{130.8} ($+$, \#{2}, \pos{12}), \val{133.6} ($+$, \#{2}, \pos{11}), \val{137.0} ($+$, \#{4}, \pos{8}), \val{138.6} (q, \#{4}, \pos{2}), \val{140.6} (q, \#{2}, \pos{10}), \val{140.8} (q, \#{8}, \pos{4}), \val{141.8} (q, \#{4}, \pos{6}), \val{145.6} (q, \#{2}, \pos{7}). - % - \data{MS}[DCP, EI, \SI{60}{\electronvolt}] \val{703} (2, \ch{M+}), \val{582} (1), \val{462} (1), \val{249} (13), \val{120} (41), \val{105} (100). - % - \data{MS}[\ch{MeOH + H2O + KI}, ESI, \SI{10}{\electronvolt}] \val{720} (100, \ch{M+ + OH-}), \val{368} (\ch{M+ + 2 OH-}). - % - \data{IR}[KBr] \val{3443} (w), \val{3061} (w), \val{2957} (m), \val{2918} (m), \val{2856} (w), \val{2729} (w), \val{1725} (w), \val{1606} (s), \val{1592} (s), \val{1545} (w), \val{1446} (m), \val{1421} (m), \val{1402} (m), \val{1357} (w), \val{1278} (w), \val{1238} (s), \val{1214} (s), \val{1172} (s), \val{1154} (m), \val{1101} (w), \val{1030} (w), \val{979} (m), \val{874} (m), \val{846} (s), \val{818} (w), \val{798} (m), \val{744} (w), \val{724} (m), \val{663} (w), \val{586} (w), \val{562} (w), \val{515} (w). - % - \data*{UV-Vis} \SI{386}{\nano\metre} ($\varepsilon = \val{65984}$), \SI{406}{\nano\metre} ($\varepsilon = \val{65378}$). - % - \data*{Resa quantica} $\Phi = \val{0.74+-0.1}$\,. -\end{experimental} -\secidx*{Spettroscopia} - -\section{Comandi per \textsf{mhchem}}\label{sec:mhchem}\secidx{Comandi per \textsf{mhchem}}[Comandi per mhchem] -\paket{mhchem} non viene più caricato automaticamente da \chemmacros bensì solamente -nel caso in cui si utilizzi nel preambolo l'opzione \key[option]{method}{mhchem}; -predefinitamente si utilizza invece \chemformula. - -\chemmacros mette a disposizione solo un unico comando speciale per \paket{mhchem}% -\footnote{\chemformula ha una possibilità diversa per ottenere lo stesso risultato.} -che permette di inserire del testo al di sotto di una formula. -\begin{beschreibung} - \Befehl{mhName}[<options>]{<formula>}\ma{<text>} -\end{beschreibung} - -Per esempio: -\begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} -\end{beispiel} - -\cmd{mhName} può essere adattato con le opzioni seguenti: -\begin{beschreibung} - \option[mhName]{align}{<alignment command>} L'orientamento del testo all'interno - del box in cui viene scritto. Default = \lstinline+\centering+ - \option[mhName]{format}{<anything>} Il formato del testo. - \option[mhName]{fontsize}{<font size command>} Il corpo del testo. Default = - \lstinline+\tiny+ - \option[mhName]{width}{<dim>|auto} La larghezza del box all'interno di cui viene - scritto il testo. Default = \code{auto} -\end{beschreibung} -\begin{beispiel} - \ce{4 C2H5Cl + Pb / Na -> \mhName[fontsize=\footnotesize]{Pb(C2H5)4}{former antiknock additive} + NaCl}\\ - \chemsetup[mhName]{align=\raggedright,fontsize=\small,format=\bfseries\color{red},width=3cm} - \ce{4 C2H5Cl + Pb / Na -> \mhName{Pb(C2H5)4}{former antiknock additive} + NaCl} -\end{beispiel} -\secidx*{Comandi per \textsf{mhchem}}[Comandi per mhchem] - -\section{Ambienti di reazione}\label{sec:reactions}\secidx{Ambienti di reazione} -\subsection{Definiti da \chemmacros} -Sono disponibili i seguenti ambienti per reazioni numerate\ldots -\begin{beschreibung} - \Umg{reaction}{<formula or mhchem code>} - \Umg{reactions}{<formula or mhchem code>} -\end{beschreibung} - -\ldots e le loro versioni asteriscate per reazioni non numerate. -\begin{beschreibung} - \Umg{reaction*}{<formula or mhchem code>} - \Umg{reactions*}{<formula or mhchem code>} -\end{beschreibung} -In questo modo è possibile inserire reazioni (non) numerate in modo analogo alle -equazioni matematiche. - -Per rappresentare le reazioni gli ambienti \code{reaction}/\code{reaction*} internamente -utilizzano ambienti \code{equation}/\code{equation*}, e gli ambienti -\code{reactions}/\code{reactions*} utilizzano gli ambienti \code{align}/\code{align*}. - -\begin{beispiel} - reazione con contatore: - \begin{reaction} - A -> B - \end{reaction} -\end{beispiel} - -\begin{beispiel} - reazione senza contatore: - \begin{reaction*} - C -> D - \end{reaction*} -\end{beispiel} - -\begin{beispiel} - più reazioni allineate, con contatore: - \begin{reactions} - A &-> B + C \\ - D + E &-> F - \end{reactions} -\end{beispiel} - -\begin{beispiel} - più reazioni allineate, senza contatore: - \begin{reactions*} - G &-> H + I \\ - J + K &-> L - \end{reactions*} -\end{beispiel} - -Quando si desidera cambiare il formato dell'etichetta, è possibile usare -\begin{beschreibung} - \Befehl{renewtagform}{<tagname>}\oa{<format>}\ma{<right delim>}\ma{<left delim>}% - \footnote{Messo a disposizione dal pacchetto \paket*{mathtools}.}. -\end{beschreibung} - -\begin{beispiel} - \renewtagform{reaction}[R \textbf]{[}{]} - \begin{reaction} - H2O + CO2 <<=> H2CO3 - \end{reaction} -\end{beispiel} - -Dalla versione 3.3 i riferimenti incrociati e il comando \cmd{intertext} di \AmS math -funzionano come previsto: -\begin{beispiel} - \begin{reactions} - A + 2 B &-> 3 C + D \label{rxn:test} - \intertext{Un po' di testo tra due reazioni allineate.} - 3 E + F &<=> G + 1/2 H - \end{reactions} - Vedi reazione~\ref{rxn:test}. -\end{beispiel} - -\achtung{Nell'impostazione predefinita, cioè con \key{method}{chemformula}, è -sconsigliato utilizzare \cmd{mch} e simili all'interno degli ambienti -\code{reaction}: nella maggior parte dei casi scombinano l'allineamento corretto. -Come impostazione predefinita le cariche riconoscono automaticamente l'impostazione -dell'opzione \key{circled} all'interno degli ambienti, in modo che i comandi non -siano nemmeno necessari.} - -\subsection{Reazioni proprie} -Attraverso il comando -\begin{beschreibung} - \Befehl{DeclareChemReaction}[<options>]{<name>}\ma{<math name>} -\end{beschreibung} -è possibile definire nuovi ambienti di reazione: \code{<name>} sarà il nome del -nuovo ambiente; \code{<math name>} è il tipo di ambiente matematico impiegato. - -Il comando ha due opzioni: -\begin{beschreibung} - \Option*{star}{\default{true}|false} - \Option*{arg}{\default{true}|false} -\end{beschreibung} -La prima opzione è \key*{star}, che definisce anche la variante asteriscata, -ammesso che esista l'equivalente ambiente matematico; in caso contrario restituirà -un errore. - -La seconda opzione è \key*{arg}, che viene impiegata per definire un ambiente con -un argomento obbligatorio. Anche in questo caso l'opzione è valida solamente se -anche l'ambiente matematico corrispondente ha un argomento obbligatorio. - -Gli ambienti predefiniti sono stati definiti tramite -\begin{beschreibung} - \Befehl{DeclareChemReaction}[star]{reaction}\ma{equation} und - \Befehl{DeclareChemReaction}[star]{reactions}\ma{align}. -\end{beschreibung} - -Ammettiamo che l'utente voglia definire un ambiente con il comportamento dell'ambiente -\code{alignat} per reazioni di \chemformula/\paket{mhchem}. È possibile fare il -seguente: -\begin{beispiel}[code only] - \DeclareChemReaction[star,arg]{reactionsat}{alignat} -\end{beispiel} - -In questo modo si è definito l'ambiente \code{reactionsat}. -\begin{beispiel} - \DeclareChemReaction[star,arg]{reactionsat}{alignat} - \begin{reactionsat}{3} - A &-> B &&-> C &&-> D \\ - aaaaa &-> bbbbb &&-> ccccc &&-> ddddd - \end{reactionsat} - \begin{reactionsat*}{2} - A &-> B & C &-> D \\ - aaaaa &-> bbbbb &\quad{} ccccc &-> ddddd - \end{reactionsat*} -\end{beispiel} - -\subsection{Lista delle reazioni} -\chemmacros mette a disposizione un comando per elencare le reazioni inserite negli -ambienti di reazione. -\begin{beschreibung} - \Befehl{listofreactions} -\end{beschreibung} -\begin{beispiel}[below] - \listofreactions -\end{beispiel} - -L'output può essere adattato con le opzioni seguenti: -\begin{beschreibung} - \option[reaction]{list-name}{<name of the list>} Imposta il titolo della lista. - Default = \code{List of reactions} - \option[reaction]{list-entry}{<prefix to each entry>} Prefisso di ogni voce. - Default = \code{Reaction} -\end{beschreibung} -Entrambi i valori predefiniti reagiscono all'opzione di lingua \key[option]{italian}, -variando rispettivamente a \enquote{Elenco delle reazioni} e \enquote{Reazione}. -Un'alternativa all'impostazione dell'opzione \key{list-name} è di ridefinire -\cmd{reactionlistname}. - -Nell'elenco vengono elencate esclusivamente tutte le reazioni numerate. Tutte le -reazioni non asteriscate hanno un argomento opzionale, attraverso il quale è -possibile aggiungere una descrizione della reazione nell'elenco. -\begin{beispiel} - \begin{reaction}[Autoprotolisi] - 2 H2O <<=> H3O+ + OH- - \end{reaction} -\end{beispiel} -Questo non funzionerà quando viene impiegato l'ambiente \code{reactions}. In -questo caso è possibile ricorrere a -\begin{beschreibung} - \Befehl{AddRxnDesc}{<description>} -\end{beschreibung} - -\begin{beispiel} - \begin{reactions} - Cl "\Lewis{0.,\vphantom{Cl}}" + CH4 &-> HCl + "\Lewis{4.,\vphantom{CH}}" CH3 \AddRxnDesc{first~step~of~chain} \\ - "\Lewis{4.,\vphantom{CH}}" CH3 + Cl2 &-> CH3Cl + Cl "\Lewis{0.,\vphantom{Cl}}" \AddRxnDesc{second~step~of~chain} - \end{reactions} -\end{beispiel} -Nota bene: non è necessario impiegare i comandi \enquote{phantom}, se il formato -degli atomi non è stato variato (vedi il paragrafo~\ref{sec:format} a pagina~\pageref{sec:format}). -\secidx*{Ambienti di reazione} - -\section{Fasi}\label{sec:phasen}\secidx{Fasi} -\subsection{Principi}\secidx[Principi]{Fasi} -Questi comandi sono pensati per indicare la fase di una sostanza. -\begin{beschreibung} - \befehl{sld} \sld - \befehl{lqd} \lqd - \befehl{gas} \gas - \befehl{aq} \aq -\end{beschreibung} - -\achtung{Il comportamento predefinito dei comandi di fase è variato per seguire -le raccomandazioni \ac{iupac}. Sia \cmd{sld} che \cmd{lqd} non hanno più nessun -argomento opzionale.} - -\begin{beispiel} - \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas}\\ - per completezza: NaCl\aq. -\end{beispiel} - -% Con l'opzione \key{language}{german} (vedi il paragrafo~\ref{sec:optionen}) si ottengono le versioni in tedesco. % IST SCHON ÜBERSETZT, WÜRDE ICH ABER VORERST WEGLASSEN. -Jonas - -La raccomandazione \ac{iupac}\footnote{Ringrazio Paul King del suggerimento.} per -indicare uno stato di aggregazione è di porlo tra parentesi dopo la formula~\cite{iupac:greenbook}; -è tuttavia molto diffusa anche l'indicazione in pedice. - -\begin{zitat}[{\ac{iupac} Green Book {\cite[][p.\,54]{iupac:greenbook}}}] - The \textelp{} symbols are used to represent the states of aggregation of chemica - species. The letters are appended to the formula in parentheses and should be - printed in Roman (upright) type without a full stop (period). -\end{zitat} - -Vi sono due opzioni per adattare l'output: -\begin{beschreibung} - \option[phases]{pos}{side|sub} Cambia la posizione dell'indicatore di fase. - Default = \code{side} - \option[phases]{space}{<dim>} Varia l'interspazio tra formula e indicatore di fase - per \key{pos}{side}. Una grandezza di \TeX. Default = \code{.1333em} -\end{beschreibung} -\begin{beispiel} - \chemsetup[phases]{pos=sub} - \ch{C\sld{} + 2 H2O\lqd{} -> CO2\gas{} + 2 H2\gas}\\ - per completezza: NaCl\aq. -\end{beispiel} - -\subsection{Definire fasi proprie}\secidx[proprie]{Fasi} -In base al argomento del testo può essere necessario indicare ulteriori stati di -aggregazione; questi possono essere definiti convenientemente attraverso: -\begin{beschreibung} - \Befehl{DeclareChemPhase}{<cmd>}\oa{<german>}\ma{<english>} - \Befehl{RenewChemPhase}{<cmd>}\oa{<german>}\ma{<english>} - \befehl{phase}{<phase>} Quando è necessario impiegare la fase solo poche volte. -\end{beschreibung} -\cmd{DeclareChemPhase} definisce la fase solamente se \code{<cmd>} non esiste ancora; -altrimenti \chemmacros dà un avvertimento o un errore, dipendentemente dall'opzione -\key{strict}. \cmd{RenewChemParticle} definisce una fase \emph{solamente} se \code{<cmd>} -esiste già, e dà un avvertimento/un errore in caso opposto. -\begin{beispiel} - \DeclareChemPhase{\aqi}{aq,$\infty$}% aqueous solution at infinite dilution - \DeclareChemPhase{\cd}{cd}% condensed phase - \RenewChemPhase{\lqd}{lc}% liquid crystal - NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd \\ - \chemsetup[phases]{pos=sub} - NaOH\aqi\ \ch{H2O\cd} U\phase{cr} A\lqd -\end{beispiel} -\secidx*{Phasen} - -\section{Proiezioni di Newman}\label{sec:newman}\secidx{Proiezioni di Newman} -\chemmacros mette a disposizione il comando -\begin{beschreibung} - \Befehl{newman}[<options>]\da{<angle>}\ma{<1>,<2>,<3>,<4>,<5>,<6>} -\end{beschreibung} -che permette di rappresentare le proiezioni di Newman (impiega \TikZ). L'argomento -\da{<angle>} gira gli atomi posteriori in senso antiorario rispetto agli atomi -anteriori. -\begin{beispiel} - \newman{} \newman(170){} - \newman{1,2,3,4,5,6} \newman{1,2,3} \newman{,,,4,5,6} -\end{beispiel} - -Sono disponibili alcune opzioni per adattare il comando: -\begin{beschreibung} - \option[newman]{angle}{<angle>} Angolo predefinito (in gradi). Default = \code{0} - \option[newman]{scale}{<factor>} Scala l'intera proiezione. Default = \code{1} - \option[newman]{ring}{<tikz>} Adatta l'aspetto dell'anello con chiavi di \TikZ. - \option[newman]{atoms}{<tikz>} Adatta l'aspetto dei nodi contenenti gli atomi con - chiavi di \TikZ. - \option[newman]{back-atoms}{<tikz>} Adatta solo gli atomi posteriori. -\end{beschreibung} - -\begin{beispiel} - \chemsetup[newman]{angle=45} \newman{} - \newman[scale=.75,ring={draw=blue,fill=blue!20}]{} -\end{beispiel} -\begin{beispiel} - \chemsetup[newman]{atoms={draw=red,fill=red!20,inner sep=2pt,rounded corners}} - \newman{1,2,3,4,5,6} -\end{beispiel} -\begin{beispiel} - \chemsetup[newman]{ - atoms = {draw=red,fill=red!20,inner sep=2pt,rounded corners}, - back-atoms = {draw=blue,fill=blue!20,inner sep=2pt,rounded corners} - } - \newman{1,2,3,4,5,6} \newman(170){1,2,3,4,5,6} -\end{beispiel} -\secidx*{Proiezioni di Newman} - -\section{Orbitali s, p e ibridi}\label{sec:orbitale}\secidx{Orbitali} -\chemmacros mette a disposizione un comando per rappresentare alcuni orbitali: -\begin{beschreibung} - \Befehl{orbital}[<options>]{<type} -\end{beschreibung} - -Sono disponibili i seguenti tipi orbitalici per \ma{<type>}: -\begin{description} - \item \code{s} - \item \code{p} - \item \code{sp} - \item \code{sp2} - \item \code{sp3} -\end{description} - -\begin{beispiel} - \orbital{s} \orbital{p} \orbital{sp} \orbital{sp2} \orbital{sp3} -\end{beispiel} - -A seconda del tipo sono disponibili diverse opzioni per modificare l'orbitale: -\begin{beschreibung} - \option[orbital]{phase}{\default{+}|-} Varia la fase dell'orbitale (tutti i tipi). - \option[orbital]{scale}{<factor>} Varia la dimensione dell'orbitale (tutti i tipi). - \option[orbital]{color}{<color>} Varia il colore dell'orbitale (tutti i tipi). - \option[orbital]{angle}{<angle>} Ruota gli orbitali con un contributo p in senso - antiorario (tutti i tipi tranne \code{s}). - \option[orbital]{half}{\default{true}|false} Raffigura solo metà orbitale (solo per - \code{<type> = p}). -\end{beschreibung} - -\begin{beispiel} - \orbital{s} \orbital[phase=-]{s} - \orbital{p} \orbital[phase=-]{p} - \orbital{sp3} \orbital[phase=-]{sp3} - - \orbital[angle=0]{p} \orbital[color=red!50]{p} \orbital[angle=135,scale=1.5]{p} \orbital[half]{p} -\end{beispiel} - -Esistono due opzioni ulteriori attraverso le quali si può influenzare il comportamento -di \TikZ: -\begin{beschreibung} - \option[orbital]{overlay}{\default{true}|false} L'orbitale \enquote{non ha bisogno - di spazio}; viene disegnato con la chiave di \TikZ \code{overlay}. - \option[orbital]{opacity}{<num>} L'orbitale diviene trasparente; \code{<value>} - accetta valori compresi tra \code{1} (opaco) e \code{0} (trasparente). -\end{beschreibung} - -\begin{beispiel}[dist] - \hspace{1cm} - \chemsetup[orbital]{ - overlay, - p/color = black!70 - } - \setbondoffset{0pt} - \chemfig{?\orbital{p}-[,1.3]{\orbital[phase=-]{p}}-[:30,1.1]\orbital{p}-[:150,.9]{\orbital[phase=-]{p}}-[4,1.3]\orbital{p}-[:-150,1.1]{\orbital[phase=-]{p}}?} - \vspace{7mm} -\end{beispiel} - -\bspmidlength{dist}{10mm} -\begin{beispiel}[dist] - \hspace{2cm} - \setbondoffset{0pt} - \chemsetup[orbital]{ - overlay , - opacity = .75 , - p/scale = 1.6 , - s/color = blue!50 , - s/scale = 1.6 - } - \chemfig{\orbital{s}-[:-20]{\orbital[scale=2]{p}}{\orbital[half,angle=0]{p}}{\orbital[angle=170,half]{p}}{\orbital[angle=-150,half]{p}}(-[:-150]\orbital{s})-\orbital{s}} - \vspace{1cm} -\end{beispiel} -\bspmidlength{dist}{7mm} -\secidx*{Orbitali}\secidx*{CHEMMACROS} - -\newpage -\part{\texorpdfstring{\Chemformula}{chemformula}}\label{part:chemformula}\secidx{CHEMFORMULA} -\chemsetup[chemformula]{ - font-spec = - {[Numbers={Proportional,Lining}]Linux Libertine O} -} -\section{Impostazioni} -Tutte le opzioni di \chemformula appartengono al modulo \textcolor{module}{\code{chemformula}}. Quindi possono essere impostate attraverso -\begin{beispiel}[code only] - \chemsetup[chemformula]{<options>} oppure - \chemsetup{chemformula/<option1>,chemformula/<option2>} -\end{beispiel} -Possono inoltre essere passate direttamente come opzioni al comando \cmd{ch}. - -\section{Principio di base} -\chemformula ha un comando di base. -\begin{beschreibung} - \Befehl{ch}[<options>]{<input>} -\end{beschreibung} - -Il suo utilizzo sarà intuitivo per l'utente pratico di \paket{mhchem}: -\begin{beispiel} - \ch{H2O} \\ - \ch{Sb2O3} \\ - \ch{H+} \\ - \ch{CrO4^2-} \\ - \ch{AgCl2-} \\ - \ch{[AgCl2]-} \\ - \ch{Y^{99}+} \\ - \ch{Y^{99+}} \\ - \ch{H2_{(aq)}} \\ - \ch{NO3-} \\ - \ch{(NH4)2S} \\ - \ch{^{227}_{90}Th+} \\ - $V_{\ch{H2O}}$ \\ - \ch{Ce^{IV}} \\ - \ch{KCr(SO4)2 * 12 H2O} -\end{beispiel} - -Tuttavia esistono delle differenze. La più importante è: \chemformula distingue -diversi tipi di input. Questi tipi diversi devono essere \emph{necessariamente} -separati da spazi: -\begin{beschreibung} - \Befehl{ch}{type1 type2 type3 type4} -\end{beschreibung} -Uno spazio nell'input non corrisponde \emph{mai} ad uno spazio nell'output. Il -ruolo dello spazio vale strettamente, e quando non viene seguito può produrre output -erratico. A titolo di esempio, \cmd{ch}{2H2O} viene considerata come \emph{una} -particella, in questo caso una formula bruta. -\begin{beispiel} - \ch{2H2O} \\ - \ch{2 H2O} -\end{beispiel} -Ciò significa anche che una particella non può contenere spazi perché verrebbe -automaticamente divisa in due parti. Quando necessario, uno spazio può essere -introdotto con \lstinline+~+. Dato che la maggior parte delle macro ignora gli -spazi seguenti, un input del tipo \cmd{ch}{\textbackslash command ABC} viene -trattato come un'unità. Nel caso si desideri separare un input di questo tipo -è necessario introdurre un gruppo vuoto: \cmd{ch}{\textbackslash command\{\} ABC}. -I diversi tipi di input verranno trattati separatamente in seguito. - -Un'ulteriore differenza importante è che \chemformula cerca di evitare il modo -matematico quanto più possibile: -\begin{beispiel} - \ch{A + B ->[a] C} \\ - \ce{A + B ->[a] C} -\end{beispiel} - -Il comando \cmd{ch} ha alcune opzioni per modificare l'output. Possono essere -impostate localmente come argomenti opzionali oppure globalmente con il comando -\begin{beschreibung} - \Befehl{chemsetup}[chemformula]{<options>} -\end{beschreibung} -Tutte le opzioni di \chemformula appartengono al modulo \textcolor{module}{\code{chemformula}}. - -\section{Fattori stechiometrici}\secidx{Fattori stechiometrici} -Un fattore stechiometrico deve contenere solo cifre e simboli tra i seguenti: \lstinline+.,_/()+ -\begin{beispiel} - \ch{2} \\ - \ch{12} - - % decimals: - \ch{.5} \\ - \ch{5,75} - - % fractions: - \ch{3/2} \\ - \ch{1_1/2} - - % ``iupac'': - \ch{(1/2)} -\end{beispiel} - -Come nell'esempio per le frazioni decimali viene introdotto uno zero iniziale -quando manca nell'input. - -Nell'input è necessario badare alla sintassi giusta, anche se ritengo che sia -piuttosto intuitiva. -\begin{beispiel}[code only] - questo non funzionerà, ma darà invece un errore: \ch{1/1_1} -\end{beispiel} - -Quando i fattori stechiometrici sono scritti tra parentesi le frazioni non vengono -convertite e gli eventuali zeri iniziali non vengono aggiunti. -Il testo inserito tra parentesi viene reso allo stesso modo dell'input. -\begin{beispiel} - \ch{(1/2) H2O} \ch{1/2 H2O} \ch{0.5 H2O} -\end{beispiel} -Numerosi esempi come il seguente per l'utilizzo delle parentesi per racchiudere -fattori stechiometrici possono essere trovati per esempio nello „\ac{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*} - -L'output può essere adattato utilizzando le opzioni seguenti: -\begin{beschreibung} - \option{decimal-marker}{<marker>} Il simbolo usato come separatore decimale. - Default = \code{.} - \option{frac-style}{math|xfrac|nicefrac} Determina in che modo vengono rappresentate - le frazioni. Default = \code{math} - \option{stoich-space}{<skip>} La dimensione dello spazio dopo un fattore stechiometrico. - Una lunghezza elastica. Default = \code{.1667em plus .0333em minus .0117em} - \option{stoich-paren-parse}{\default{true}|false} Quando l'opzione è impostata - a \code{true} anche i fattori stechiometrici compresi tra parentesi vengono - elaborati, cioè le frazioni convertite e gli zeri iniziali inseriti. - Default = \code{false} -\end{beschreibung} -\begin{beispiel} - \ch[decimal-marker={,}]{3.5} \ch[decimal-marker={$\cdot$}]{3,5} -\end{beispiel} - -L'opzione \key{frac-style}{xfrac} utilizza il comando \lstinline+\sfrac+ del -pacchetto \paket{xfrac}; l'output può dipendere fortemente dal carattere impiegato. -\secidx[xfrac]{Fattori stechiometrici} -\begin{beispiel} - \ch[frac-style=xfrac]{3/2} \ch[frac-style=xfrac]{1_1/2} -\end{beispiel} - -\chemformula definisce l'istanza \lstinline=formula-text-frac=, che può essere -adattata alle proprie necessità. Le impostazioni di default sono elencate di seguito: -\begin{beispiel}[code only] - \DeclareInstance{xfrac}{chemformula-text-frac}{text} - { - slash-left-kern = -.15em , - slash-right-kern = -.15em - } -\end{beispiel} -Questo documento impiega il Font Linux Libertine~O e la definizione seguente: -\begin{beispiel}[code only] - \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{beispiel} - -L'opzione \key{frac-style}{nicefrac} utilizza il comando \lstinline+\nicefrac+ del -pacchetto \paket{nicefrac}.\secidx[nicefrac]{Fattori stechiometrici} -\begin{beispiel} - \ch[frac-style=nicefrac]{3/2} \ch[frac-style=nicefrac]{1_1/2} -\end{beispiel} - -L'opzione \key{stoich-space} permette di adattare la larghezza dello spazio tra -fattore stechiometrico e formula bruta.\secidx[space]{Fattori stechiometrici} -\begin{beispiel} - \ch{2 H2O} \\ - \ch[stoich-space=.3em]{2 H2O} -\end{beispiel} -\secidx*{Fattori stechiometrici} - -\section{Formule brute}\label{ssec:compounds}\secidx{Formule brute} -\chemformula considera le formule brute come il tipo \enquote{diverso da tutti gli -altri}. Questo diverrà più chiaro in seguito quando saranno elencati gli altri tipi. -\begin{beispiel} - \ch{H2SO4} \\ - \ch{[Cu(NH3)4]^2+} -\end{beispiel} - -\subsection{Addotti}\secidx[Addotti]{Formule brute} -\chemformula riconosce due identificatori che creano addotti. -\begin{beschreibung} - \befehl{ch}{A.B} \ch{A.B} - \befehl{ch}{A*B} \ch{A*B} -\end{beschreibung} -\begin{beispiel} - \ch{CaSO4.H2O} \\ - \ch{CaSO4*H2O} -\end{beispiel} -Dato che le cifre all'interno di una formula bruta vengono considerate sempre -come pedici (vedi il paragrafo~\ref{ssec:subscripts}), talvolta è necessario -lasciare uno spazio in modo che il numero venga riconosciuto come fattore -stechiometrico: -\begin{beispiel} - \ch{Na3PO4*12H2O} \\ - \ch{Na3PO4* 12 H2O} \\ - \ch{Na3PO4 * 12 H2O} -\end{beispiel} - -\subsection{Pedici}\label{ssec:subscripts}\secidx[Pedici]{Formle brute} -\emph{Tutte} le cifre in una sostanza vengono considerate come pedici. -\begin{beispiel} - \ch{H2SO4} -\end{beispiel} -Quando si desidera utilizzare un carattere come pedice, va utilizzata la sintassi -matematica: -\begin{beispiel} - \ch{A_nB_m} -\end{beispiel} - -Il pedice riconosce i gruppi, all'interno dei quali è anche possibile usare il modo -matematico. -\begin{beispiel} - \ch{A_{$n$}B_{$m$}} \\ - \ch{NaCl_{(aq)}} -\end{beispiel} - -\subsection{Comandi}\secidx[Comandi]{Formule brute} -All'interno di una formula bruta sono permessi i comandi: -\begin{beispiel} - \ch{\textbf{A2}B3} \ch{A2\color{red}B3} -\end{beispiel} -Quando però un comando richiede come argomento un numero, ad esempio comandi -regolanti la spaziatura oppure il comando \lstinline+\ox+, l'utilizzo diretto -fallirà. Questo deriva dal fatto che le cifre verranno riconosciute come pedice -\emph{prima} dell'espansione del comando. -\begin{beispiel}[code only] - \ch{A\hspace{2mm}B} darà un errore, dato che \hspace vedrà qualcosa del genere: \hspace{$_2$mm}. -\end{beispiel} -Vedi il paragrafo~\ref{ssec:text} per una via d'uscita da questo problema. - -\subsection{Cariche ed altri apici}\secidx[Cariche]{Formule brute}\secidx[Apici]{Formule brute} -\paragraph{Principi} -Quando una formula bruta \emph{termina} con un segno più o meno, questo verrà -interpretato come un simbolo di carica e messo ad apice. In altri punti un più -rappresenta un legame triplo ed un trattino un legame singolo, vedi il -paragrafo~\ref{ssec:bonds}. -\begin{beispiel} - \ch{A+B} \ch{AB+} \\ - \ch{A-B} \ch{AB-} -\end{beispiel} - -Per gruppi di carica più lunghi oppure altri apici è possibile utilizzare la sintassi -matematica, che riconosce i gruppi e permette il modo matematico al loro interno. -Entro questi gruppi né il simbolo \code{+} né \code{-} vengono interpretati come -legami. Quando ad apice si trova un punto \code{.} non indica un addotto bensì un -radicale. Un asterisco \code{*} indica uno stato eccitato. -\begin{beispiel} - \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^*} -\end{beispiel} - -Ioni e composti ionici con più di una carica vengono inseriti in modo analogo: -\begin{beispiel} - \ch{SO4^2-} \ch{Ca^2+ SO4^2-} -\end{beispiel} - -\paragraph{Comandi ionici}\secidx[Apici!Comandi di carica]{Formule brute} -All'interno di \cmd{ch} non sono necessari comandi del tipo di \cmd{mch}; difatti -\emph{è opportuno evitarli}, dato che possono scombinare l'orientamento degli apici -e dei pedici. L'opzione \code{circled} di \chemmacros viene rispettata da \cmd{ch}. -\begin{beispiel} - \chemsetup[option]{circled=all} - \ch{H+ + OH- <=> H2O} -\end{beispiel} - -\paragraph{Comportamento}\secidx[Apici!Comportamento]{Formule brute} -Nel caso apice e pedice siano direttamente consecutivi in una formula bruta gli -apici si comportano diversamente in base alla loro posizione. -\begin{beispiel} - \ch{^33B} \ch{{}^33B} \ch{3^3B} \ch{B^3} \ch{B3^3} \\ - \ch{^{23}_{123}B} \ch{{}^{23}_{123}B} \ch{_{123}^{23}B} \ch{B^{23}} \ch{B_{123}^{23}} \\ - \ch{^{123}_{23}B} \ch{{}^{123}_{23}B} \ch{_{23}^{123}B} \ch{B^{123}} \ch{B23^{123}} -\end{beispiel} -\begin{itemize} - \item Quando una formula \emph{inizia} con un apice, gli apici e i pedici vengono - giustificati a \emph{destra}, altrimenti a \emph{sinistra}. - \item Quando un apice \emph{segue} un pedice, questo verrà ulteriormente spostato - di una lunghezza che viene determinata dall'opzione \key{charge-hshift}{<dim>} - (vedi anche a pagina~\pageref{desc:charge-hshift}s). -\end{itemize} - -Il secondo punto segue l'indicazione \ac{iupac}: -\begin{zitat}[{\ac{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{zitat} - -\subsection{Legami}\label{ssec:bonds}\secidx[Legami]{Formule brute} -\subsubsection{Legami nativi} -Vi sono tre tipi di quelli chiamati d'ora in poi \enquote{legami nativi}. -\begin{beispiel} - singolo: \ch{CH3-CH3} \\ - doppio: \ch{CH2=CH2} \\ - triplo: \ch{CH+CH} -\end{beispiel} - -\subsubsection{Legami flessibili} -\paragraph{Predefiniti} -Oltre i tre legami nativi ve ne sono alcuni altri che possono essere richiamati -tramite -\begin{beschreibung} - \Befehl{bond}{<bond name>} -\end{beschreibung} -I tipi predefiniti sono mostrati nella tabella~\ref{tab:bond_types}. - -\begin{table} - \centering - \caption{Legami disponibili con \protect\cmd{bond}.} - \label{tab:bond_types} - \begin{tabular}{lcl} - \toprule - \bfseries Nome & \bfseries Aspetto & \bfseries Alias \\ - \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{beispiel} - \ch{C\bond{sb}C\bond{db}C\bond{tp}C\bond{deloc}C\bond{tdeloc}C\bond{co>}C\bond{<co}C} -\end{beispiel} - -\paragraph{Legami personalizzati} -\chemformula offre dei comandi per definire dei tipi di legame personali: -\begin{beschreibung} - \Befehl{DeclareChemBond}{<name>}\ma{<code>} - \Befehl{RenewChemBond}{<name>}\ma{<code>} - \Befehl{DeclareChemBondAlias}{<new name>}\ma{<old name>} - \Befehl{ShowChemBond}{<name>} -\end{beschreibung} -Il loro uso è facilmente descritto da un esempio. Vediamo come sono definiti il -legame \code{single} ed il legame \code{co>}: -\begin{beispiel}[code only] - \DeclareChemBond{single} - { \draw[chembond] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBond{coordright} - { \draw[chembond,butt cap->] (chemformula-bond-start) -- (chemformula-bond-end) ; } - \DeclareChemBondAlias{co>}{coordright} -\end{beispiel} -Due punti sono importanti: i nomi delle coordinate di partenza e di arrivo, -\code{chemformula-bond-start} e \code{chemformula-bond-end}, e lo stile \TikZ -dei legami \code{chembond}. - -Supponiamo di voler definire un particolare tipo di legame tratteggiato, ad -esempio nel modo seguente: -\begin{beispiel} - \usetikzlibrary{decorations.pathreplacing} - \makeatletter - \DeclareChemBond{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{beispiel} - -L'ultimo esempio mostra un'ulteriore macro: \makeatletter\cmd{chemformula@bondlength}\makeatother. -Esiste solamente per accedere direttamente alla lunghezza di legame impostata -direttamente con \key{bond-length}.% (vedi anche a pagina~\pageref{key:bond-length}). - -\subsection{Personalizzazione}\secidx[Personalizzazione]{Formule brute}\label{ssec:compounds:customization} -Le seguenti opzioni permettono di adattare l'output: -\begin{beschreibung} - \option{subscript-vshift}{<dim>} Ulteriore spostamento verticale dei pedici. - Default = \code{0pt} - \option{subscript-style}{text|math} Stile usato per i pedici. Default = \code{text} - \option{charge-hshift}{<dim>} Spostamento degli apici seguenti un pedice. Default - = \code{.25em}\label{desc:charge-hshift} - \option{charge-style}{text|math} Stile usato per gli apici. Default = \code{text} - \option{adduct-space}{<dim>} Spazio vuoto ai lati del punto di addotto. Default - = \code{.1333em} - \option{bond-length}{<dim>} Lunghezza dei legami. Default = \code{.5833em}. - \option{bond-offset}{<dim>} Distanza tra atomo e legame. Default = \code{.07em} - \option{bond-style}{<tikz>} Opzioni di \TikZ\ per i legami. Inizialmente vuoto. - \option{radical-style}{<tikz>} Opzioni di \TikZ\ per il punto radicalico. - Inizialmente vuoto. - \option{radical-radius}{<dim>} Il raggio del punto radicalico. Default = \code{.2ex} - \option{radical-hshift}{<dim>} Spazio orizzontale precedente il punto - radicalico. Default = \code{.15em} - \option{radical-vshift}{<dim>} Posizione verticale del punto radicalico - riferita all'attuale linea di base. Default = \code{.5ex} - \option{radical-space}{<dim>} Spazio orizzontale seguente il punto radicalico. - Default = \code{.15em} -\end{beschreibung} - -Forse l'utente si sarà accorto che per alcuni ioni le cariche sono spostate a -destra:\secidx[Cariche!Spostamento]{Formule brute} -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} -Queste vengono spostate quando \emph{seguono} un pedice, seguendo la -raccomandazione \ac{iupac}~\cite[][p.\,51]{iupac:greenbook}. La dimensione dello -spostamento può essere impostata con l'opzione \key{charge-hshift}. -\begin{beispiel} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5ex} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} \\ - \chemsetup[chemformula]{charge-hshift=.5pt} - \ch{SO4^2-} \ch{NH4+} \ch{Na+} -\end{beispiel} - -Nonostante l'indicazione \ac{iupac}, \chemformula nell'impostazione predefinita -non genera apici completamente spostati, che a mio parere in alcuni casi sono di -difficile lettura ed in altri casi di aspetto sgradevole. Trattandosi di una -percezione soggettiva, \chemformula offre sia la possibilità di impostare un -valore assoluto per lo spostamento che di spostare completamente l'apice. -Nell'ultimo caso va impiegato \key{charge-hshift}{full}. -\begin{beispiel} - \ch[charge-hshift=0pt]{C5H11+} \ch[charge-hshift=0pt]{SO4^2-} \\ - \ch{C5H11+} \ch{SO4^2-} \\ - \ch[charge-hshift=1ex]{C5H11+} \ch[charge-hshift=1ex]{SO4^2-} \\ - \ch[charge-hshift=full]{C5H11+} \ch[charge-hshift=full]{SO4^2-} -\end{beispiel} - -Se non si desidera rendere le cariche in modo testuale è possibile passare al -modo matematico: -\begin{beispiel} - \ch{M^x+} \ch{SO4^2-} \\ - \chemsetup[chemformula]{charge-style = math} - \ch{M^x+} \ch{SO4^2-} -\end{beispiel} - -L'opzione \key{subscript-vshift} può essere impiegata per adattare lo spostamento -verticale dei pedici.\secidx[Pedici!Spostamento]{Formule brute} -\begin{beispiel} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=.5ex} - \ch{H2SO4} \ch{Na3PO4} \\ - \chemsetup[chemformula]{subscript-vshift=-.2ex} - \ch{H2SO4} \ch{Na3PO4} -\end{beispiel} - -Si può inolte selezionare in quale modo verranno composti i pedici: -\begin{beispiel} - \ch{A_nB_m} \ch{H2SO4} \\ - \chemsetup[chemformula]{subscript-style = math} - \ch{A_nB_m} \ch{H2SO4} -\end{beispiel} - -Con l'opzione \key{adduct-space} è possibile variare lo spazio a sinistra e destra -del segno di addotto. -\begin{beispiel} - \ch{Na3PO3*H2O} \\ - \chemsetup[chemformula]{adduct-space=.2em} - \ch{Na3PO3*H2O} -\end{beispiel} - -La lunghezza dei legami va modificata con:\secidx[Legami!Lunghezza]{Formule brute} -\begin{beispiel} - \chemsetup[chemformula]{bond-length=4mm}% - single: \ch{CH3-CH3} \\ - double: \ch{CH2=CH2} \\ - triple: \ch{CH+CH} -\end{beispiel} - -Si può inoltre impostare la distanza tra atomo e legame: -\begin{beispiel} - \ch{H-H + N+N + O=O} \\ - \ch[bond-offset=1pt]{H-H + N+N + O=O} -\end{beispiel} -\secidx*{Formule brute} - -\section{Tipi speciali di input}\secidx{Tipi speciali di input} -Esistono alcuni \enquote{tipi di input speciali}. - -\subsection{Token a input singolo}\secidx[Token a input singolo]{Tipi speciali di input} -Questo tipo è composto da un singolo token compreso tra i seguenti: -\begin{beschreibung} - \befehl{ch}{ + } \ch{+} Genera un segno più tra formule se spaziato a destra e sinistra:\\ - \cmd{ch}{2 Na + Cl2} \ch{2 Na + Cl2} - \befehl{ch}{ v } \ch{v} Simbolo per una precipitazione o la formazione di un solido: \cmd{ch}{BaSO4 v} \ch{BaSO4 v} - \befehl{ch}{ \lstinline+^+ } \ch{^} Simbolo per la formazione di gas: \cmd{ch}{\lstinline=H2 ^=} \ch{H2 ^} -\end{beschreibung} - -Lo spazio a sinistra e destra del più può essere adattato tramite un'opzione: -\begin{beschreibung} - \option{plus-space}{<skip>} Una lunghezza elastica. Default = - \code{.3em plus .1em minus .1em} -\end{beschreibung} -\begin{beispiel} - \ch{A + B}\\ - \ch[plus-space=4pt]{A + B} -\end{beispiel} - -\subsection{Input di opzioni}\secidx[Input di opzioni]{Tipi di input speciali} -Talvolta si desidera applicare un'opzione solo ad una parte di una reazione; -naturalmente è possibile impiegare ripetutamente \cmd{ch}. -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} -\end{beispiel} -Tuttavia questo interrompe l'input nel sorgente e \emph{potrebbe} influenzare la -spaziatura. Per questo motivo esiste un'alternativa: -\begin{beschreibung}\makeatletter - \befehl{ch}{ @\{<options>\} } Le opzioni date sono attive \emph{solo} fino alla - fine della \emph{prossima} formula bruta. -\end{beschreibung} -\begin{beispiel} - \ch{H2O +}\textcolor{red}{\ch{H2SO4}}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{format=\color{red}} H2SO4 -> H3O+ + HSO4-} \\ - o naturalmente:\\ - \ch{H2O + \textcolor{red}{H2SO4} -> H3O+ + HSO4-}\\[1em] - \ch{H2O +}\ch[subscript-vshift=2pt]{H2SO4}\ch{-> H3O+ + HSO4-} \\ - \ch{H2O + @{subscript-vshift=2pt} H2SO4 -> H3O+ + HSO4-} -\end{beispiel} -\achtung{Si tratta di una modalità sperimentale che potrebbe scomparire nelle versioni future.} -\secidx*{Tipi di input speciali} - -\section{Input protetto}\secidx{Input protettto} -In certi casi si può desiderare di evitare che \chemformula elabori l'input. -Esistono due possibilità di ottenere proprio questo. - -\subsection{Testo}\label{ssec:text}\secidx[text]{Input protetto} -Quando del testo viene posto tra \lstinline+" "+ oppure \lstinline+' '+ allora -l'input viene considerato come testo normale ad eccezione per gli spazi: non sono -ammessi e devono essere inseriti con \lstinline+~+. -\begin{beschreibung} - \Befehl{ch}{ "<escaped text>" } - \Befehl{ch}{ '<escaped text>' } -\end{beschreibung} -\begin{beispiel} - \ch{"\ox{2,Ca}" O} \\ - \ch{"\ldots\," Na + "\ldots\," Cl2 -> "\ldots\," NaCl} \\ - \ch{'A~->~B'} -\end{beispiel} -Questo stratagemma sarà necessario in pochi casi; ma quando risulta difficoltoso -impiegare un comando all'interno di \cmd{ch} può essere utile applicare il modo protetto. - -\subsection{Matematica}\secidx[math]{Input protetto} -Quando si ha dell'input matematico, è sufficiente porlo tra \lstinline+$ $+. -L'output si distingue dal testo protetto (oltre che per il modo matematico) -anche per la presenza di uno spazio in seguito. Il motivo è che suppongo che -l'input matematico venga utilizzato soprattutto in luogo dei fattori -stechiometrici. -\begin{beschreibung} - \Befehl{ch}{ \string$<escaped math>\string$ } - \Befehl{ch}{ \string\(<escaped math>\string\) } -\end{beschreibung} -\begin{beispiel} - escaped text: \ch{"$x$" H2O} \\ - escaped math: \ch{$x$ H2O} \\ - also escaped math: \ch{\(x\) H2O} \\ - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} -\end{beispiel} - -Lo spazio seguente l'input matematico protetto può essere adattato. -\begin{beschreibung} - \option{math-space}{<skip>} Una lunghezza elastica. Default = - \code{.1667em plus .0333em minus .0117em} -\end{beschreibung} -\begin{beispiel} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \chemsetup[chemformula]{math-space=.25em} - \ch{$2n$ Na + $n$ Cl2 -> $2n$ NaCl} \\ - \ch{$A->B$} -\end{beispiel} -\secidx*{Input protetto} - -\section{Frecce}\label{sec:arrows}\secidx{Frecce} -\subsection{Tipi di frecce}\secidx[Tipi]{Frecce} -Le frecce vengono indicate nello stesso modo intuitivo di \paket{mhchem}. Ne esiste -una serie: -\begin{beschreibung} - \befehl{ch}{ -> } \ch{->} freccia semplice a destra - \befehl{ch}{ <- } \ch{<-} freccia semplice a sinistra - \befehl{ch}{ -/> } \ch{-/>} non reagisce (destra) - \befehl{ch}{ </- } \ch{</-} non reagisce (sinistra) - \befehl{ch}{ <-> } \ch{<->} doppia freccia di mesomeria - \befehl{ch}{ <> } \ch{<>} la reazione avviene in entrambe le direzioni - \befehl{ch}{ == } \ch{==} equazione stechiometrica - \befehl{ch}{ <=> } \ch{<=>} doppia freccia di equilibrio - \befehl{ch}{ \lstinline+<=>>+ } \ch{<=>>} equilibrio spostato a destra - \befehl{ch}{ \lstinline+<<=>+ } \ch{<<=>} equilibrio spostato a sinistra - \befehl{ch}{ <o> } \ch{<o>} freccia isolobale -\end{beschreibung} -Tutte le frecce sono disegnate con \TikZ. -\begin{beispiel} - \ch{H2 + Cl2 -> 2 HCl} \\ - \ch{H2O + CO3^2- <=> OH- + HCO3-} \\ - \ch{A <- B} \\ - \ch{\{[CH2=CH-CH2]- <-> [CH2-CH=CH2]- \}} \\ - \ch{A <> B} \\ - \ch{H+ + OH- <=>> H2O} \\ - \ch{2 NO2 <<=> N2O4} -\end{beispiel} - -\subsection{Etichettazione}\secidx[Etichettazione]{Frecce} -Le frecce hanno due argomenti opzionali per essere etichettate. -\begin{beschreibung} - \Befehl{ch}{ ->[<above>][<below>] } -\end{beschreibung} -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[a][b] B} \\ - \ch{A ->[\SI{100}{\celsius}] B} -\end{beispiel} -Il testo descrittivo può essere elaborato indipendentemente dalla freccia: basta -usare degli spazi. -\begin{beispiel} - \ch{A ->[H2O] B} \\ - \ch{A ->[ H2O ] B} \\ - \ch{A ->[ "\ox{2,Ca}" F2 ] B} \\ - \ch{A ->[$\Delta$,~ \[H+ \]] B} -\end{beispiel} - -Quando sono presenti degli spazi \chemformula elabora dapprima la parte tra -parentesi come un input normale. Le frecce leggono i loro argomenti solo \emph{dopo} -l'elaborazione. Come si può vedere, le frecce \enquote{crescono} con la lunghezza -dell'etichetta, mentre rimane costante la parte eccedente. Nell'ultimo esempio si -può inoltre vedere che le parentesi quadre all'interno degli argomenti dei comandi -freccia devono essere inserite con \cmd{[} e \cmd{]}; naturalmente al di fuori di -\cmd{ch} mantengono il loro comportamento normale. Questi comandi sono necessari -perché il metodo solitamente impiegato di racchiudere le parentesi quadre tra -parentesi graffe non funziona a causa del modo in cui \cmd{ch} legge il suo -argomento. -\begin{beispiel} - \ch{A ->[a] B} \\ - \ch{A ->[ab] B} \\ - \ch{A ->[abc] B} \\ - \ch{A ->[abc~abc] B} \\ - % needs the `chemfig' package: - \setatomsep{15pt} - \ch{A ->[ "\chemfig{-[:30]-[:-30]OH}" ] B} \\ - \ch{A ->[[]] B} vs. \ch{A ->[\[\]] B} -\end{beispiel} - -\subsection{Adattamento}\secidx[Adattamento]{Frecce} -Con le opzioni seguenti è possibile adattare la resa grafica delle frecce: -\begin{beschreibung} - \option{arrow-offset}{<dim>} La lunghezza della freccia eccedente l'etichetta (a - sinistra e destra). La lunghezza di una freccia vuota è il doppio di \code{arrow-offset}. - Una lunghezza di \TeX. Default = \code{.75em} -\option{arrow-min-length}{<dim>} La lunghezza minima che deve avere un errore, - se tale lunghezza è inferiore al doppio di \key{arrow-offset} più la larghezza - dell'etichetta. Default = \code{0pt} - \option{arrow-yshift}{<dim>} Sposta una freccia verso l'alto (valore positivo) o - verso il basso (valore negativo); una dimensione di \TeX. Default = \code{0pt} - \option{arrow-ratio}{<factor>} Il rapporto tra le lunghezze delle frecce di equilibrio - spostato: \code{.4} significa che la freccia più corta è lunga \num{0.4} volte - la freccia più lunga. Default = \code{.6} - \option{compound-sep}{<dim>} Lo spazio vuoto tra formule e freccia; una dimensione - di \TeX. Default = \code{.5em} - \option{label-offset}{<dim>} Lo spazio tra freccia ed etichette; una dimensione - di \TeX. Default = \code{2pt} - \option{label-style}{<font command>} Il corpo del font dell'etichetta. Default = - \lstinline+\footnotesize+ -\end{beschreibung} - -Il codice seguente mostra gli effetti delle varie opzioni sulla freccia \lstinline+<=>>+: -\begin{beispiel} - standard: \ch{A <=>>[x][y] B} \\ - più lunga: \ch[arrow-offset=12pt]{A <=>>[x][y] B} \\ - più alta: \ch[arrow-yshift=2pt]{A <=>>[x][y] B} \\ - più bilanciata: \ch[arrow-ratio=.8]{A <=>>[x][y] B} \\ - etichetta più distante: \ch[label-offset=4pt]{A <=>>[x][y] B} \\ - distanza maggiore dalle formule: \ch[compound-sep=2ex]{A <=>>[x][y] B} \\ - etichette più piccole: \ch[label-style=\tiny]{A <=>[x][y] B} -\end{beispiel} - -\subsection{Modificare i tipi di frecce}\label{sec:arrows_modify}\secidx[tipi!modificare]{Frecce} -Le frecce sono definite attraverso il comando -\begin{beschreibung} - \Befehl{DeclareChemArrow}{<tokens>}\ma{<tikz>} -\end{beschreibung} -\ma{<tokens>} sono i simboli sostituiti dal codice proprio della freccia. Ad esempio, -la freccia principale è stata definita attraverso -\begin{beispiel}[code only] - \DeclareChemArrow{->}{\draw[-cf] (cf_arrow_start) -- (cf_arrow_end) ;} -\end{beispiel} -Nel caso si desideri definire frecce proprie sono necessarie conoscenze fondamentali -di \TikZ\footnote{Si rimanda alla guida \textsf{pgfmanual}.}. Si consiglia l'uso -di alcune coordinate predefinite: -\begin{description} - \item[\code{(cf\_arrow\_start)}] L'inizio della freccia. - \item[\code{(cf\_arrow\_end)}] La fine della freccia. - \item[\code{(cf\_arrow\_mid)}] La metà della freccia. - \item[\code{(cf\_arrow\_mid\_start)}] L'inizio della freccia più breve nelle freccie - del tipo \lstinline+<=>>+. - \item[\code{(cf\_arrow\_mid\_end)}] La fine della freccia più breve nelle freccie - del tipo \lstinline+<=>>+. - \item[\code{cf}, \code{left cf}, \code{right cf}] Punte di frecce definite per - \chemformula. -\end{description} -\begin{beispiel} - \DeclareChemArrow{.>}{\draw[-cf,dotted,red] (cf_arrow_start) -- (cf_arrow_end);} - \DeclareChemArrow{n>}{\draw[-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{beispiel} -Quando si desidera ridefinire una freccia preesistente, è possibile usare uno dei -due comandi seguenti: -\begin{beschreibung} - \Befehl{RenewChemArrow}{<tokens>}\ma{<tikz>} - \Befehl{ShowChemArrow}{<tokens>} -\end{beschreibung} -Il secondo mostra la definizione attuale, il primo ridefinisce la freccia. -\begin{beispiel} - \texttt{\ShowChemArrow{->}} \\ - \RenewChemArrow{->}{\draw[->,red] (cf_arrow_start) -- (cf_arrow_end) ;} - \texttt{\ShowChemArrow{->}} \\ - \ch{A -> B} -\end{beispiel} -\secidx*{Frecce} - -\section{Didascalie di formule}\secidx{Didascalie di formule} -\subsection{Sintassi}\secidx[sintassi]{Didascalie di formule} -\chemformula ha una propria sintassi per scrivere del testo sotto ad una formula -chimica, che funziona in modo analogo agli argomenti opzionali delle frecce. -\begin{beschreibung} - \Befehl{ch}{ !(<name>)( <formula> ) } -\end{beschreibung} -Quando un punto esclamativo viene seguito da una coppia di parentesi tonde, -\chemformula fa il seguente: -\begin{beispiel} - \ch{!(ethanol)( CH2CH2OH )} -\end{beispiel} - -Quel che vale per le etichette delle frecce vale anche qui: lasciando degli spazi -le parti di input vengono elaborate a seconda del loro tipo prima che il testo -venga scritto sotto la formula. -\begin{beispiel} - \ch{!(water)(H2O)} \quad - \ch{!( "\textcolor{blue}{water}" )( H2O )} \quad - \ch{!( $2n-1$ )( H2O )} \quad - \ch{!( H2O )( H2O )} \quad - \ch{!(oxonium)( H3O+ )} -\end{beispiel} - -Se per qualche ragione si desidera avere un punto esclamativo \emph{senza} aggiungere -un testo sotto una formula, è sufficiente evitare di farlo seguire da parentesi. -\begin{beispiel} - \ch{H2O~(!)} \\ - \ch{A!{}()} -\end{beispiel} - -\subsection{Personalizzazione}\secidx[Personalizzazione]{Didascalie di formule} -\chemformula mette a disposizione due opzioni per adattare il testo: -\begin{beschreibung} - \option{name-format}{<commands>} Il formato del testo; può essere inserito un - input qualunque. Default = \lstinline+\scriptsize\centering+ - \option{name-width}{<dim>|auto} La larghezza del box nel quale viene posto il - testo: \code{auto} riconosce la larghezza della didascalia e imposta il box di - conseguenza. Default = \code{auto} -\end{beschreibung} -\begin{beispiel} - \ch{!(acido)( H2SO4 ) -> B} \\ - \ch[name-format=\sffamily\small]{!(acido)( H2SO4 ) -> B} \\ - \ch[name-format=\scriptsize N:~]{!(acido)( H2SO4 ) -> B} \\ - \ch[name-width=3em,name-format=\scriptsize\raggedright]{!(acido)( H2SO4 ) -> B} -\end{beispiel} -\secidx*{Didascalie di formule} - -\section{Formato e carattere}\label{sec:format}\secidx{Formato e carattere} -Come impostazione predefinita \chemformula non varia l'output delle formule. -Prendiamo come esempio un input privo di senso chimico per dimostrare tutte le -capacità di \chemformula: -\begin{beispiel} - \newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} - \sample -\end{beispiel} -\newcommand*\sample{\ch{H2C-C+C-CH=CH+ + CrO4^2- <=>[x][y] 2.5 Cl^{-.} + 3_1/2 Na*OH_{(aq)} + !(name)( A^n ) "\LaTeXe"}} -Ora variamo alcuni aspetti del testo e osserviamo i risultati: -\begin{beispiel}[below] - \sffamily Ciao \sample \\ - \ttfamily Ciao \sample \normalfont \\ - \bfseries Ciao \sample \normalfont \\ - \itshape Ciao \sample -\end{beispiel} -Come si osserva la maggior parte delle funzioni adattano le caratteristiche del -font circostante. - -Quando si vuole cambiare questo comportamento preimpostato oppure il formato di -default è possibile usare la seguente opzione: -\begin{beschreibung} - \option{format}{<anything>} Inserisce il codice desiderato all'inizio del comando - \cmd{ch}. -\end{beschreibung} -\begin{beispiel} - % blu e privo di grazie: - \definecolor{newblue}{rgb}{.1,.1,.5}\chemsetup[chemformula]{format=\color{newblue}\sffamily} - \sffamily Ciao \sample \\ - \ttfamily Ciao \sample \normalfont \\ - \bfseries Ciao \sample \normalfont \\ - \itshape Ciao \sample -\end{beispiel} - -Si possono inoltre variare specificatamente la famiglia, la serie e la forma del -font dell'output: -\begin{beschreibung} - \option{font-family}{<family>} Varia la famiglia con: \lstinline+\fontfamily{<family>}\selectfont+. - \option{font-series}{<series>} Varia la serie con: \lstinline+\fontseries{<series>}\selectfont+. - \option{font-shape}{<shape>} Varia la forma con \lstinline+\fontshape{<shape>}\selectfont+. -\end{beschreibung} -\begin{beispiel} - % sempre in nero: - \chemsetup[chemformula]{font-series=bx} - Ciao \sample \\ - \sffamily Ciao \sample \normalfont \\ - \chemsetup[chemformula]{font-family=lmr,font-series=m} Ciao \sample \normalfont \\ - \itshape Ciao \sample -\end{beispiel} - -Quando si impiegano \XeLaTeX\ oppure \LuaLaTeX\ avendo caricato il pacchetto -\paket{fontspec}, è possibile variare il carattere di \chemformula anche nel -modo seguente: -\begin{beschreibung} - \Option{font-spec}{\{<font>\}} oppure con opzioni - \Option{font-spec}{\{[<options>]<font>\}} -\end{beschreibung} -\begin{beispiel} - \chemsetup[chemformula]{font-spec={Linux Biolinum O}} \sample \\ - \chemsetup[chemformula]{font-spec={[Color=darkgray]Augie}} \sample \\ - \chemsetup[chemformula]{font-spec={Tipbrush Script}} \sample \\ - \chemsetup[chemformula]{font-spec={Latin Modern Sans}} \sample \\ - \bfseries \sample \normalfont \\ - \chemsetup[chemformula]{font-spec={Feathergraphy Decoration}} \sample -\end{beispiel} -\secidx*{Formato e carattere} - -\section{Utilizzo in ambienti matematici}\secidx{Ambienti matematici} -Il comando \cmd{ch} può essere utilizzato in ambienti matematici; riconosce -\lstinline+\\+ e \lstinline+&+ e ne passa oltre i contenuti; tuttavia gli -argomenti opzionali di \lstinline+\\+ non possono essere utilizzati all'interno -di \cmd{ch}. -\begin{beispiel} - \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{beispiel} -\secidx*{Ambienti matematici} - -\section{Ulteriori esempi} -Questo paragrafo mostra ulteriori esempi per l'impiego di \chemformula, ed in -particolare l'accoppiamento agli ambienti \code{reaction} di \chemmacros. - -\begin{beispiel} - \begin{reaction}[Sintesi di alcani] - !(gas~di~sintesi)( $n$ CO + $(2n+1)$ H2 ) ->[\SI{200}{\celsius}][\[CoNi\]] C_{$n$}H_{$2n+2$} + $n$ H2O - \end{reaction} -\end{beispiel} - -\begin{beispiel} - \begin{reactions*} - "a)" && CH4 + Cl2 &-> CH3Cl + HCl && "{\small clorometano/cloruro~di~metile}" \\ - "b)" && CH3Cl + Cl2 &-> CH2Cl2 + HCl && "{\small diclorometano/cloruro~di~metilene}" \\ - "c)" && CH2Cl2 + Cl2 &-> CHCl3 + HCl && "{\small triclorometano/cloroformio}" \\ - "d)" && CHCl3 + Cl2 &-> CCl4 + HCl && "{\small tetraclorometano/tetracloruro~di~carbonio}" - \end{reactions*} -\end{beispiel} - -\begin{beispiel} - \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 + energia~di~legame} \\ - \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{beispiel} - -\begin{beispiel} - \begin{reactions*} - CH3MgBr + "\ox*{1,Cu}" X &-> "\glqq" CH3 "\ox*{1,Cu}\grqq" + MgBrX "\qquad X~$=$~Br,I,CN" \\ - 2 MeLi + CuI &-> !(dimetilcuprato~(cuprato~di~Gilmann))( Me2CuLi ) + Li - \end{reactions*} -\end{beispiel} - -\begin{beispiel} - % 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{beispiel} - -L'esempio seguente mostra come si può rappresentare la semplificazione di sistemi -di reazioni\footnote{Ispirato da una domanda su TeX.SE: -\url{http://tex.stackexchange.com/q/30118/5049}}. -\begin{beispiel} - % needs `cancel' - \begin{align*} - \centering - \ch{\cancel{HCOOH\aq} + H2O\lqd{} &<=> H3O^+\aq{} + \cancel{HCOO^-\aq}} \\ - \ch{\cancel{HCOO^-\aq} + H2O\lqd{} &<=> \cancel{HCOOH\aq} + OH^-\aq}\\[-1ex] - \cline{1-2} - \ch{H2O\lqd{} + H2O\lqd{} &<=> H3O^+\aq{} + OH^-\aq} - \end{align*} -\end{beispiel} -\secidx*{CHEMFORMULA} - -\part{\texorpdfstring{\Ghsystem}{ghsystem}}\label{part:ghsystem}\secidx{GHSYSTEM} -\section{Setup} -Tutte le opzioni di \ghsystem appartengono al modulo \textcolor{module}{\code{ghsystem}}. -Possono essere impostate anche con -\begin{beschreibung} - \Befehl{chemsetup}[ghsystem]{<options>} oppure - \Befehl{chemsetup}{ghsystem/<option1>,ghsystem/<option2>} -\end{beschreibung} -Inoltre possono essere passate anche localmente ai comandi come argomenti opzionali. - -\section{Richiamare le frasi di rischio (H) e sicurezza (P)}\secidx{Frasi di rischio e sicurezza}[Frasi di rischio e sicurezza] -\subsection{Chiamata semplice}\secidx[Chiamata]{GHSYSTEM} -È generalmente semplice richiamare le frasi: -\begin{beschreibung} - \Befehl{ghs}[<options>]{<type>}\ma{<number>} - \Befehl[ghsa]{ghs*}[<options>]{<type>}\ma{<number>} -\end{beschreibung} -Esistono tre tipi di frasi: \code{h}, \code{euh} e \code{p}; l'argomento \ma{<type>} -non distingue tra maiuscole e minuscole. -\begin{beispiel} - \ghs{h}{200} \\ - \ghs{H}{224} \\ - \ghs{euh}{001} \\ - \ghs{Euh}{202} \\ - \ghs{p}{201} -\end{beispiel} - -La versione asteriscata nasconde il numero e restituisce solo la frase. Quando si -desidera nascondere la frase e richiamare solo il numero, è possibile utilizzare -l'opzione seguente: -\begin{beschreibung} - \Option{hide}{\default{true}|false} -\end{beschreibung} - -Inoltre esiste un'opzione per adattare l'output. -\begin{beschreibung} - \option{space}{<space command>} Spazio tra \code{<type>} e \code{<number>}. -\end{beschreibung} -\begin{beispiel} - \ghs{h}{200} \\ - \ghs[space=\,]{h}{200} \\ - \ghs*{h}{200} \\ - \ghs[hide]{h}{200} -\end{beispiel} - -\subsection{Frasi con segnaposto}\secidx[Segnaposto]{GHSYSTEM} -Alcune frasi utilizzano dei segnaposto; ve ne sono quattro diversi: -\begin{itemize} - \item \textit{\textless indicare la via di esposizione se è accertato che - nessun'altra via di esposizione comporta il medesimo pericolo\textgreater} - \item \textit{\textless indicare l'effetto specifico, se noto\textgreater} - \item \textit{\textless o indicare tutti gli organi interessati, se noti\textgreater} - \item \textit{\textless denominazione della sostanza sensibilizzante\textgreater} -\end{itemize} - -Da predefinito sono nascosti tutti tranne l'ultimo, che deve essere sostituito. -Possono essere resi visibili attraverso l'opzione -\begin{beschreibung} - \option{fill-in}{\default{true}|false} Default = \code{false} -\end{beschreibung} -\begin{beispiel}[below] - \ghs{h}{340} \\ - \ghs[fill-in]{h}{340} \\ - \ghs{h}{360} \\ - \ghs[fill-in]{h}{360} \\ - \ghs{h}{370} \\ - \ghs[fill-in]{h}{370} \\ - \ghs{euh}{208} \\ - \ghs[fill-in]{euh}{208} -\end{beispiel} - -Con le opzioni seguenti è possibile sostituire i segnaposto: -\begin{beschreibung} - \option{exposure}{<text>} segnaposto di esposizione - \option{effect}{<text>} segnaposto di effetto - \option{organs}{<text>} segnaposto di organo - \option{substance}{<text>} segnaposto di sostanza -\end{beschreibung} -\begin{beispiel} - \ghs[exposure=In questo modo si è esposti al pericolo.]{h}{340} \\ - \ghs[effect=Questi sono gli effetti.]{h}{360} \\ - \ghs[organs=quest'organo]{h}{370} \\ - \ghs[substance=sostanza]{euh}{208} -\end{beispiel} - -\subsection{Frasi con buchi}\secidx[Frasi con buchi]{GHSYSTEM} -Alcune frasi hanno dei \enquote{buchi}: -\begin{beispiel} - \ghs{p}{301} \\ - \ghs{p}{401} \\ - \ghs{p}{411} \\ - \ghs{p}{413} -\end{beispiel} - -Con le seguenti opzioni questi buchi possono essere riempiti: -\begin{beschreibung} - \option{text}{<text>} Riempie il \enquote{buco invisibile} che segue un doppio - punto. - \option{dots}{<text>} Riempie il buco indicato da \enquote{\ldots}. - \option{C-temperature}{<num>} Inserisce la temperatura in Celsius. - \option{F-temperature}{<num>} Inserisce la temperatura in Fahrenheit. - \option{kg-mass}{<num>} Inserisce la massa in chilogrammi. - \option{lbs-mass}{<num>} Inserisce la massa in libbre. -\end{beschreibung} -\begin{beispiel} - \ghs[dots=Contattare un medico!]{p}{301} \\ - \ghs[text=qui]{p}{401} \\ - \ghs[C-temperature=50, F-temperature=122]{p}{411} \\ - \ghs[kg-mass=5.0, lbs-mass=11, C-temperature=50, F-temperature=122]{p}{413} -\end{beispiel} - -\subsection{Frasi combinate}\secidx[Frasi combinate]{GHSYSTEM} -Esistono alcune frasi combinate. Vengono inserite con un \code{+} tra i numeri: -\begin{beispiel}[below] - \ghs{p}{235+410} \\ - \ghs{p}{301+330+331} -\end{beispiel} - -Si noti che sono valide solo le combinazioni ufficiali. \emph{Non è possibile -combinare le frasi a piacere}. -\secidx*{Frasi di rischio e sicurezza} - -\section{Pittogrammi}\secidx{Pittogrammi} -\subsection{Le immagini} -Il \ac{ghs} contiene alcuni pittogrammi: - -\ghspic{explos} \ghspic{flame} \ghspic{flame-O} \ghspic{bottle} \ghspic{acid} -\ghspic{skull} \ghspic{exclam} \ghspic{health} \ghspic{aqpol} - -Il comando -\begin{beschreibung} - \Befehl{ghspic}[<options>]{<name>} -\end{beschreibung} -li carica. La tabella~\ref{tab:ghs_pictograms} mostra tutti i pittogrammi e i nomi -dei loro file, o meglio: mostra i nomi dei file da utilizzare con il comando \cmd{ghspic}. -In realtà i file si chiamano \lstinline=ghsystem_<name>.<filetype>=, dove -\code{<filetype>} è un'estensione tra \code{eps}, \code{pdf}, \code{jpg} -oppure \code{png}, vedi anche il paragrafo~\ref{ssec:picture_type}. -\begin{beispiel} - \ghspic{skull} -\end{beispiel} - -Se si preferisce variare la dimensione, è disponibile l'opzione -\begin{beschreibung} - \option{scale}{<factor>} Scala il pittogramma. Default = \code{1} -\end{beschreibung} -Le immagini originali sono piuttosto grandi. La preimpostazione (fattore = $1$) -scala le immagini ad un ventesimo della loro dimensione reale. -\begin{beispiel} - \ghspic[scale=2]{skull} -\end{beispiel} - -Se si desidera utilizzare opzioni speciali di \lstinline=\includegraphics=, ad -esempio per ruotare il pittogramma, va usata l'opzione seguente: -\begin{beschreibung} - \Option{includegraphics}{\{<includegraphics keyvals>\}} -\end{beschreibung} -\begin{beispiel} - \ghspic[includegraphics={angle=90}]{skull} -\end{beispiel} - -\begin{longtable}{>{\ttfamily}ll>{\ttfamily}ll} - \caption{Tutti i pittogrammi \ac{ghs} disponibili.\label{tab:ghs_pictograms}} \\ - \toprule - \normalfont\bfseries nome & \bfseries pittogramma & \normalfont\bfseries nome & \bfseries pittogramma \\ - \midrule\endfirsthead - \toprule - \normalfont\bfseries nome & \bfseries pittogramma & \normalfont\bfseries nome & \bfseries pittogramma \\ - \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{Il tipo dell'immagine dipende dal compilatore}\label{ssec:picture_type} -L'utente probabilmente è a conoscenza che non tutti i tipi di immagini sono compatibili -con ciascun compilatore. \pdfTeX{} in modalità \acs{dvi} richiede file di tipo -\code{eps}, mentre \pdfTeX{} in modalità \acs{pdf}, \XeTeX{} e \LuaTeX{} convertono -file di tipo \code{eps} in \code{pdf}, ammesso che l'utente abbia diritti di scrittura -nella cartella contenente le immagini. Gli ultimi elencati sanno tuttavia -includere immagini di tipo \code{jpg} e \code{png} senza problemi, mentre -\pdfTeX{} in modalità \acs{dvi} non ne è capace. - -Per risolvere il problema \ghsystem verifica quale compilatore viene utilizzato, -e nel caso di \pdfTeX{} anche la modalità di utilizzo; poi sceglie quale immagine -utilizzare tra \code{eps} e \code{png} per i pittogrammi. In ogni caso il tipo di -immagine può essere selezionato a piacimento attraverso l'opzione -\begin{beschreibung} - \Option{pic-type}{eps|pdf|jpg|png} -\end{beschreibung} -\secidx*{Pittogrammi} - -\section{Lingue disponibili}\label{sec:ghsystem_language} -Al momento attuale le frasi H e P sono disponibili solo in inglese, tedesco ed -italiano. Il pacchetto reagisce all'opzione \key[option]{italian} di \chemmacros, -ma non riconosce (ancora) la lingua impostata con \paket{babel} o \paket{polyglossia}. - -È possibile scegliere la lingua anche in modo esplicito. -\begin{beschreibung} - \Option{language}{english|german|italian} -\end{beschreibung} -\begin{beispiel} - \ghs{h}{201} - - \chemsetup[ghsystem]{language=english} - \ghs{h}{201} -\end{beispiel} - -È mia intenzione implementare ulteriori lingue in futuro; tuttavia potrebbe volerci -ancora del tempo. Chi volesse partecipare a \ghsystem e trascrivere le frasi in -un'altra lingua, è invitato a contattarmi% -\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}; -gli metterò a disposizione un file template, un \acs{pdf} contenenti le traduzioni -officiali ed ogni ulteriore aiuto necessario. - -\section{Lista delle frasi}\secidx{Lista delle frasi} -Se si desidera elencare tutte le frasi, è possibile utilizzare il comando -\begin{beschreibung} - \Befehl{ghslistall}[<options>] -\end{beschreibung} - -Questo comando crea una tabella di tutte le frasi nell'ambiente \lstinline=longtable= -del pacchetto \paket{longtable}. Il suo aspetto può essere adattato con le opzioni -seguenti. -\begin{beschreibung} - \option{table-head-number}{<text>} Default = \code{Numero} - \option{table-head-text}{<text>} Default = \code{Frase} - \option{table-next-page}{<text>} Default = \code{Continua nella prossima pagina} - \option{table-caption}{<text>} Didascalia della tabella. Default = \code{Elenco - di tutte le frasi H, EUH e P.} - \option{table-caption-short}{<text>} \code{<short>} in \lstinline=\caption[<short>]{<text>}=. - \option{table-label}{<text>} L'etichetta per l'uso di riferimenti incrociati con - i comandi del tipo di \lstinline=\ref=. Default = \code{tab:ghs-hp-statements} - \option{table-row-sep}{<dim>} Distanza tra le righe. Una dimensione di \TeX. - Default = \code{3pt} - \option{table-rules}{\default{default}|booktabs|none} Lo stile delle righe - orizzontali della tabella. \code{default} utilizza \lstinline=\hline=, \code{booktabs} - utilizza \lstinline=\toprule=, \lstinline=\midrule= e \lstinline=\bottomrule=. - Questa opzione richiede che sia caricato il pacchetto \paket{booktabs}. Default - = \code{default} - \option{table-top-head-rule}{\default{default}|booktabs|none} Varia la riga in - modo esplicito. Default = \code{default} - \option{table-head-rule}{\default{default}|booktabs|none} Varia la riga in modo - esplicito. Default = \code{default} - \option{table-foot-rule}{\default{default}|booktabs|none} Varia la riga in modo - esplicito. Default = \code{default} - \option{table-last-foot-rule}{\default{default}|booktabs|none} Varia la riga in - modo esplicito. Default = \code{default} -\end{beschreibung} - -Il codice seguente mostra come è stata creata la tabella~\ref{tab:ghs-hp-statements}: -\begin{beispiel}[code only] - \ghslistall[fill-in,table-rules=booktabs] -\end{beispiel} - -\ghslistall[fill-in,table-rules=booktabs] -\secidx*{Lista delle frasi}\secidx*{GHSYSTEM} - -\appendix -\part{Appendice}\index{APPENDICE@\textbf{APPENDICE}} -\addsec{Panoramica delle opzioni e modalità di adattamento}\label{sec:overview}\secidx{Panoramica delle opzioni (chemmacros)}[Panoramica delle opzioni] -\minisec{Opzioni} -Nella tabella seguente sono elencate tutte le opzioni disponibili in \chemmacros. -Tutte le opzioni che appartengono ad un particolare modulo possono essere impostate -tramite -\begin{beschreibung} - \Befehl{chemsetup}[<module>]{<options>} oppure - \Befehl{chemsetup}{<module>/<options>} -\end{beschreibung} -Alcune opzioni possono essere richiamate senza assegnargli un valore; in tal caso -verrà utilizzato il valore \default{sottolineato}. Le opzioni dei moduli -\code{\textcolor{module}{chemformula}} e \code{\textcolor{module}{ghssystem}} non -sono elencate a parte. -\small -\begin{longtable}{>{\ttfamily\color{key}\hspace{5mm}}l>{\ttfamily\color{module}}l>{\ttfamily}l>{\ttfamily}ll} - \toprule - \normalfont\normalcolor\bfseries opzione & - \normalfont\normalcolor\bfseries modulo & - \normalfont\bfseries valori & - \normalfont\bfseries default & \\ - \midrule - \endhead - \bottomrule - \endfoot - \multicolumn{5}{l}{opzioni globali:} \\ - bpchem & option & \default{true}|false & false & pagina \pageref{key:option_bpchem} \\ - circled & option & \default{formal}|all|none & formal & pagina \pageref{key:option_circled} \\ - circletype & option & chem|math & chem & pagina \pageref{key:option_circletype} \\ - cmversion & option & 1|2|bundle & bundle & pagina \pageref{key:option_cmversion} \\ - ghsystem & option & \default{true}|false & true & pagina \pageref{key:option_ghsystem} \\ - iupac & option & auto|restricted|strict & auto & pagina \pageref{key:option_iupac} \\ - language & option & <language> & english & pagina \pageref{key:option_language} \\ - method & option & chemformula|mhchem & chemformula & pagina \pageref{key:option_method} \\ - Nu & option & chemmacros|mathspec & chemmacros & pagina \pageref{key:option_Nu} \\ - strict & option & \default{true}|false & false & pagina \pageref{key:option_strict} \\ - synchronize & option & \default{true}|false & false & pagina \pageref{key:option_synchronize} \\ - greek & option & math|textgreek|\default{upgreek} & upgreek & pagina \pageref{key:option_greek} \\ - xspace & option & \default{true}|false & true & pagina \pageref{key:option_xspace} \\ - \multicolumn{5}{l}{\cmd{ba}, \cmd{Nu}:} \\ - elpair & particle & \default{dots}|dash|false & false & pagina \pageref{key:particle_elpair} \\ - \multicolumn{5}{l}{comandi IUPAC:} \\ - break-space & iupac & <dim> & .01em & pagina \pageref{key:iupac_break-space} \\ - bridge-number & iupac & sub|super & sub & pagina \pageref{key:iupac_bridge-number} \\ - cip-kern & iupac & <dim> & .075em & pagina \pageref{key:iupac_cip-kern} \\ - coord-use-hyphen & iupac & \default{true}|false & true & pagina \pageref{key:iupac_coord-use-hyphen} \\ - hyphen-pre-space & iupac & <dim> & .01em & pagina \pageref{key:iupac_hyphen-pre-space} \\ - hyphen-post-space & iupac & <dim> & -.03em & pagina \pageref{key:iupac_hyphen-post-space} \\ - \multicolumn{5}{l}{\cmd{DeclareChemLatin}:} \\ - format & latin & <anything> & \lstinline=\itshape= & pagina \pageref{key:latin_format} \\ - \multicolumn{5}{l}{\cmd{pch}, \cmd{mch}, \cmd{fpch}, \cmd{fmch}:} \\ - append & charges & \default{true}|false & false & pagina \pageref{key:charges_append} \\ - \multicolumn{5}{l}{acido/base:} \\ - p-style & acid-base & slanted|italics|upright & upright & pagina \pageref{key:acid-base_p-style} \\ - \multicolumn{5}{l}{\cmd{ox}:} \\ - align & ox & center|right & center & pagina~\pageref{key:ox_align} \\ - parse & ox & \default{true}|false & true & pagina \pageref{key:ox_parse} \\ - roman & ox & \default{true}|false & true & pagina \pageref{key:ox_roman} \\ - pos & ox & top|super|side & top & pagina \pageref{key:ox_pos} \\ - explicit-sign & ox & \default{true}|false & false & pagina \pageref{key:ox_explicit-sign} \\ - decimal-marker & ox & comma|point & point & pagina \pageref{key:ox_decimal-marker} \\ - align & ox & center|right & center & pagina \pageref{key:ox_align}\\ - \multicolumn{5}{l}{\cmd{OX}, \cmd{redox}:} \\ - dist & redox & <dim> & .6em & pagina \pageref{key:redox_dist} \\ - sep & redox & <dim> & .2em & pagina \pageref{key:redox_sep} \\ - \multicolumn{5}{l}{\cmd{Enthalpy}, \cmd{Entropy}, \cmd{Gibbs}:} \\ - exponent & & <anything> & \cmd{standardstate} & pagina \pageref{key:none_exponent} \\ - delta & & <anything>|false & & pagina \pageref{key:none_delta} \\ - subscript & & left|right & & pagina \pageref{key:none_subscript} \\ - unit & & <unit> & & pagina \pageref{key:none_unit} \\ - \multicolumn{5}{l}{\cmd{DeclareChemState}, \cmd{RenewChemState}:} \\ - exponent & & <anything> & \cmd{standardstate} & pagina \pageref{key:none_exponent} \\ - delta & & <anything>|false & & pagina \pageref{key:none_delta} \\ - subscript & & <anything> & & pagina \pageref{key:none_subscript} \\ - subscript-left & & \default{true}|false & & pagina \pageref{key:none_subscript-left} \\ - \multicolumn{5}{l}{\cmd{State}:} \\ - exponent & state & <anything> & \cmd{standardstate} & pagina \pageref{key:state_exponent} \\ - delta & state & <anything>|false & & pagina \pageref{key:state_delta} \\ - subscript-left & state & \default{true}|false & & pagina \pageref{key:state_subscript-left} \\ - \multicolumn{5}{l}{\cmd{NMR}, \env{spectroscopy}{}:} \\ - unit & nmr & <unit> & \cmd{mega}\cmd{hertz} & pagina \pageref{key:nmr_unit} \\ - nucleus & nmr & \{<num>,<atom symbol>\} & \{1,H\} & pagina \pageref{key:nmr_nucleus} \\ - format & nmr & <anything> & & pagina \pageref{key:nmr_format} \\ - pos-number & nmr & side|sub & side & pagina \pageref{key:nmr_pos-number} \\ - coupling-unit & nmr & <unit> & \lstinline+\hertz+ & pagina \pageref{key:nmr_coupling-unit} \\ - parse & nmr & \default{true}|false & true & pagina \pageref{key:nmr_parse} \\ - delta & nmr & <anything> & & pagina \pageref{key:nmr_delta} \\ - list & nmr & \default{true}|false & false & pagina \pageref{key:nmr_list} \\ - list-setup & nmr & & (vedi il testo) & pagina \pageref{key:nmr_list-setup} \\ - use-equal & nmr & \default{true}|false & false & pagina \pageref{key:nmr_use-equal} \\ - \multicolumn{5}{l}{\cmd{DeclareChemReaction}:} \\ - star & & \default{true}|false & false & pagina \pageref{key:none_star} \\ - arg & & \default{true}|false & false & pagina \pageref{key:none_arg} \\ - list-name & reaction & <anything> & Elenco delle reazioni & pagina \pageref{key:reaction_list-name} \\ - list-entry & reaction & <anything> & Reazione & pagina \pageref{key:reaction_list-entry} \\ - \multicolumn{5}{l}{\cmd{mhName}:} \\ - align & mhName & <alignment> & \cmd{centering} & pagina \pageref{key:mhName_align} \\ - format & mhName & <commands> & & pagina \pageref{key:mhName_format} \\ - fontsize & mhName & <fontsize> & \cmd{tiny} & pagina \pageref{key:mhName_fontsize} \\ - width & mhName & <dim> & auto & pagina \pageref{key:mhName_width} \\ - \multicolumn{5}{l}{fasi:} \\ - pos & phases & side|sub & side & pagina \pageref{key:phases_pos} \\ - space & phases & <dim> & .1333em & pagina \pageref{key:phases_space} \\ - \multicolumn{5}{l}{\cmd{newman}:} \\ - angle & newman & <angle> & 0 & pagina \pageref{key:newman_angle} \\ - scale & newman & <factor> & 1 & pagina \pageref{key:newman_scale} \\ - ring & newman & <tikz> & & pagina \pageref{key:newman_ring} \\ - atoms & newman & <tikz> & & pagina \pageref{key:newman_atoms} \\ - back-atoms & newman & <tikz> & & pagina \pageref{key:newman_back-atoms} \\ - \multicolumn{5}{l}{\cmd{orbital} \ttfamily <type> = s|p|sp|sp2|sp3:} \\ - phase & orbital/<type> & +|- & + & pagina \pageref{key:orbital_phase} \\ - scale & orbital/<type> & <factor> & 1 & pagina \pageref{key:orbital_scale} \\ - color & orbital/<type> & <color> & black & pagina \pageref{key:orbital_color} \\ - angle & orbital/<type> & <angle> & 90 & pagina \pageref{key:orbital_angle} \\ - half & orbital/p & \default{true}|false & false & pagina \pageref{key:orbital_half} \\ - overlay & orbital & \default{true}|false & false & pagina \pageref{key:orbital_overlay} \\ - opacity & orbital & <num> & 1 & pagina \pageref{key:orbital_opacity} -\end{longtable} -\normalsize - -\minisec{Comandi di personalizzazione} -È stata presentata una serie di comandi che mostrano le possibilità di adattare -\chemmacros. Vengono elencati nuovamente qui sotto. -\begin{beschreibung} - \befehl{DeclareChemArrow} Definisce una nuova freccia; vedi a - pagina~\pageref{cmd:DeclareChemArrow}. - \befehl{RenewChemArrow} Modifica una freccia già esistente. - \befehl{DeclareChemBond} Definisce un nuovo legame; vedi a - pagina~\pageref{cmd:DeclareChemBond}. - \befehl{RenewChemBond} Ridefinisce un legame. - \befehl{DeclareChemBondAlias} Definisce un alias per un legame esistente. - \befehl{DeclareChemIUPAC} Definisce un nuovo comando IUPAC; vedi a - pagina~\pageref{cmd:DeclareChemIUPAC}. - \befehl{RenewChemIUPAC} Ridefinisce un comando IUPAC. - \befehl{DeclareChemLatin} Definisce un nuovo termine latino; vedi a - pagina~\pageref{cmd:DeclareChemLatin}. - \befehl{RenewChemLatin} Ridefinisce un termine latino. - \befehl{DeclareChemNMR} Definisce un nuovo comando NMR; vedi a - pagina~\pageref{cmd:DeclareChemNMR}. - \befehl{RenewChemNMR} Ridefinisce un comando NMR. - \befehl{DeclareChemParticle} Definisce una nuova particella; vedi a - pagina~\pageref{cmd:DeclareChemParticle}. - \befehl{RenewChemParticle} Ridefinisce una particella. - \befehl{DeclareChemPhase} Definisce un nuovo comando di fase; vedi a - pagina~\pageref{cmd:DeclareChemPhase}. - \befehl{RenewChemPhase} Ridefinisce un comando di fase. - \befehl{DeclareChemReaction} Definisce un nuovo ambiente di reazione; vedi a - pagina~\pageref{cmd:DeclareChemReaction}. - \befehl{DeclareChemState} Definisce una nuova grandezza di stato; vedi a - pagina~\pageref{cmd:DeclareChemState}. - \befehl{RenewChemState} Ridefinisce una grandezza di stato. -\end{beschreibung} -\secidx*{Panoramica delle opzioni (chemmacros)}[Panoramica delle opzioni] - -\addsec{Suggerimenti e avvisi di bug} -Ogni feedback riguardante \chemmacros, \chemformula e \ghsystem è il benvenuto! -Se avete proposte, se mancano delle funzionalità oppure vengono notati dei bug, -non esitate a contattarmi. Se trovate degli errori, siano essi di natura chimica, -di documentazione sbagliata ecc.\ sarei grato di una breve e-mail% -\footnote{\href{mailto:contact@mychemistry.eu}{contact@mychemistry.eu}}. - -Se trovate un bug, sarebbe il meglio mandarmi un esempio minimale con cui sia possibile -riprodurre il bug. È anche possibile segnalaro come \enquote{Issue} su -\url{https://bitbucket.org/cgnieder/chemmacros/}. - -Ringrazio tanto anche tutti coloro da cui ho già avuto segnalazioni, in particolare -(in ordine alfabetico): -\begin{itemize} - \item Peter Cao - \item Christina Lüdigk - \item Dr.\ Paul King - \item Jonas Rivetti (traduzione delle frasi H e P in italiano; molte grazie anche - per la traduzione del manuale!) - \item Christoph Schäfer - \item Timo Stein -\end{itemize} - -\printbibliography - -{\catcode`\^=11 \catcode`\#=11 \catcode`\|=11 -\printindex} - -\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf Binary files differnew file mode 100644 index 00000000000..eefcfbf083a --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.pdf diff --git a/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex new file mode 100644 index 00000000000..9ca8cd2b3d7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chemmacros/ghsystem_en.tex @@ -0,0 +1,663 @@ +% arara: xelatex +% !arara: biber +% !arara: xelatex +% !arara: xelatex +\documentclass[DIV11,toc=index,toc=bib]{cnpkgdoc} +\docsetup{ + pkg = {[greek=newtx]chemmacros} , + language = en, + title = the \Chemmacros\ bundle, + subtitle = { + 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}}, + modules = true, + code-box = {skipabove=1ex,skipbelow=1ex}, + label = {}, + name = ghsystem , + url = https://bitbucket.org/cgnieder/chemmacros/ +} +\usepackage{booktabs,cancel} +\usepackage{fontspec} +\usepackage[oldstyle,proportional]{libertine} +\usepackage[libertine]{newtxmath} +\usepackage{libertinehologopatch} +\setmonofont[Scale=MatchLowercase]{Bitstream Vera Sans Mono} + +\cnpkgusecolorscheme{friendly} +\renewcommand*\othersectionlevelsformat[3]{% + \textcolor{main}{#3\autodot}\enskip} +\renewcommand*\partformat{% + \textcolor{main}{\partname~\thepart\autodot}} + +\usepackage{fnpct} +\usepackage[biblatex]{embrac} +\ChangeEmph{[}[,.02em]{]}[.055em,-.08em] +\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em] + +\pagestyle{headings} + +\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/font-spec={[Numbers=Lining]Linux Libertine O} +} +\colorlet{chemformula}{darkgray} + +\sisetup{ + detect-mode=false, + mode=text, + text-rm=\addfontfeatures{Numbers={Proportional,Lining}} +} + +\usepackage{filecontents} + +\begin{filecontents*}{\jobname.ist} + preamble "\\begin{theindex}\n Section titles are indicated \\textbf{bold}, + packages \\textsf{sans serif}, commands \\code{\\textbackslash\\textcolor{code}{brown}}, + options \\textcolor{key}{\\code{yellow}} and modules (only \\chemmacros) + \\textcolor{module}{\\code{blue}}.\\newline\n\n" + heading_prefix "{\\bfseries " + heading_suffix "\\hfil}\\nopagebreak\n" + headings_flag 1 + delim_0 "\\dotfill\\hyperpage{" + delim_1 "\\dotfill\\hyperpage{" + delim_2 "\\dotfill\\hyperpage{" + delim_r "}\\textendash\\hyperpage{" + delim_t "}" + suffix_2p "\\nohyperpage{\\,f.}" + suffix_3p "\\nohyperpage{\\,ff.}" +\end{filecontents*} + +\usepackage[backend=biber,style=alphabetic,maxbibnames=20]{biblatex} +\addbibresource{\jobname.bib} +\begin{filecontents*}{\jobname.bib} +@book{iupac:greenbook, + author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and + Bertil Holmström and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and + Franco Pavese and Martin Quack and Jürgen Stohner and Herbert L. Strauss and + Michio Takami and Anders J Thor}, + title = {“Quantities, Symbols and Units in Physical Chemistry”, \acs{iupac} + Green Book}, + 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}, + 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} + +\pgfdeclaredecoration{penciline}{initial}{ + \state{initial}[ + width=+\pgfdecoratedinputsegmentremainingdistance, + auto corner on length=1mm + ]{ + \pgfpathcurveto% + {% From + \pgfqpoint + {\pgfdecoratedinputsegmentremainingdistance} + {\pgfdecorationsegmentamplitude} + } + {% Control 1 + \pgfmathrand + \pgfpointadd + {\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}} + {% + \pgfqpoint + {-\pgfdecorationsegmentaspect\pgfdecoratedinputsegmentremainingdistance}% + {\pgfmathresult\pgfdecorationsegmentamplitude} + } + } + {%TO + \pgfpointadd + {\pgfpointdecoratedinputsegmentlast} + {\pgfpoint{1pt}{1pt}} + } + } + \state{final}{} +} +\tikzset{pencil/.style={decorate,decoration=penciline}} + +\TitlePicture{% + \ch[font-spec={Augie}]{ + 2 "\OX{o1,\ox{0,Na}}" + "\OX{r1,\ox{0,Cl}}" {}2 + -> + 2 "\OX{o2,\ox{+1,Na}}" {}+ + 2 "\OX{r2,\ox{-1,Cl}}" {}- + } + \redox(o1,o2)[red,pencil,-cf]{\small\ch[font-spec={[Color=red]Augie},math-space=.3em]{$-$ 2 e-}} + \redox(r1,r2)[blue,pencil,-cf][-1]{\small\ch[font-spec={[Color=blue]Augie},math-space=.3em]{$+$ 2 e-}}} + +\addcmds{ + a, abinitio, AddRxnDesc, anti, aq, aqi, + b, ba, bond, bottomrule, bridge, + cancel, cd, cdot, ce, cee, celsius, centering, changechemgreeksymbol, + chemabove, Chemalpha, Chembeta, Chemgamma, ChemGamma, Chemdelta, + ChemDelta, chemfig, chemname, Chemomega, Chemphi, ChemPhi, chemsetup, cip, + cis, ch, clap, cnsetup, CNMR, color, cstack, + cstsetup, + d, D, data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias, + DeclareChemIUPAC, DeclareChemLatin, DeclareChemNMR, DeclareChemParticle, + DeclareChemPhase, DeclareChemReaction, DeclareChemState, DeclareInstance, + DeclareSIUnit, definecolor, delm, delp, Delta, Dfi, draw, + E, el, electronvolt, ElPot, endo, Enthalpy, enthalpy, Entropy, + footnotesize, fmch, fpch, fscrm, fscrp, + g, gas, ghs, ghslistall, ghspic, Gibbs, glqq, gram, grqq, + H, hapto, HNMR, Helmholtz, hertz, hspace, + includegraphics, insitu, intertext, invacuo, iupac, IUPAC, + J, joule, + Ka, Kb, kilo, Kw, + L, latin, lewis, Lewis, Lfi, listofreactions, lqd, ltn, + mch, mega, meta, metre, mhName, midrule, milli, mmHg, mole, + N, nano, nicefrac, newchemgreekmapping, newman, NMR, Nu, Nuc, num, numrange, + O, ominus, orbital, ortho, oplus, ox, OX, + p, P, para, pch, per, percent, pgfarrowsdeclarealias, pgfarrowsrenewalias, + pH, phase, phi, Phi, photon, pKa, pKb, pOH, pos, positron, Pot, prt, + R, Rad, redox, RenewChemArrow, RenewChemBond, RenewChemIUPAC, + RenewChemLatin, RenewChemNMR, RenewChemParticle, RenewChemPhase, + RenewChemState, renewtagform, rightarrow, + S, Sf, sample, scriptscriptstyle, scrm, scrp, second, + selectchemgreekmapping, setatomsep, setbondoffset, setchemformula, sfrac, + shorthandoff, ShowChemArrow, ShowChemBond, si, SI, sisetup, sld, Sod, + square, State, subsection, + textcolor, textendash, textsuperscript, tiny, toprule, trans, + upbeta, upeta, upgamma, upphi, upPhi, Upphi, + val, volt, vphantom, vspave, + w, xspace, Z +} + +\usepackage{imakeidx} +\indexsetup{othercode=\footnotesize} +\makeindex[columns=3,intoc,options={-sl \jobname.ist}] + +\newcommand*\Chemmacros{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemmacros% + }% +} +\providecommand*\chemmacros{{\scshape\textcolor{main}{chemmacros}}\xspace} + +\newcommand*\Chemformula{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemformula% + }% +} +\providecommand*\chemformula{{\scshape\textcolor{main}{chemformula}}\xspace} + +\newcommand*\Ghsystem{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + ghsystem% + }% +} +\providecommand*\ghsystem{{\scshape\textcolor{main}{ghsystem}}\xspace} + +\newcommand*\Chemgreek{% + {% + \fontspec[Color=main,Scale=1.2] + {Linux Biolinum Shadow O}% + chemgreek% + }% +} +\providecommand*\chemgreek{{\scshape\textcolor{main}{chemgreek}}\xspace} + +\renewcommand*\AmS{\hologo{AmS}} + +\newcommand*\Default[1]{% + \hfill\llap{% + \ifblank{#1} + {(initially~empty)} + {Default:~\code{#1}}% + }\newline +} + +\usepackage{marginnote,ragged2e} +\makeatletter +\providecommand*\sinceversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Introduced in version~#1}}% + \@esphack} +\providecommand*\changedversion[1]{% + \@bsphack + \marginnote{% + \footnotesize\sffamily\RaggedRight + \textcolor{black!75}{Changed in version~#1}}% + \@esphack} + +\RenewDocumentCommand\CTANurl{O{macros/latex/contrib}m} + {% + on CTAN: % + \hyper@linkurl{#2}{http://mirrors.ctan.org/#1/#2/}% + } +\ExplSyntaxOn +\RenewDocumentCommand \paket { sO{macros/latex/contrib}m } + { + \paketfont { #3 } + \index { #3 @ \paketfont { #3 } } + \prop_if_in:NnF \g_cnpkgdoc_pakete_prop { #3 } + { + \prop_gput:Nnn \g_cnpkgdoc_pakete_prop { #3 } {} + \IfBooleanF { #1 } + { \footnote { \CTANurl[]{#3} } } + } + } +\ExplSyntaxOff +\makeatother + +\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} +Permission is granted to copy, distribute and/or modify this software under +the terms of the \LaTeX\ project public license (lppl) version 1.3 or later +(\url{http://www.latex-project.org/lppl.txt}). The package has the status +``maintained.'' + +\ghsystem\ loads the following packages: +\paket*{expl3}\footnote{\CTANurl{l3kernel}}, \paket*{xparse} and +\paket*{l3keys2e}\footnote{\CTANurl{l3packages}}, \paket*{translations} (from +the \paket{exsheets} bundle), \paket{siunitx}, \paket{graphicx}, +\paket{longtable} and \paket{ifpdf}. + +\section{Setup} +The simplest way is to load \chemmacros\ which loads \ghsystem\ implicitily. +All of \ghsystem's options belong to the module +\textcolor{module}{\code{ghsystem}}. This means they can be setup with +\begin{beispiel}[code only] + \chemsetup[ghsystem]{<options>} or + \chemsetup{ghsystem/<option1>,ghsystem/<option2>} +\end{beispiel} +\sinceversion{4.0}However, \ghsystem\ can be loaded as a standalone package +and thus provides its own setup command: +\begin{beschreibung} + \Befehl{ghssystem}{<options>} +\end{beschreibung} + +\section{Get Hazard and Precautionary Statements}\secidx{Hazard and Precautionary Statements} +\subsection{Simple Statements}\secidx[get statements]{GHSYSTEM} +The general usage is simple: you use the command +\begin{beschreibung} + \Befehl{ghs}*[<options>]{<type>}\ma{<number>} +\end{beschreibung} +There are three types available: \code{h}, \code{euh} and \code{p}. The +\ma{<type>} argument is case insensitive, so just type them in as you like. +\begin{beispiel} + \ghs{h}{200} \\ + \ghs{H}{224} \\ + \ghs{euh}{001} \\ + \ghs{Euh}{202} \\ + \ghs{p}{201} +\end{beispiel} + +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{beschreibung} + \Option{hide}{\default{true}|false}\Default{false} + Hide the statement. +\end{beschreibung} + +There is an option to customize the output, too. +\begin{beschreibung} + \Option{space}{<space command>}\Default{} + Space between \code{<type>} and \code{<number>}. +\end{beschreibung} +\begin{beispiel} + \ghs{h}{200} \\ + \ghs[space=\,]{h}{200} \\ + \ghs*{h}{200} \\ + \ghs[hide]{h}{200} +\end{beispiel} + +\subsection{Statements with Placeholders}\secidx[statements with placeholders]{GHSYSTEM} +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{beschreibung} + \Option{fill-in}{\default{true}|false}\Default{false} + Show placeholders. +\end{beschreibung} +\begin{beispiel}[below] + \ghs{h}{340} \\ + \ghs[fill-in]{h}{340} \\ + \ghs{h}{360} \\ + \ghs[fill-in]{h}{360} \\ + \ghs{h}{370} \\ + \ghs[fill-in]{h}{370} \\ + \ghs{euh}{208} \\ + \ghs[fill-in]{euh}{208} +\end{beispiel} + +These placeholders can be replaced with one of these options: +\begin{beschreibung} + \Option{exposure}{<text>}\Default{} + exposure placeholder + \Option{effect}{<text>}\Default{} + effect placeholder + \Option{organs}{<text>}\Default{} + organ placeholder + \Option{substance}{<text>}\Default{} + substance placeholder +\end{beschreibung} +\begin{beispiel} + \ghs[exposure=This is how you get exposed.]{h}{340} \\ + \ghs[effect=These are the effects.]{h}{360} \\ + \ghs[organs=to this organ]{h}{370} \\ + \ghs[substance=substance]{euh}{208} +\end{beispiel} + +\subsection{Statements with Gaps}\secidx[statements with gaps]{GHSYSTEM} +Some of the statements have gaps that can be filled. +\begin{beispiel} + \ghs{p}{301} \\ + \ghs{p}{401} \\ + \ghs{p}{411} \\ + \ghs{p}{413} +\end{beispiel} + +These gaps can be filled using these options: +\begin{beschreibung} + \Option{text}{<text>} + \Option{dots}{<text>} + \Option{C-temperature}{<num>} + \Option{F-temperature}{<num>} + \Option{kg-mass}{<num>} + \Option{lbs-mass}{<num>} +\end{beschreibung} +\begin{beispiel} + \ghs[text=contact physician!]{p}{301} \\ + \ghs[dots=here]{p}{401} \\ + \ghs[C-temperature=50, F-temperature=122]{p}{411} \\ + \ghs[kg-mass=5.0, lbs-mass=11, C-temperature=50, F-temperature=122]{p}{413} +\end{beispiel} + +\subsection{Combined Statements}\secidx[combined statements]{GHSYSTEM} +There are some combinations of statements. They are input with a \code{+} +between the numbers: +\begin{beispiel}[below] + \ghs{p}{235+410} \\ + \ghs{p}{301+330+331} +\end{beispiel} + +Note that you can only get combinations that officially exist. \emph{You + can't combine freely}. +\secidx*{Hazard and Precautionary Statements} + +\section{Pictograms}\secidx{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} + +The command +\begin{beschreibung} + \Befehl{ghspic}[<options>]{<name>} +\end{beschreibung} +loads them. Table~\ref{tab:ghs_pictograms} shows all available pictograms and +their names. To be more precise: it shows the names to use with the +\cmd{ghspic} command. The file names are +\lstinline=ghsystem_<name>.<filetype>= where \code{<filetype>} is \code{eps}, +\code{pdf}, \code{jpg} or \code{png}, see also +section~\ref{ssec:picture_type}. +\begin{beispiel} + \ghspic{skull} +\end{beispiel} + +If you don't like the default size you can change it using this option: +\begin{beschreibung} + \Option{scale}{<factor>}\Default{1} + Scales the pictogram. +\end{beschreibung} +The pictures are actually quite large. The default setting scales them by a +factor +of $\frac{1}{20}$. +\begin{beispiel} + \ghspic[scale=2]{skull} +\end{beispiel} + +If you want to use some specific \lstinline=\includegraphics= options, \eg, if +you want to rotate the pictogram for some reason, use this option: +\begin{beschreibung} + \Option{includegraphics}{\{<includegraphics keyvals>\}} +\end{beschreibung} +\begin{beispiel} + \ghspic[includegraphics={angle=90}]{skull} +\end{beispiel} + +\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{beschreibung} + \Option{pic-type}{eps|pdf|jpg|png} +\end{beschreibung} +\secidx*{Pictograms} + +\section{Available Languages}\label{sec:ghsystem_language} +Right now the H and P statements are only available in English, German or +Italian. The package adapts \chemmacros' option \key[option]{language} or if +the option hasn't been used recognizes the language settings made with +\paket{babel} or \paket{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{beschreibung} + \Option{language}{english|german|italian}\Default{english} + Selects and loads language file. Falls back to \code{english} if the + chosen file doesn't exist. +\end{beschreibung} +\begin{beispiel} + \ghs{h}{201} + + \chemsetup[ghsystem]{language=german} + \ghs{h}{201} +\end{beispiel} + +% TODO: \loadghsystemlanguage + +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}\secidx{List of All Statements} +If for some reason you want to list all sentences you can use +\begin{beschreibung} + \Befehl{ghslistall}[<options>] +\end{beschreibung} + +This command has a number of options to customize the table, which is created with +the \lstinline=longtable= environment of the \paket{longtable} package. +\begin{beschreibung} + \Option{table-head-number}{<text>}\Default{Identifier} + \Option{table-head-text}{<text>}\Default{Statement} + \Option{table-next-page}{<text>}\Default{continues on next page} + \Option{table-caption}{<text>}\Default{All H, EUH, and P Statements.} + As \code{<text>} in \lstinline=\caption{<text>}=. + \Option{table-caption-short}{<text>}\Default{} + As \code{<short>} in \lstinline=\caption[<short>]{<text>}=. + \Option{table-label}{<text>}\Default{tab:ghs-hp-statements} + The label to refer to the table with \lstinline=\ref= and similar + commands. + \Option{table-row-sep}{<dim>}\Default{3pt} + The separation of the table rows. A \TeX\ dimension. + \Option{table-rules}{\default{default}|booktabs|none}\Default{default} + The style of the horizontal rules in the table. \code{default} uses + \lstinline=\hline=, \code{booktabs} uses \lstinline=\toprule=, + \lstinline=\midrule= or \lstinline=\bottomrule=, resp. This option needs + the \paket{booktabs} package which you have to load yourself then. + \Option{table-top-head-rule}{\default{default}|booktabs|none}\Default{default} + Change top rule explicitly. + \Option{table-head-rule}{\default{default}|booktabs|none}\Default{default} + Change rule below head explicitly. + \Option{table-foot-rule}{\default{default}|booktabs|none}\Default{default} + Change foot rule explicitly. + \Option{table-last-foot-rule}{\default{default}|booktabs|none}\Default{default} + Change last foot rule explicitly. +\end{beschreibung} + +The code below shows how table~\ref{tab:ghs-hp-statements} was created: +\begin{beispiel}[code only] + \ghslistall[fill-in,table-rules=booktabs] +\end{beispiel} + +\ghslistall[fill-in,table-rules=booktabs] +\secidx*{List of All Statements} + +\appendix + +\printbibliography + +{\catcode`\^=11 \catcode`\#=11 +\printindex} + +\end{document} diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty index 12344325e7d..b29047b1e3d 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemformula.sty @@ -1,41 +1,86 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% --------------------------------------------------------------------------- % -% - the CHEMMACROS bundle - % -% - chemformula.sty - % -% - 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. - % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{ chemmacros } +% -------------------------------------------------------------------------- +% the CHEMMACROS bundle +% chemformula.sty +% 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. +% -------------------------------------------------------------------------- +\RequirePackage{ expl3 , xparse , l3keys2e , tikz , amsmath , xfrac , nicefrac , scrlfile } +\usetikzlibrary{arrows} +\def\chemformula@version{4.0} +\def\chemformula@date{2013/07/06} + \ProvidesExplPackage {chemformula} - {\chemmacros@date} - {\chemmacros@version} + {\chemformula@date} + {\chemformula@version} {typeset chemical compounds and reactions} -%-----------------------------------------------------------------------------% -% WARNING AND ERROR MESSAGES -\msg_set:nnnn { chemformula } { missing-argument } +% -------------------------------------------------------------------------- +% check expl3 version: +\@ifpackagelater { expl3 } { 2012/11/21 } + { } + { + \PackageError { chemformula } { Support~package~expl3~too~old } + { + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~chemformula~will~abort! + } + \tex_endinput:D + } + +% -------------------------------------------------------------------------- +% warning and erroe messages: +\cs_new_protected:Npn \chemformula_error:nnxx #1#2#3#4 + { + \bool_if:NTF \l__chemformula_strict_bool + { \msg_error:nnxx { #1 } { #2 } { #3 } { #4 } } + { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } + } + +\cs_new_protected:Npn \chemformula_error:nn #1#2 + { + \bool_if:NTF \l__chemformula_strict_bool + { \msg_error:nnxx { #1 } { #2 } } + { \msg_warning:nnxx { #1 } { #2 } } + } + +\cs_new_protected:Npn \chemformula_warning:nnxx #1#2#3#4 + { + \bool_if:NTF \l__chemformula_strict_bool + { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } + { \msg_info:nnxx { #1 } { #2 } { #3 } { #4 } } + } + +\cs_new_protected:Npn \chemformula_warning:nn #1#2 + { + \bool_if:NTF \l__chemformula_strict_bool + { \msg_warning:nn { #1 } { #2 } } + { \msg_info:nn { #1 } { #2 } } + } + +\msg_new:nnnn { chemformula } { missing-argument } { Wrong~name~input~ \msg_line_context: . } @@ -47,15 +92,7 @@ Either~way~-~I~don't~know~what~to~do~ \msg_line_context: . } -\msg_set:nnnn { chemformula } { explicit } - { It~seems~you've~loaded~`chemformula'~explicitly. } - { - It~seems~you've loaded~`chemformula'~explicitly.~This~should~work~but~the~ - recommended~way~is~to~load~it~via~the~bundle,~i.e.~by~using~ - \token_to_str:N \usepackage \{ chemmacros \}. - } - -\msg_set:nnnn { chemformula } { declare-arrow } +\msg_new:nnnn { chemformula } { declare-arrow } { The~arrow~type~ \tl_to_str:n { #1 } \c_space_tl is~already~defined. } @@ -65,14 +102,14 @@ ~Choose~another~name. } -\msg_set:nnnn { chemformula } { renew-arrow } +\msg_new:nnnn { chemformula } { renew-arrow } { The~arrow~type~ \tl_to_str:n { #1 } \c_space_tl is~not~defined. } { You've~tried~to~renew~the~arrow~type~\tl_to_str:n { #1 } ~but~it~doesn't~ exist. } -\msg_set:nnnn { chemformula } { declare-bond } +\msg_new:nnnn { chemformula } { declare-bond } { The~bond~type~ \tl_to_str:n { #1 } \c_space_tl is~already~defined. } @@ -82,34 +119,248 @@ ~Choose~another~name. } -\msg_set:nnnn { chemformula } { renew-bond } +\msg_new:nnnn { chemformula } { renew-bond } { The~bond~type~ \tl_to_str:n { #1 } \c_space_tl is~not~defined. } { You've~tried~to~renew~the~bond~type~\tl_to_str:n { #1 } ~but~it~doesn't~ exist. } -% --------------------------------------------------------------------------- % -% scratch variables +\msg_new:nnnn { chemformula } { stand-alone } + { + You're~using~`chemformula'~as~a~stand-alone~package~or~have~loaded~it~ + before~you've~loaded~`chemmacros',~too.~Some~features~might~not~be~ + provided!~Espacially~you~cannot~use~\token_to_str:N \chemsetup \c_space_tl + to~setup~your~formulae. + } + { + You're~using~`chemformula'~as~a~stand-alone~package~or~have~loaded~it~ + before~you've~loaded~`chemmacros',~too.~Some~features~might~not~be~ + provided!~Espacially~you~cannot~use~\token_to_str:N \chemsetup \c_space_tl + to~setup~your~formulae. + } + +\msg_new:nnnn { chemformula } { command-deprecated } + { + The~command~\token_to_str:N #1 \c_space_tl is~deprecated.~Use~ + \token_to_str:N #2 \c_space_tl instead. + } + { + The~command~\token_to_str:N #1 \c_space_tl is~deprecated.~Use~ + \token_to_str:N #2 \c_space_tl instead. + } + +\cs_new_protected:Npn \chemformula_define_deprecated:NNn #1#2#3 + { + \cs_new_protected:Npn #1 + { + \chemformula_error:nnxx { chemformula } { command-deprecated } + { #1 } { #2 } + #3 + } + } + +\NewDocumentCommand \DeprecatedFormulaCommand { mmm } + { \chemformula_define_deprecated:NNn #1 #2 { #3 } } + +% -------------------------------------------------------------------------- +% variants of kernel functions: +\cs_generate_variant:Nn \keys_set:nn { nV } +\cs_generate_variant:Nn \tl_if_blank:nF { V } +\cs_generate_variant:Nn \tl_if_in:nnT { x } +\cs_generate_variant:Nn \prop_get:Nn { NV } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV } + +% -------------------------------------------------------------------------- +% package options: +\bool_new:N \l__chemformula_strict_bool +\keys_define:nn { chemmacros / chemformula } + { + strict .bool_set:N = \l__chemformula_strict_bool , + strict .default:n = true + } + +\ProcessKeysOptions{ chemmacros / chemformula } + +\AtBeginDocument + { + \@ifpackageloaded{ chemmacros } + { + \bool_if:NT \l_chemmacros_strict_bool + { \bool_set_true:N \l__chemformula_strict_bool } + } + {} + } + +% -------------------------------------------------------------------------- +% VARIABLES +% temporary variables: \tl_new:N \l__chemformula_tmpa_tl \tl_new:N \l__chemformula_tmpb_tl \tl_new:N \l__chemformula_tmpc_tl + \dim_new:N \l__chemformula_tmpa_dim \dim_new:N \l__chemformula_tmpb_dim + \int_new:N \l__chemformula_tmpa_int \int_new:N \l__chemformula_tmpb_int + \box_new:N \l__chemformula_tmpa_box \box_new:N \l__chemformula_tmpb_box -%-----------------------------------------------------------------------------% -% gobble options -\DeclareOption* { } -\ProcessOptions \scan_stop: +% booleans: +% this one is officially used to detect wether we're in \ch or not: +\bool_new:N \l_chemformula_inside_ch_bool +% those are private: +\bool_new:N \l__chemformula_formal_charges_bool +\bool_new:N \l__chemformula_formal_chem_bool +\bool_set_true:N \l__chemformula_formal_chem_bool +\bool_new:N \l__chemformula_options_bool +\bool_new:N \l__chemformula_is_option_bool +\bool_new:N \l__chemformula_stoich_bool +\bool_new:N \l__chemformula_no_stoich_bool +\bool_new:N \l__chemformula_is_plus_bool +\bool_new:N \l__chemformula_is_up_bool +\bool_new:N \l__chemformula_is_down_bool +\bool_new:N \l__chemformula_is_arrow_bool +\bool_new:N \l__chemformula_is_name_bool +\bool_new:N \l__chemformula_stoich_is_iupac_bool +\bool_new:N \l__chemformula_stoich_parse_iupac_bool +\bool_new:N \l__chemformula_first_last_text_bool +\bool_new:N \l__chemformula_first_last_double_bool +\bool_new:N \l__chemformula_first_last_single_bool +\bool_new:N \l__chemformula_first_last_math_bool +\bool_new:N \l__chemformula_first_last_dollar_bool +\bool_new:N \l__chemformula_first_last_mathbraces_bool +\bool_new:N \l__chemformula_number_style_math_bool +\bool_new:N \l__chemformula_charge_style_math_bool +\bool_new:N \l__chemformula_sub_bool +\bool_new:N \l__chemformula_sup_bool +\bool_new:N \l__chemformula_is_isotope_bool +\bool_new:N \l__chemformula_xfrac_bool +\bool_new:N \l__chemformula_nicefrac_bool +\bool_new:N \l__chemformula_mathfrac_bool +\bool_set_true:N \l__chemformula_mathfrac_bool +\bool_new:N \l__chemformula_fss_bool +\bool_new:N \l__chemformula_fontspec_bool +\bool_new:N \l__chemformula_fss_family_bool +\bool_new:N \l__chemformula_fss_series_bool +\bool_new:N \l__chemformula_fss_shape_bool +\bool_new:N \l__chemformula_name_width_bool +\bool_new:N \l__chemformula_charge_full_shift_bool + +% dimensions: +\dim_new:N \l__chemformula_arrow_length_dim +\dim_new:N \l__chemformula_arrow_label_offset_dim +\dim_set:Nn \l__chemformula_arrow_label_offset_dim { 2pt } +\dim_new:N \l__chemformula_arrow_minimum_length_dim +\dim_new:N \l__chemformula_arrow_shortage_dim +\dim_new:N \l__chemformula_arrow_offset_dim +\dim_set:Nn \l__chemformula_arrow_offset_dim { .75em } +\dim_new:N \l__chemformula_compound_sep_dim +\dim_set:Nn \l__chemformula_compound_sep_dim { .5em } +\dim_new:N \l__chemformula_arrow_yshift_dim +\dim_set:Nn \l__chemformula_arrow_yshift_dim { 0pt } +\dim_new:N \l__chemformula_radical_radius_dim +\dim_set:Nn \l__chemformula_radical_radius_dim { .2ex } +\dim_new:N \l__chemformula_radical_hshift_dim +\dim_set:Nn \l__chemformula_radical_hshift_dim { .15em } +\dim_new:N \l__chemformula_radical_vshift_dim +\dim_set:Nn \l__chemformula_radical_vshift_dim { .5ex } +\dim_new:N \l__chemformula_radical_space_dim +\dim_set:Nn \l__chemformula_radical_space_dim { .15em } +\dim_new:N \l__chemformula_arrow_head_dim +\dim_new:N \l__chemformula_name_dim +\dim_new:N \l__chemformula_adduct_space_dim +\dim_set:Nn \l__chemformula_adduct_space_dim { .1333em } +\dim_new:N \l__chemformula_charge_shift_dim +\dim_set:Nn \l__chemformula_charge_shift_dim { .5ex } +\dim_new:N \l__chemformula_subscript_shift_dim +\dim_new:N \l__chemformula_superscript_shift_dim +\dim_new:N \l__chemformula_subscript_dim +\dim_zero:N \l__chemformula_subscript_dim +\dim_new:N \l__chemformula_superscript_dim +\dim_zero:N \l__chemformula_superscript_dim +\dim_new:N \l__chemformula_bond_dim +\dim_set:Nn \l__chemformula_bond_dim { .5833em } +\dim_new:N \l__chemformula_bond_space_dim +\dim_set:Nn \l__chemformula_bond_space_dim { .07em } + +% skips: +\skip_new:N \l__chemformula_stoich_space_skip +\skip_set:Nn \l__chemformula_stoich_space_skip { .1667em plus .0333em minus .0117em } +\skip_new:N \l__chemformula_math_space_skip +\skip_set:Nn \l__chemformula_math_space_skip { .1667em plus .0333em minus .0117em } +\skip_new:N \l__chemformula_plus_space_skip +\skip_set:Nn \l__chemformula_plus_space_skip { .3em plus .1em minus .1em } + -\RequirePackage { nicefrac } +% integers: +\int_new:N \l__chemformula_count_tokens_int + +% token lists: +\tl_new:N \l__chemformula_arrow_ratio_tl +\tl_set:Nn \l__chemformula_arrow_ratio_tl { .6 } +\tl_new:N \l__chemformula_radical_style_tl +\tl_new:N \l__chemformula_arrow_head_tl +\tl_set:Nn \l__chemformula_arrow_head_tl { cf } +\tl_new:N \l__chemformula_upper_label_tl +\tl_new:N \l__chemformula_lower_label_tl +\tl_new:N \l__chemformula_arrow_style_tl +\tl_new:N \l__chemformula_arrow_label_style_tl +\tl_set:Nn \l__chemformula_arrow_label_style_tl { \footnotesize } +\tl_new:N \l__chemformula_arrow_tmp_tl +\tl_new:N \l__chemformula_arrow_type_tl +\tl_new:N \l__chemformula_name_tmp_tl +\tl_new:N \l__chemformula_chemformula_tmpa_tl +\tl_new:N \g__chemformula_options_tl +\tl_new:N \g__chemformula_output_tl +\tl_new:N \l__chemformula_input_tl +\tl_new:N \l__chemformula_stoich_tl +\tl_new:N \l__chemformula_decimal_output_tl +\tl_set:Nn \l__chemformula_decimal_output_tl { . } +\tl_new:N \l__chemformula_font_family_tl +\tl_set_eq:NN \l__chemformula_font_family_tl \f@family +\tl_new:N \l__chemformula_font_series_tl +\tl_set_eq:NN \l__chemformula_font_series_tl \f@series +\tl_new:N \l__chemformula_font_shape_tl +\tl_set_eq:NN \l__chemformula_font_shape_tl \f@shape +\tl_new:N \l__chemformula_format_tl +\tl_new:N \l__chemformula_fontspec_options_tl +\tl_new:N \l__chemformula_fontspec_argument_tl +\tl_new:N \l__chemformula_name_format_tl +\tl_set:Nn \l__chemformula_name_format_tl { \scriptsize\centering } +\tl_new:N \l_chemormula_sup_super_factor_tl +\tl_new:N \l__chemformula_subscript_shift_additional_tl +\tl_set:Nn \l__chemformula_subscript_shift_additional_tl { 0pt } +\tl_new:N \l__chemformula_superscript_shift_additional_tl +\tl_set:Nn \l__chemformula_superscript_shift_additional_tl { 0pt } +\tl_new:N \l__chemformula_bond_style_tl +\tl_new:N \l__chemformula_subscript_tl +\tl_new:N \l__chemformula_superscript_tl +\tl_new:N \g__chemformula_input_up_tl + +% property lists: +\prop_new:N \l__chemformula_arrows_code_prop +\prop_new:N \l__chemformula_cmpd_prop +\prop_new:N \l__chemformula_bonds_prop +\prop_new:N \l__chemformula_stoich_prop +\prop_new:N \l__chemformula_charge_prop +\prop_new:N \l__chemformula_numbers_prop +\prop_new:N \l__chemformula_no_stoich_prop + +% sequences: +\seq_new:N \l__chemformula_arrows_type_seq +\seq_new:N \l__chemformula_input_seq + +% boxes: +\box_new:N \l__chemformula_arrow_arg_i_box +\box_new:N \l__chemformula_arrow_arg_ii_box +\box_new:N \l__chemformula_superscript_box +\box_new:N \l__chemformula_subscript_box -%-----------------------------------------------------------------------------% -% HELPER FUNCTIONS +% -------------------------------------------------------------------------- +% general and helper functions: \cs_new:Npn \chemformula_tikz:nn #1#2 { \tikz [ #1 ] { #2 } } \cs_generate_variant:Nn \chemformula_tikz:nn { xn,nf } @@ -118,50 +369,135 @@ { \draw [ #1 ] #2 ; } \cs_generate_variant:Nn \chemformula_draw:nn { xn,nx,xx,xf } -%-----------------------------------------------------------------------------% -% Some basic internal commands: -\cs_new:Npn \chemformula_plus: +\cs_new:Npn \chemformula_allow_break: + { \tex_penalty:D \c_zero } + +\cs_new_protected:Npn \chemformula_leave_vmode: + { \hbox_unpack:N \c_empty_box } + +\cs_new:Npn \chemformula_nobreak: + { \tex_penalty:D \c_ten_thousand } + +\cs_new:Npn \chemformula_skip_nobreak:N #1 + { + \chemformula_nobreak: + \skip_horizontal:N #1 + \chemformula_nobreak: + } + +\cs_new_protected:Npn \chemformula_dim_to_width:Nn #1#2 + { + \hbox_set:Nn \l__chemformula_tmpa_box { #2 } + \dim_set:Nn #1 { \box_wd:N \l__chemformula_tmpa_box } + \box_clear:N \l__chemformula_tmpa_box + } + +% an l3 conditional that can test 2e's conditionals that go like +% \iffoo ... \else ... \fi +% see http://tex.stackexchange.com/a/119806/5049 +\prg_new_conditional:Npnn \chemformula_latex_if:n #1 {p,T,F,TF} + { \use:c { if #1 } \prg_return_true: \else: \prg_return_false: \fi: } + +% -------------------------------------------------------------------------- +% circled charge signs: +\cs_new_protected:Npn \chemformula_fplus: + { \ensuremath { \__chemformula_fplus: } } + +\cs_new:Npn \__chemformula_fplus: + { \mathpalette \__chemformula_fplus_aux: \bigcirc } + +\cs_new:Npn \__chemformula_fplus_aux: #1#2 { - \bool_if:nTF - { \l__chemmacros_circled_bool && !\l__chemmacros_circled_formal_bool } + \ooalign { - \bool_if:NTF \l__chemmacros_circled_chem_bool - { \chemmacros_fplus: } - { \mode_if_math:TF { \oplus } { $ \oplus $ } } + \tex_hfil:D + $ + #1 + \chemformula_plain_plus: + $ + \tex_hfil:D + \tex_cr:D + \tex_hfil:D + $#1#2$ + \tex_hfil:D + \tex_cr:D } + } + +\cs_new_protected:Npn \chemformula_fminus: + { \ensuremath { \__chemformula_fminus: } } + +\cs_new:Npn \__chemformula_fminus: + { \mathpalette \__chemformula_fminus_aux_aux: \bigcirc } + +\cs_new:Npn \__chemformula_fminus_aux_aux: #1#2 + { + \ooalign { - \bool_if:NTF \l__chemformula_charge_style_math_bool - { \ensuremath { + } } - { \mode_if_math:TF { \text { + } } { + } } + \tex_hfil:D + $ + #1 + \chemformula_plain_minus: + $ + \tex_hfil:D + \tex_cr:D + \tex_hfil:D + $#1#2$ + \tex_hfil:D + \tex_cr:D } } -\cs_new:Npn \chemformula_minus: +\AtBeginDocument{ + \@ifpackageloaded { chemmacros } + { + \bool_if:nT + { \l__chemmacros_circled_bool && !\l__chemmacros_circled_formal_bool } + { \bool_set_true:N \l__chemformula_formal_charges_bool } + \bool_if:NF \l__chemmacros_circled_chem_bool + { \bool_set_false:N \l__chemformula_formal_chem_bool } + } + { } +} + +\cs_new_protected:Npn \chemformula_plain_plus: + { + \bool_if:NTF \l__chemformula_charge_style_math_bool + { \ensuremath { + } } + { \mode_if_math:TF { \text { + } } { + } } + } + +\cs_new_protected:Npn \chemformula_plus: { - \bool_if:nTF - { \l__chemmacros_circled_bool && !\l__chemmacros_circled_formal_bool } + \bool_if:NTF \l__chemformula_formal_charges_bool { - \bool_if:NTF \l__chemmacros_circled_chem_bool - { \chemmacros_fminus: } - { \mode_if_math:TF { \ominus } { $ \ominus $ } } + \bool_if:NTF \l__chemformula_formal_chem_bool + { \chemformula_fplus: } + { \mode_if_math:TF { \oplus } { \( \oplus \) } } } + { \chemformula_plain_plus: } + } + +\cs_new_protected:Npn \chemformula_plain_minus: + { + \bool_if:NTF \l__chemformula_charge_style_math_bool + { \ensuremath { - } } + { \mode_if_math:TF { \text { \textendash } } { \textendash } } + } + +\cs_new_protected:Npn \chemformula_minus: + { + \bool_if:NTF \l__chemformula_formal_charges_bool { - \bool_if:NTF \l__chemformula_charge_style_math_bool - { \ensuremath { - } } - { \mode_if_math:TF { \text { \textendash } } { \textendash } } + \bool_if:NTF \l__chemformula_formal_chem_bool + { \chemformula_fminus: } + { \mode_if_math:TF { \ominus } { \( \ominus \) } } } + { \chemformula_plain_minus: } } -\tl_new:N \l__chemformula_radical_style_tl -\dim_new:N \l__chemformula_radical_radius_dim -\dim_set:Nn \l__chemformula_radical_radius_dim { .2ex } -\dim_new:N \l__chemformula_radical_hshift_dim -\dim_set:Nn \l__chemformula_radical_hshift_dim { .15em } -\dim_new:N \l__chemformula_radical_vshift_dim -\dim_set:Nn \l__chemformula_radical_vshift_dim { .5ex } -\dim_new:N \l__chemformula_radical_space_dim -\dim_set:Nn \l__chemformula_radical_space_dim { .15em } - +% -------------------------------------------------------------------------- +% Some basic internal commands: \cs_new_protected:Npn \chemformula_radical: { \chemformula_tikz:xn @@ -194,16 +530,15 @@ \cs_new:Npn \chemformula_adduct: { - \skip_horizontal:N \l__chemformula_cdot_space_dim + \skip_horizontal:N \l__chemformula_adduct_space_dim \textperiodcentered - \skip_horizontal:N \l__chemformula_cdot_space_dim + \skip_horizontal:N \l__chemformula_adduct_space_dim } \cs_new_eq:NN \chemformula_star_adduct: \chemformula_adduct: -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % ARROW DEFINITION % arrow heads: -\dim_new:N \l__chemformula_arrow_head_dim % full tip for pairs \pgfarrowsdeclare { cf } { cf } @@ -290,30 +625,14 @@ \pgfusepathqfillstroke } -% a possibility to overwrite the arrow tips: +% a possibility to overwrite the arrow tips -- undocumented: \providecommand*\pgfarrowsrenewalias[4]{% \let\savedef\pgf@arrows@check@already \def\pgf@arrows@check@already##1##2##3{##3}% \pgfarrowsdeclarealias{#1}{#2}{#3}{#4}% \let\pgf@arrows@check@already\savedef} -%-----------------------------------------------------------------------------% -% variables -\dim_new:N \l__chemformula_arrow_length_dim -\dim_new:N \l__chemformula_arrow_label_offset_dim -\dim_set:Nn \l__chemformula_arrow_label_offset_dim { 2pt } -\dim_new:N \l__chemformula_arrow_minimum_length_dim -\dim_new:N \l__chemformula_arrow_shortage_dim -\dim_new:N \l__chemformula_arrow_offset_dim -\dim_set:Nn \l__chemformula_arrow_offset_dim { .75em } -\dim_new:N \l__chemformula_compound_sep_dim -\dim_set:Nn \l__chemformula_compound_sep_dim { .5em } -\dim_new:N \l__chemformula_arrow_yshift_dim -\dim_set:Nn \l__chemformula_arrow_yshift_dim { 0pt } - -\tl_new:N \l__chemformula_arrow_ratio_tl -\tl_set:Nn \l__chemformula_arrow_ratio_tl { .6 } - +% -------------------------------------------------------------------------- % determine length in dependency of labels \cs_new_protected:Npn \__chemformula_determine_arrow_length:NN #1#2 { @@ -350,50 +669,18 @@ } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % define arrow types -\tl_new:N \l__chemformula_arrow_head_tl -\tl_set:Nn \l__chemformula_arrow_head_tl { cf } -\tl_new:N \l__chemformula_upper_label_tl -\tl_new:N \l__chemformula_lower_label_tl -\tl_new:N \l__chemformula_arrow_style_tl -\tl_new:N \l__chemformula_arrow_label_style_tl -\tl_set:Nn \l__chemformula_arrow_label_style_tl { \footnotesize } -\tl_new:N \l__chemformula_arrow_tmp_tl -\prop_new:N \l__chemformula_arrows_code_prop -\seq_new:N \l__chemformula_arrows_type_seq -\tl_new:N \l__chemformula_arrow_type_tl -\box_new:N \l__chemformula_arrow_arg_i_box -\box_new:N \l__chemformula_arrow_arg_ii_box - -% read optional arguments -\cs_new:Npn \__chemformula_arrow_read_args:w - { - \peek_meaning:NTF [ - { \__chemformula_arrow_read_args_aux_i:w } - { \__chemformula_arrow_read_args_aux_iii: } - } +% read arrow labels: -\cs_new_protected:Npn \__chemformula_arrow_read_args_aux_i:w [#1] +\cs_new:Npn \chemformula_arrow_labels:nn #1#2 { \hbox_set:Nn \l__chemformula_arrow_arg_i_box { \tl_use:N \l__chemformula_arrow_label_style_tl #1 } - \peek_meaning:NTF [ - { \__chemformula_arrow_read_args_aux_ii:w } - { \__chemformula_arrow_read_args_aux_iii: } - } - -\cs_new_protected:Npn \__chemformula_arrow_read_args_aux_ii:w [#1] - { \hbox_set:Nn \l__chemformula_arrow_arg_ii_box - { \tl_use:N \l__chemformula_arrow_label_style_tl #1 } - \__chemformula_arrow_read_args_aux_iii: - } - -\cs_new:Npn \__chemformula_arrow_read_args_aux_iii: - { - % now we have both arguments do the actual drawing: + { \tl_use:N \l__chemformula_arrow_label_style_tl #2 } + % now that we have both arguments do the actual drawing: \prop_get:NVN \l__chemformula_arrows_code_prop \l__chemformula_arrow_type_tl \l__chemformula_tmpb_tl @@ -409,13 +696,19 @@ \box_clear:N \l__chemformula_arrow_arg_ii_box % then get the arrow type \tl_set:Nn \l__chemformula_arrow_type_tl { #1 } - \__chemformula_arrow_read_args:w + } + +% this will be \arrow inside \ch +\DeclareDocumentCommand \charrow { mO{}O{} } + { + \__chemformula_arrows_get:n { #1 } + \chemformula_arrow_labels:nn { #2 } { #3 } } % draw the arrows \cs_new:Npn \__chemformula_arrow_draw:n #1 { - \chemmacros_allow_break: + \chemformula_allow_break: % prepare arrow code for drawing: \tl_set_rescan:Nnn \l__chemformula_tmpc_tl { \char_set_catcode_letter:N \_ } { #1 } @@ -455,7 +748,7 @@ ; \tl_use:N \l__chemformula_tmpc_tl } - \chemmacros_allow_break: + \chemformula_allow_break: } \cs_generate_variant:Nn \__chemformula_arrow_draw:n { V } @@ -464,7 +757,7 @@ \NewDocumentCommand \DeclareChemArrow { mm } { \prop_if_in:NnTF \l__chemformula_arrows_code_prop { #1 } - { \chemmacros_msg:nnxx { chemformula } { declare-arrow } { #1 } {} } + { \chemformula_error:nnxx { chemformula } { declare-arrow } { #1 } {} } { % store type in the sequence and code in the property list \seq_put_right:Nn \l__chemformula_arrows_type_seq { #1 } @@ -476,7 +769,7 @@ { \prop_if_in:NnTF \l__chemformula_arrows_code_prop { #1 } { \prop_put:Nnn \l__chemformula_arrows_code_prop { #1 } { #2 } } - { \chemmacros_msg:nnxx { chemformula } { renew-arrow } { #1 } {} } + { \chemformula_error:nnxx { chemformula } { renew-arrow } { #1 } {} } } \NewDocumentCommand \ShowChemArrow { m } @@ -540,7 +833,7 @@ % net reaction: \DeclareChemArrow { == } { \node at ([yshift=-.2ex]cf_arrow_mid) { = } ; } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % arrow customization \keys_define:nn { chemmacros / chemformula } { @@ -550,53 +843,65 @@ arrow-ratio .tl_set:N = \l__chemformula_arrow_ratio_tl , label-offset .dim_set:N = \l__chemformula_arrow_label_offset_dim , compound-sep .dim_set:N = \l__chemformula_compound_sep_dim , -% arrow-tips .tl_set:N = \l__chemformula_arrow_head_tl , arrow-style .tl_set:N = \l__chemformula_arrow_style_tl , label-style .tl_set:N = \l__chemformula_arrow_label_style_tl } -%-----------------------------------------------------------------------------% -\seq_new:N \l__chemformula_input_seq +% -------------------------------------------------------------------------- % MAIN COMMAND \cs_new_protected:Npn \__chemformula_ch_main:n #1 { \group_begin: \seq_set_split:Nnn \l__chemformula_input_seq { ~ } { #1 } \cs_set_eq:NN \xspace \scan_stop: + % the next two necessary any more but shouldn't do harm, too: \cs_set_nopar:Npn \[ { [ } \cs_set_nopar:Npn \] { ] } - \bool_set_true:N \l__chemformula_inside_ch_bool - \tl_if_blank:oF { \g__chemformula_options_tl } + \bool_set_true:N \l_chemformula_inside_ch_bool + \tl_if_blank:VF \g__chemformula_options_tl { - \keys_set:no { chemmacros / chemformula } - { \g__chemformula_options_tl } + \keys_set:nV + { chemmacros / chemformula } + \g__chemformula_options_tl } \seq_map_function:NN \l__chemformula_input_seq \chemformula_input:n -% \tl_set_eq:NN -% \l__chemformula_output_tl -% \l__chemformula_input_tl - \tl_set_rescan:Nno \l__chemformula_input_tl + \tl_set_rescan:NnV \l__chemformula_input_tl { \ExplSyntaxOn \makeatletter } - { \l__chemformula_input_tl } + \l__chemformula_input_tl \chemformula_write:V \l__chemformula_input_tl \group_end: } +\cs_new:Npn \chemformula_write:n #1 + { + \mode_if_math:TF + { + \mathchoice + { \text { #1 } } + { \text { #1 } } + { \text { \scriptsize #1 } } + { \text { \tiny #1 } } + } + { #1 } + } +\cs_generate_variant:Nn \chemformula_write:n { V } + % internal version of \ch command: \cs_new_protected:Npn \chemformula_ch:nn #1#2 { \group_align_safe_begin: - \chemmacros_leave_vmode: - \IfNoValueTF { #1 } + \chemformula_leave_vmode: + \tl_if_blank:nTF { #1 } { \tl_gclear:N \g__chemformula_options_tl } - { \tl_gset:Nn \g__chemformula_options_tl { #1 } } + { \tl_gset:Nn \g__chemformula_options_tl { #1 } } \__chemformula_ch_aux_i:w #2 \\ \q_no_value \q_stop \group_align_safe_end: - \tl_use:N \g__chemformula_output_tl + \tl_use:N \g__chemformula_output_tl \tl_gclear:N \g__chemformula_output_tl } +\cs_generate_variant:Nn \chemformula_ch:nn { V , nV , VV } % Trickery to use \ch inside align environment: % bypass \\: @@ -627,18 +932,20 @@ \__chemformula_ch_aux_iv:w #1 \tag{} \q_no_value \q_stop \quark_if_no_value:nF { #3 } { - \tl_gput_right:Nn \g__chemformula_output_tl { \label{#2} } + \tl_gput_right:Nn \g__chemformula_output_tl { \label { #2 } } \__chemformula_ch_aux_iii:w #3 \q_stop } } +% here's something not working when used together with `hyperref' +% which seems to be related to \nonumber % bypass \tag: \cs_new_protected:Npn \__chemformula_ch_aux_iv:w #1 \tag#2 #3 \q_stop { \__chemformula_ch_aux_v:w #1 \intertext{} \q_no_value \q_stop \quark_if_no_value:nF { #3 } { - \tl_gput_right:Nn \g__chemformula_output_tl { \tag{#2} } + \tl_gput_right:Nn \g__chemformula_output_tl { \protect\tag { #2 } } \__chemformula_ch_aux_iv:w #3 \q_stop } } @@ -650,30 +957,30 @@ { \__chemformula_ch_main:n { #1 } } \quark_if_no_value:nF { #3 } { - \tl_gput_right:Nn \g__chemformula_output_tl { \intertext{#2} } + \tl_gput_right:Nn \g__chemformula_output_tl { \intertext { #2 } } \__chemformula_ch_aux_v:w #3 \q_stop - } + } } -% user command: -\NewDocumentCommand \ch { om } +% -------------------------------------------------------------------------- +% user commands: +\NewDocumentCommand \ch { O{}m } { \chemformula_ch:nn { #1 } { #2 } } -\cs_new:Npn \chemformula_write:n #1 +\tl_new:N \l__chemformula_compound_tl +\cs_new_protected:Npn \chemformula_chcpd:nn #1#2 { - \mode_if_math:TF - { - \mathchoice - { \text { #1 } } - { \text { #1 } } - { \text { \scriptsize #1 } } - { \text { \tiny #1 } } - } - { #1 } + \group_begin: + \keys_set:nn { chemmacros / chemformula } { #1 } + \chemformula_input_cmpd:nN { #2 } \l__chemformula_compound_tl + \chemformula_write:V \l__chemformula_compound_tl + \group_end: } -\cs_generate_variant:Nn \chemformula_write:n { V } -%-----------------------------------------------------------------------------% +\NewDocumentCommand \chcpd { O{}m } + { \chemformula_chcpd:nn { #1 } { #2 } } + +% -------------------------------------------------------------------------- % arrow generation & detection \cs_new:Npn \__chemformula_generate_arrows:Nn #1#2 { @@ -681,7 +988,7 @@ \seq_map_inline:Nn \l__chemformula_arrows_type_seq { \tl_replace_all:Nnn \l__chemformula_tmpa_tl - { ##1 } { \__chemformula_arrows_get:n { ##1 } } + { ##1 } { \charrow { ##1 } } } \tl_set_eq:NN #1 \l__chemformula_tmpa_tl } @@ -698,37 +1005,35 @@ } } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% -------------------------------------------------------------------------- % compound names -\dim_new:N \l__chemformula_name_dim -\tl_new:N \l__chemformula_name_tmp_tl - \cs_new:Npn \__chemformula_name_cmpd:w - { \peek_meaning:NTF ( { \__chemformula_name_cmpd_aux:w } { ! } } + { \peek_meaning:NTF ( { \chname } { ! } } -% TODO -% this is no document command -- but now nesting of brackets is possible -\NewDocumentCommand \__chemformula_name_cmpd_aux:w {r()r()} +\NewDocumentCommand \chname { R(){}R(){} } + { \chemformula_chwritebelow:nn { #1 } { #2 } } + +\cs_new:Npn \chemformula_chwritebelow:nn #1#2 { \( \underset { \bool_if:NF \l__chemformula_name_width_bool { - \chemmacros_dim_to_width:Nn \l__chemformula_name_dim + \chemformula_dim_to_width:Nn \l__chemformula_name_dim { \l__chemformula_name_format_tl #1 } } \parbox { \dim_use:N \l__chemformula_name_dim } { \l__chemformula_name_format_tl #1 } } - { \text { \vphantom{\gas} #2 } } + { \text { \strut #2 } } \) } \cs_new_protected:Npn \__chemformula_generate_name:Nn #1#2 { - \tl_set:Nn \l__chemformula_tmpa_tl { #2 } + \__chemformula_sanitize:Nn \l__chemformula_tmpa_tl { #2 } \tl_if_in:VnT \l__chemformula_tmpa_tl { ! } { \tl_replace_all:Nnn \l__chemformula_tmpa_tl @@ -747,97 +1052,8 @@ { \bool_set_true:N \l__chemformula_is_name_bool } } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% -------------------------------------------------------------------------- % parsing input -% booleans: -\bool_new:N \l__chemformula_inside_ch_bool -\bool_new:N \l__chemformula_options_bool -\bool_new:N \l__chemformula_is_option_bool -\bool_new:N \l__chemformula_stoich_bool -\bool_new:N \l__chemformula_no_stoich_bool -\bool_new:N \l__chemformula_is_plus_bool -\bool_new:N \l__chemformula_is_up_bool -\bool_new:N \l__chemformula_is_down_bool -\bool_new:N \l__chemformula_is_arrow_bool -\bool_new:N \l__chemformula_is_name_bool -\bool_new:N \l__chemformula_stoich_is_iupac_bool -\bool_new:N \l__chemformula_stoich_parse_iupac_bool -\bool_new:N \l__chemformula_first_last_text_bool -\bool_new:N \l__chemformula_first_last_double_bool -\bool_new:N \l__chemformula_first_last_single_bool -\bool_new:N \l__chemformula_first_last_math_bool -\bool_new:N \l__chemformula_first_last_dollar_bool -\bool_new:N \l__chemformula_first_last_mathbraces_bool -\bool_new:N \l__chemformula_number_style_math_bool -\bool_new:N \l__chemformula_charge_style_math_bool -\bool_new:N \l__chemformula_sub_bool -\bool_new:N \l__chemformula_sup_bool -\bool_new:N \l__chemformula_is_isotope_bool -\bool_new:N \l__chemformula_xfrac_bool -\bool_new:N \l__chemformula_nicefrac_bool -\bool_new:N \l__chemformula_mathfrac_bool - \bool_set_true:N \l__chemformula_mathfrac_bool -\bool_new:N \l__chemformula_fss_bool -\bool_new:N \l__chemformula_fontspec_bool -\bool_new:N \l__chemformula_fss_family_bool -\bool_new:N \l__chemformula_fss_series_bool -\bool_new:N \l__chemformula_fss_shape_bool -\bool_new:N \l__chemformula_name_width_bool -\bool_new:N \l__chemformula_charge_full_shift_bool - -% token lists: -\tl_new:N \l__chemformula_chemformula_tmpa_tl -\tl_new:N \g__chemformula_options_tl -\tl_new:N \g__chemformula_output_tl -% \tl_new:N \l__chemformula_output_tl -\tl_new:N \l__chemformula_input_tl -\tl_new:N \l__chemformula_stoich_tl -\tl_new:N \l__chemformula_decimal_output_tl -\tl_set:Nn \l__chemformula_decimal_output_tl { . } -\tl_new:N \l__chemformula_font_family_tl -\tl_set_eq:NN \l__chemformula_font_family_tl \f@family -\tl_new:N \l__chemformula_font_series_tl -\tl_set_eq:NN \l__chemformula_font_series_tl \f@series -\tl_new:N \l__chemformula_font_shape_tl -\tl_set_eq:NN \l__chemformula_font_shape_tl \f@shape -\tl_new:N \l__chemformula_format_tl -\tl_new:N \l__chemformula_fontspec_options_tl -\tl_new:N \l__chemformula_fontspec_argument_tl -\tl_new:N \l__chemformula_name_format_tl -\tl_set:Nn \l__chemformula_name_format_tl { \scriptsize\centering } -\tl_new:N \l_chemormula_sup_super_factor_tl -\tl_new:N \l__chemformula_subscript_shift_additional_tl -\tl_set:Nn \l__chemformula_subscript_shift_additional_tl { 0pt } -\tl_new:N \l__chemformula_superscript_shift_additional_tl -\tl_set:Nn \l__chemformula_superscript_shift_additional_tl { 0pt } -\tl_new:N \l__chemformula_bond_style_tl - -% dimensions and skips: -\skip_new:N \l__chemformula_stoich_space_skip -\skip_set:Nn \l__chemformula_stoich_space_skip { .1667em plus .0333em minus .0117em } -\skip_new:N \l__chemformula_math_space_skip -\skip_set:Nn \l__chemformula_math_space_skip { .1667em plus .0333em minus .0117em } -\skip_new:N \l__chemformula_plus_space_skip -\skip_set:Nn \l__chemformula_plus_space_skip { .3em plus .1em minus .1em } -\dim_new:N \l__chemformula_cdot_space_dim -\dim_set:Nn \l__chemformula_cdot_space_dim { .1333em } -\dim_new:N \l__chemformula_charge_shift_dim -\dim_set:Nn \l__chemformula_charge_shift_dim { .5ex } -\dim_new:N \l__chemformula_subscript_shift_dim -\dim_new:N \l__chemformula_superscript_shift_dim -\dim_new:N \l__chemformula_subscript_dim -\dim_zero:N \l__chemformula_subscript_dim -\dim_new:N \l__chemformula_superscript_dim -\dim_zero:N \l__chemformula_superscript_dim -\dim_new:N \l__chemformula_bond_dim -\dim_set:Nn \l__chemformula_bond_dim { .5833em } - -% integers: -\int_new:N \l__chemformula_count_tokens_int - -% property lists: -% behaviour in a compound -\prop_new:N \l__chemformula_cmpd_prop \prop_put:Nnn \l__chemformula_cmpd_prop { 0 } { \chemformula_subscript:n { 0 } } \prop_put:Nnn \l__chemformula_cmpd_prop { 1 } { \chemformula_subscript:n { 1 } } \prop_put:Nnn \l__chemformula_cmpd_prop { 2 } { \chemformula_subscript:n { 2 } } @@ -855,7 +1071,6 @@ \prop_put:Nnn \l__chemformula_cmpd_prop { + } { \chemformula_triple_bond: } % numbers -\prop_new:N \l__chemformula_numbers_prop \prop_put:Nnn \l__chemformula_numbers_prop { 0 } { 0 } \prop_put:Nnn \l__chemformula_numbers_prop { 1 } { 1 } \prop_put:Nnn \l__chemformula_numbers_prop { 2 } { 2 } @@ -868,23 +1083,21 @@ \prop_put:Nnn \l__chemformula_numbers_prop { 9 } { 9 } % behaviour in a charge -\prop_new:N \l__chemformula_charge_prop -\prop_put:Nnn \l__chemformula_charge_prop { 0 } { \__chemformula_charge_style:n { 0 } } -\prop_put:Nnn \l__chemformula_charge_prop { 1 } { \__chemformula_charge_style:n { 1 } } -\prop_put:Nnn \l__chemformula_charge_prop { 2 } { \__chemformula_charge_style:n { 2 } } -\prop_put:Nnn \l__chemformula_charge_prop { 3 } { \__chemformula_charge_style:n { 3 } } -\prop_put:Nnn \l__chemformula_charge_prop { 4 } { \__chemformula_charge_style:n { 4 } } -\prop_put:Nnn \l__chemformula_charge_prop { 5 } { \__chemformula_charge_style:n { 5 } } -\prop_put:Nnn \l__chemformula_charge_prop { 6 } { \__chemformula_charge_style:n { 6 } } -\prop_put:Nnn \l__chemformula_charge_prop { 7 } { \__chemformula_charge_style:n { 7 } } -\prop_put:Nnn \l__chemformula_charge_prop { 8 } { \__chemformula_charge_style:n { 8 } } -\prop_put:Nnn \l__chemformula_charge_prop { 9 } { \__chemformula_charge_style:n { 9 } } +\prop_put:Nnn \l__chemformula_charge_prop { 0 } { \chemformula_charge_style:n { 0 } } +\prop_put:Nnn \l__chemformula_charge_prop { 1 } { \chemformula_charge_style:n { 1 } } +\prop_put:Nnn \l__chemformula_charge_prop { 2 } { \chemformula_charge_style:n { 2 } } +\prop_put:Nnn \l__chemformula_charge_prop { 3 } { \chemformula_charge_style:n { 3 } } +\prop_put:Nnn \l__chemformula_charge_prop { 4 } { \chemformula_charge_style:n { 4 } } +\prop_put:Nnn \l__chemformula_charge_prop { 5 } { \chemformula_charge_style:n { 5 } } +\prop_put:Nnn \l__chemformula_charge_prop { 6 } { \chemformula_charge_style:n { 6 } } +\prop_put:Nnn \l__chemformula_charge_prop { 7 } { \chemformula_charge_style:n { 7 } } +\prop_put:Nnn \l__chemformula_charge_prop { 8 } { \chemformula_charge_style:n { 8 } } +\prop_put:Nnn \l__chemformula_charge_prop { 9 } { \chemformula_charge_style:n { 9 } } \prop_put:Nnn \l__chemformula_charge_prop { + } { \chemformula_plus: } \prop_put:Nnn \l__chemformula_charge_prop { - } { \chemformula_minus: } \prop_put:Nnn \l__chemformula_charge_prop { . } { \chemformula_radical: } % stoichiometric factors -\prop_new:N \l__chemformula_stoich_prop \prop_put:Nnn \l__chemformula_stoich_prop { 0 } { 0 } \prop_put:Nnn \l__chemformula_stoich_prop { 1 } { 1 } \prop_put:Nnn \l__chemformula_stoich_prop { 2 } { 2 } @@ -902,7 +1115,6 @@ \prop_put:Nnn \l__chemformula_stoich_prop { ( } { ( } \prop_put:Nnn \l__chemformula_stoich_prop { ) } { ) } -\prop_new:N \l__chemformula_no_stoich_prop \prop_put:Nnn \l__chemformula_no_stoich_prop { . } { } \prop_put:Nnn \l__chemformula_no_stoich_prop { , } { } \prop_put:Nnn \l__chemformula_no_stoich_prop { / } { } @@ -910,12 +1122,8 @@ \prop_put:Nnn \l__chemformula_no_stoich_prop { ( } { } \prop_put:Nnn \l__chemformula_no_stoich_prop { ) } { } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % bonds: -\dim_new:N \l__chemformula_bond_space_dim -\dim_set:Nn \l__chemformula_bond_space_dim { .07em } -\prop_new:N \l__chemformula_bonds_prop - \cs_new:Npn \chemformula@bondlength { \l__chemformula_bond_dim } @@ -932,9 +1140,9 @@ \cs_new:Npn \chemformula_triple_bond: { \chemformula_bond:n { triple } } -\cs_new:Npn \chemformula_bond:n #1 +\cs_new_protected:Npn \chemformula_bond:n #1 { - \chemmacros_skip_nobreak:N \l__chemformula_bond_space_dim + \chemformula_skip_nobreak:N \l__chemformula_bond_space_dim \chemformula_tikz:nn { inner~sep = 0 , @@ -953,14 +1161,14 @@ { \__chemformula_bond_draw:n { single } } { \__chemformula_bond_draw:n { #1 } } } - \chemmacros_skip_nobreak:N \l__chemformula_bond_space_dim + \chemformula_skip_nobreak:N \l__chemformula_bond_space_dim } \cs_new_protected:Npn \__chemformula_bond_draw:n #1 { \tl_set_rescan:Nnn \l__chemformula_tmpa_tl {} { #1 } - \exp_args:NNo \prop_get:Nn \l__chemformula_bonds_prop - { \l__chemformula_tmpa_tl } + \prop_get:NV \l__chemformula_bonds_prop + \l__chemformula_tmpa_tl } \tikzset { chembond/.style={butt~cap-butt~cap,\l__chemformula_bond_style_tl} } @@ -968,7 +1176,7 @@ \NewDocumentCommand \DeclareChemBond { mm } { \cs_if_exist:cTF { chemformula_bond_type_#1 } - { \chemmacros_msg:nnxx { chemformula } { declare-bond } { #1 } {} } + { \chemformula_error:nnxx { chemformula } { declare-bond } { #1 } {} } { \cs_new:cpn { chemformula_bond_type_#1 } {} \prop_put:Nnn \l__chemformula_bonds_prop { #1 } { #2 } @@ -978,7 +1186,7 @@ \NewDocumentCommand \DeclareChemBondAlias { mm } { \cs_if_exist:cTF { chemformula_bond_type_#1 } - { \chemmacros_msg:nnxx { chemformula } { declare-bond } { #1 } {} } + { \chemformula_error:nnxx { chemformula } { declare-bond } { #1 } {} } { \cs_new:cpn { chemformula_bond_type_#1 } {} \prop_get:NnN \l__chemformula_bonds_prop { #2 } \l__chemformula_tmpa_tl @@ -990,7 +1198,7 @@ { \cs_if_exist:cTF { chemformula_bond_type_#1 } { \prop_put:Nnn \l__chemformula_bonds_prop { #1 } { #2 } } - { \chemmacros_msg:nnxx { chemformula } { renew-bond } { #1 } {} } + { \chemformula_error:nnxx { chemformula } { renew-bond } { #1 } {} } } \NewDocumentCommand \ShowChemBond { m } @@ -1071,7 +1279,7 @@ { \draw[chembond,<-butt~cap] (chemformula-bond-start) -- (chemformula-bond-end) ; } \DeclareChemBondAlias{<co}{coordleft} -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % sub- and superscripts \cs_new:Npn \__chemformula_number_style:n #1 { @@ -1079,19 +1287,17 @@ { \ensuremath { #1 } } { \ensuremath { \text { #1 } } } } +\cs_generate_variant:Nn \__chemformula_number_style:n { V } -\cs_new:Npn \__chemformula_charge_style:n #1 +\cs_new_protected:Npn \chemformula_charge_style:n #1 { \bool_if:NTF \l__chemformula_charge_style_math_bool { \ensuremath { #1 } } { \ensuremath { \text { #1 } } } } -\cs_generate_variant:Nn \__chemformula_charge_style:n { V } +\cs_generate_variant:Nn \chemformula_charge_style:n { V } % subscripts -\tl_new:N \l__chemformula_subscript_tl -\box_new:N \l__chemformula_subscript_box - % remove double or nested sub- and superscripts \cs_new_protected:Npn \chemformula_subscript:n #1 { @@ -1129,7 +1335,7 @@ } } } -\cs_generate_variant:Nn \__chemformula_subscript:n { o,V } +\cs_generate_variant:Nn \__chemformula_subscript:n { V } \cs_new_protected:Npn \__chemformula_clean_subscript: { @@ -1146,7 +1352,7 @@ \cs_new_protected:Npn \__chemformula_subscript_raise:N #1 { \hbox_set:Nn \l__chemformula_tmpa_box - { $\scriptstyle Hg$ } + { \(\scriptstyle Hg\) } \hbox_set:Nn \l__chemformula_tmpb_box { Hg } \dim_set:Nn #1 { @@ -1157,17 +1363,23 @@ \tex_raise:D #1 } -\cs_new:Npn \__chemformula_subscript_write:n #1 +\cs_new_protected:Npn \__chemformula_subscript_write:n #1 { - \__chemformula_subscript_raise:N \l__chemformula_subscript_shift_dim - \hbox:n - { - $\scriptstyle - \prop_get:NoNTF \l__chemformula_numbers_prop - { #1 } \l__chemformula_tmpa_tl - { \__chemformula_number_style:n { \l__chemformula_tmpa_tl } } - { \__chemformula_number_style:n { #1 } }$ - } + \group_begin: + \tl_set_eq:NN \chemformula_subscript:n \use:n + \tl_set_eq:NN \chemformula_superscript:n \use:n + \__chemformula_subscript_raise:N \l__chemformula_subscript_shift_dim + \hbox:n + { + \( + \scriptstyle + \prop_get:NoNTF \l__chemformula_numbers_prop + { #1 } \l__chemformula_tmpa_tl + { \__chemformula_number_style:V \l__chemformula_tmpa_tl } + { \__chemformula_number_style:n { #1 } } + \) + } + \group_end: } \cs_generate_variant:Nn \__chemformula_subscript_write:n { V } @@ -1182,9 +1394,6 @@ \cs_generate_variant:Nn \__chemformula_measure_subscript:n { V } % superscripts -\tl_new:N \l__chemformula_superscript_tl -\box_new:N \l__chemformula_superscript_box - % remove double or nested sub- and superscripts \cs_new_protected:Npn \chemformula_superscript:n #1 { @@ -1219,7 +1428,7 @@ } } } -\cs_generate_variant:Nn \__chemformula_superscript:n { o,V } +\cs_generate_variant:Nn \__chemformula_superscript:n { V } \cs_new_protected:Npn \__chemformula_clean_superscript: { @@ -1242,7 +1451,7 @@ \cs_new_protected:Npn \__chemformula_superscript_raise:N #1 { \hbox_set:Nn \l__chemformula_tmpa_box - { $\scriptstyle Hg$ } + { \(\scriptstyle Hg\) } \hbox_set:Nn \l__chemformula_tmpb_box { Hg } \dim_set:Nn #1 { @@ -1253,17 +1462,23 @@ \tex_raise:D #1 } -\cs_new:Npn \__chemformula_superscript_write:n #1 +\cs_new_protected:Npn \__chemformula_superscript_write:n #1 { - \__chemformula_superscript_raise:N \l__chemformula_superscript_shift_dim - \hbox:n - { - $\scriptstyle - \prop_get:NoNTF \l__chemformula_charge_prop - { #1 } \l__chemformula_tmpa_tl - { \__chemformula_charge_style:V \l__chemformula_tmpa_tl } - { \__chemformula_charge_style:n { #1 } }$ - } + \group_begin: + \tl_set_eq:NN \chemformula_subscript:n \use:n + \tl_set_eq:NN \chemformula_superscript:n \use:n + \__chemformula_superscript_raise:N \l__chemformula_superscript_shift_dim + \hbox:n + { + \( + \scriptstyle + \prop_get:NoNTF \l__chemformula_charge_prop + { #1 } \l__chemformula_tmpa_tl + { \tl_use:N \l__chemformula_tmpa_tl } + { \chemformula_charge_style:n { #1 } } + \) + } + \group_end: } \cs_generate_variant:Nn \__chemformula_superscript_write:n { V } @@ -1341,7 +1556,8 @@ \bool_if:NTF \l__chemformula_charge_full_shift_bool { \tl_if_blank:VF \l__chemformula_subscript_tl - { \dim_set:Nn \l__chemformula_tmpa_dim { - \l__chemformula_superscript_dim } } + { \dim_set:Nn \l__chemformula_tmpa_dim + { - \l__chemformula_superscript_dim } } } { \tl_if_blank:VF \l__chemformula_superscript_tl @@ -1367,23 +1583,15 @@ \tl_clear:N \l__chemformula_superscript_tl } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % read the input \cs_new_protected:Npn \chemformula_input:n #1 { - \tl_set_rescan:Nnn \l__chemformula_chemformula_tmpa_tl - { - \char_set_catcode_letter:N \{ - \char_set_catcode_letter:N \} - \char_set_catcode_letter:N \\ - \char_set_catcode_other:N \" - \char_set_catcode_math_superscript:N \^ - } - { #1 } + \__chemformula_sanitize:Nn \l__chemformula_chemformula_tmpa_tl { #1 } \chemformula_input_escape_text:V \l__chemformula_chemformula_tmpa_tl \chemformula_input_escape_math:n { #1 } \chemformula_input_stoich:n { #1 } - \__chemformula_clean_chem_macros:V \l__chemformula_chemformula_tmpa_tl + \__chemformula_clean_chemmacros:V \l__chemformula_chemformula_tmpa_tl \chemformula_input_cmpd:VN \l__chemformula_chemformula_tmpa_tl \l__chemformula_input_tl \chemformula_input_arrow:n { #1 } @@ -1393,7 +1601,7 @@ \chemformula_input_down:n { #1 } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % set options for next compound: \cs_new_protected:Npn \chemformula_input_options:n #1 { @@ -1412,7 +1620,7 @@ { \bool_set_false:N \l__chemformula_is_option_bool } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input stoichiometric factors \cs_new_protected:Npn \chemformula_input_stoich:n #1 { @@ -1470,6 +1678,7 @@ \DeclareInstance { xfrac } { chemformula-text-frac } { text } { slash-left-kern = -.15em , + numerator-top-sep = 0pt , slash-right-kern = -.15em } @@ -1530,9 +1739,8 @@ { \sfrac[chemformula-text-frac]{#1}{#2} } \bool_if:NT \l__chemformula_nicefrac_bool { \nicefrac{#1}{#2} } - % FIXME: why doesn't this work without \textstyle? \bool_if:NT \l__chemformula_mathfrac_bool - { $ \textstyle \frac{ \text { #1 } } { \text { #2 } } $ } + { \( \frac{ \text { #1 } } { \text { #2 } } \) } } \cs_new:Npn \__chemformula_misc_frac:nnn #1#2#3 @@ -1542,10 +1750,10 @@ \bool_if:NT \l__chemformula_nicefrac_bool { #1\nicefrac{#2}{#3} } \bool_if:NT \l__chemformula_mathfrac_bool - { #1 $ \frac{ \text { #2 } } { \text { #3 } } $ } + { #1 \( \frac{ \text { #2 } } { \text { #3 } } \) } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input compounds \cs_new_protected:Npn \chemformula_input_cmpd:nN #1#2 { @@ -1565,7 +1773,8 @@ \tl_put_right:Nn #2 { \group_begin: - \keys_set:nV { chemmacros / chemformula } + \keys_set:nV + { chemmacros / chemformula } \l__chemformula_internal_options_tl } } @@ -1597,7 +1806,7 @@ } { \tl_put_right:Nn #2 - { \skip_horizontal:N \l__chemformula_stoich_space_skip } + { \chemformula_skip_nobreak:N \l__chemformula_stoich_space_skip } \tl_clear:N \l__chemformula_stoich_tl } } @@ -1640,20 +1849,25 @@ { % expl3 catcodes: \char_set_catcode_letter:N \_ + \char_set_catcode_letter:N \: + % I've forgotten why I put this here: \char_set_catcode_math_superscript:N \^ - % disable some of the specials: + % disable some of the specials (needed for sub- and superscripts): \char_set_catcode_letter:N \{ \char_set_catcode_letter:N \} - \char_set_catcode_letter:N \\ + % this one seems not necessary any more: +% \char_set_catcode_letter:N \\ \char_set_catcode_letter:N \# % make the naming work with babel languages like French that make % ! active: \char_set_catcode_other:N \! + % ensure " is other: + \char_set_catcode_other:N \" } { #2 } } +\cs_generate_variant:Nn \__chemformula_sanitize:Nn { NV } -\cs_generate_variant:Nn \tl_if_in:nnT { x } \cs_new_protected:Npn \__chemformula_handle_sub_and_superscripts:nN #1#2 { \__chemformula_sanitize:Nn \l__chemformula_tmpa_tl { #1 } @@ -1717,9 +1931,9 @@ } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % clean up chemmacros commands: -\cs_new_protected:Npn \__chemformula_clean_chem_macros:n #1 +\cs_new_protected:Npn \__chemformula_clean_chemmacros:n #1 { \cs_set:Nn \chemmacros_text:n { @@ -1729,9 +1943,9 @@ } \cs_set:Npn \chemmacros_xspace: {} } -\cs_generate_variant:Nn \__chemformula_clean_chem_macros:n { V } +\cs_generate_variant:Nn \__chemformula_clean_chemmacros:n { V } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input "and" sign \cs_new_protected:Npn \chemformula_input_plus:n #1 { @@ -1739,7 +1953,7 @@ { \tl_put_right:Nn \l__chemformula_input_tl { - \skip_horizontal:N \l__chemformula_plus_space_skip + \chemformula_skip_nobreak:N \l__chemformula_plus_space_skip + \skip_horizontal:N \l__chemformula_plus_space_skip } @@ -1747,9 +1961,8 @@ \bool_set_false:N \l__chemformula_is_plus_bool } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input escaping gas -\tl_new:N \g__chemformula_input_up_tl \cs_new_protected:Npn \chemformula_input_up:n #1 { \group_begin: @@ -1764,23 +1977,23 @@ { \tl_gclear:N \g__chemformula_input_up_tl \tl_if_eq:nnT { #1 } { ^ } - { \tl_gset:Nn \g__chemformula_input_up_tl { $\uparrow$ } } + { \tl_gset:Nn \g__chemformula_input_up_tl { \(\uparrow\) } } \group_end: \tl_put_right:NV \l__chemformula_input_tl \g__chemformula_input_up_tl \bool_set_false:N \l__chemformula_is_up_bool } \cs_generate_variant:Nn \__chemformula_input_up:n { V } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input precipitate \cs_new_protected:Npn \chemformula_input_down:n #1 { \tl_if_eq:nnT { #1 } { v } - { \tl_put_right:Nn \l__chemformula_input_tl { $\downarrow$ } } + { \tl_put_right:Nn \l__chemformula_input_tl { \(\downarrow\) } } \bool_set_false:N \l__chemformula_is_down_bool } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input arrow \cs_new_protected:Npn \chemformula_input_arrow:n #1 { @@ -1798,7 +2011,7 @@ } \cs_generate_variant:Nn \chemformula_input_arrow:n { o } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input compound name \cs_new_protected:Npn \chemformula_input_name:n #1 { @@ -1815,7 +2028,7 @@ \bool_set_false:N \l__chemformula_is_name_bool } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input escaped text % #1: <bool> #2: <tl> #3: <first> #4: <last> \cs_new_protected:Npn \__chemformula_bool_set_if_first_last:Nnnn #1#2#3#4 @@ -1861,6 +2074,7 @@ { \char_set_catcode_letter:N \_ \char_set_catcode_other:N \: + } { #1 } \tl_replace_all:Nnn \l__chemformula_tmpa_tl @@ -1869,9 +2083,6 @@ { _ } { \sb } \tl_replace_all:Nnn \l__chemformula_tmpa_tl { chemformulaplaceholder } { \_ } - \tl_set_rescan:Nno \l__chemformula_tmpa_tl - { }% TODO da war \ExplSyntaxOff drin: brauchts das? - { \l__chemformula_tmpa_tl } \tl_put_right:NV \l__chemformula_input_tl \l__chemformula_tmpa_tl } @@ -1899,7 +2110,7 @@ } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % input escaped math \cs_new_protected:Npn \chemformula_input_escape_math:n #1 { @@ -1930,12 +2141,9 @@ { _ } { \sb } \tl_replace_all:Nnn \l__chemformula_tmpa_tl { chemformulaplaceholder } { \_ } - \tl_set_rescan:Nno \l__chemformula_tmpa_tl - { }% TODO da war \ExplSyntaxOff drin: brauchts das? - { \l__chemformula_tmpa_tl } \tl_put_right:NV \l__chemformula_input_tl \l__chemformula_tmpa_tl \tl_put_right:Nn \l__chemformula_input_tl - { \skip_horizontal:N \l__chemformula_math_space_skip } + { \chemformula_skip_nobreak:N \l__chemformula_math_space_skip } } \cs_new:Npn \__chemformula_read_escape_dollar:w $#1$ \q_nil @@ -1962,7 +2170,7 @@ } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- % customization of output other than arrows \keys_define:nn { chemmacros / chemformula } { @@ -2005,7 +2213,7 @@ \bool_set_false:N \l__chemformula_mathfrac_bool , stoich-paren-parse .bool_set:N = \l__chemformula_stoich_parse_iupac_bool , stoich-space .skip_set:N = \l__chemformula_stoich_space_skip , - adduct-space .dim_set:N = \l__chemformula_cdot_space_dim , + adduct-space .dim_set:N = \l__chemformula_adduct_space_dim , plus-space .skip_set:N = \l__chemformula_plus_space_skip , math-space .skip_set:N = \l__chemformula_math_space_skip , name-format .tl_set:N = \l__chemformula_name_format_tl , @@ -2046,21 +2254,125 @@ \tl_set:Nn \l__chemformula_format_tl { #1 } } -%-----------------------------------------------------------------------------% +% -------------------------------------------------------------------------- + +\NewDocumentCommand \setchemformula { m } + { \keys_set:nn { chemmacros / chemformula } { #1 } } + +% -------------------------------------------------------------------------- % hyperref support \AfterPackage* { hyperref } - { \pdfstringdefDisableCommands { \cs_set:Npn \ch #1 { #1 } } } + { + \pdfstringdefDisableCommands + { + \cs_set:Npn \chcpd #1 { #1 } + \cs_set:Npn \charrow #1 { #1 } + \cs_set:Npn \chname (#1)(#2) { #2~(#1) } + \cs_set:Npn \ch #1 { #1 } + } + } \tex_endinput:D -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -VERSION HISTORY -see the chemmacros.sty file -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% -------------------------------------------------------------------------- +VERSION HISTORY +2012/01/28 - version 3.0 - bundled with packages `chemmacros' and `ghs' +2012/01/30 - version 3.0a - bugfix + - renamed formula => chemformula + (following a request by Karl Berry for TeXlive) +2012/02/03 - version 3.0b - stepped number with `chemmacros' +2012/02/05 - version 3.0c - stepped number with `chemmacros' +2012/02/10 - version 3.0d - several bugfixes + - new arrow type <> +2012/02/19 - version 3.1 - new arrow types -/>, </- and <o> + - new commands \DeclareChemArrow, \RenewChemArrow and + \ShowChemArrow +2012/02/26 - version 3.1a - stepped number with `chemmacros' +2012/03/03 - version 3.1b - arrow types are stored in a sequence to automate the + search and replace in the right order + - new arrow type == + - IUPAC compliance for stoichiometric factors + - new handling of super- and subscripts to correct + various flaws: clear distinction between isotope and + formula + - new option charge-vshift +2012/03/14 - version 3.1c - improved arrow labels +2012/03/20 - version 3.2 - new: option input via @{<options>} +2012/05/07 - version 3.3 - \ch now bypasses \ref{}, \label{}, and \intertext{} +2012/05/13 - version 3.3a - stepped number with `chemmacros' +2012/05/18 - version 3.3b - stepped number with `chemmacros' +2012/05/18 - version 3.3c - stepped number with `chemmacros' +2012/07/24 - version 3.3d - stepped number with `chemmacros' + - default bond length set to 1.1667ex + - bug fix in the bonds +2012/08/21 - version 3.3e - stepped number with `chemmacros' +2012/09/11 - version 3.4 - cleaned a little, minor bug fixes + - switched to internal scratch variables + - new command \bond, more bond types + - new commands \DeclareChemBond, \DeclareChemBondAlias, + \RenewChemBond and \ShowChemBond + - radical point thicker, new options `radical-style' + and `radical-radius' +2012/10/03 - version 3.4a - stepped number with `chemmacros' +2013/01/04 - version 3.4b - bug fix in the sub- and superscript handling +2013/01/28 - version 3.5 - disallow breaks at bonds + - allow breaks after arrows + - made some spaces in chemformulas stretch- and + shrinkable + - various internal code improvements + - changed defaults for horizontal spaces that have in + set in ex into corresponding values in em. + - improvements to the placement of sub- and superscripts +2013/02/19 - version 3.5a - stepped number with `chemmacros' +2013/02/26 - version 3.6 - support for use with the `breqn' package + - math escaping also via \(\) + - internal: clearer escaping macros + - new options: `radical-vshift', `radical-hshift' + and `radical-space' + - bug fix: `radical-...' options are now correctly set + - stoichiometric factors: add leading 0 if missing + - new option: `stoich-paren-parse' + - internal changes: be way more rigid about protected + and expandable macros + - internal changes: clearer distinction between + private macros and accessable module macros + - internal changes: clearer distinction between + document commands and module level commands + - !()() syntax now also works with babel's French +2013/02/27 - version 3.6a - bug fix: escaped text and math stays escaped, i.e. + also arrow code like `<=>' +2013/04/19 - version 3.6b - new option `arrow-min-length' + - bug fix: stoichiometric fractions correctly displayed +2013/07/06 - version 4.0 - don't need `chemmacros' package any more, + `chemformula' can be used stand-alone; + this has lead to a few definitions that previously + were done by chemmacros; chemmacros will get them + now from chemformula when needed + - bug fix: allow braces in subscripts and superscripts + by disabling superfluous \chemformula_subscript:n + and \chemformula_superscript:n in the scripts write + commands + - remove superfluous rescanning at the begin of the + formula input; this is handled by the sanitize + command later anyway + - changed internal mathshifts from $ ... $ to \( ... \) + - removed superfluous \textstyle from math-frac + definition + - new command \charrow{}[][] that allows direct + access to chemformula's arrows + - new command \chname()() that allows direct access + to chemformula's naming + - new command \chcpd[]{} that allows typesetting a + simple single formula - also not nestable with \ch + - new command \setchemformula + - package option: `strict' + - don't allow a line break before a plus + (`chem-and') + - don't allow a line break between a stoichiometric + factor and a compound + - changed formal charges to match ``plain'' charges + +% -------------------------------------------------------------------------- % TODO -- Bug: math- und text-escaping schützt nicht vor arrow-Umwandlung: \ch{"->"} - Addukte: Zahlen nach * und . automatisch erkennen? -- allow fractions in subscripts: _{$\frac{1}{2}$} ? - optionale Argumente von \\ nach außen weiterreichen? -- vertikalen Shift der Hoch- und Tiefstellungen mit \mathchoice anpassen: - \( K = \frac{[\ch{Na+}]^2[\ch{SO4^2-}]}{[\ch{Na2SO4}]} \)
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemgreek.sty b/Master/texmf-dist/tex/latex/chemmacros/chemgreek.sty new file mode 100644 index 00000000000..dc072de4205 --- /dev/null +++ b/Master/texmf-dist/tex/latex/chemmacros/chemgreek.sty @@ -0,0 +1,443 @@ +% ---------------------------------------------------------------------------- +% - the CHEMMACROS bundle +% - chemgreek.sty +% - 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. +% ---------------------------------------------------------------------------- +\RequirePackage{expl3,xparse} +\def\chemgreek@version{0.1a} +\def\chemgreek@date{2013/07/06} + +\ProvidesExplPackage{chemgreek}{\chemgreek@date}{\chemgreek@version} + {interface for upright greek letters for use in chemistry (CN)} + +% ---------------------------------------------------------------------------- +% temporary variables: +\seq_new:N \l__chemgreek_tmpa_seq +\tl_new:N \l__chemgreek_tmpa_tl +\tl_new:N \l__chemgreek_tmpb_tl +\int_new:N \l__chemgreek_tmpa_int +\int_new:N \g__chemgreek_tmpa_int + +% ---------------------------------------------------------------------------- +% messages +\msg_new:nnnn { chemgreek } { mapping-not-defined } + { The~ mapping~ `#1'~ does~ not~ exist~ \msg_line_context: } + { + You~ chose~ the~ mapping~ `#1'~ which~ has~ apparently~ not~ been~ + defined,~ yet.~ If~ this~ is~ due~ to~ a~ miss-spelling~ you~ need~ to~ + declare~ it~ first~ via~ \token_to_str:N \newchemgreekmapping \c_space_tl + or~ \token_to_str:N \declarechemgreekmapping . + } + +\msg_new:nnnn { chemgreek } { mapping-defined } + { The~ mapping~ `#1'~ does~ already~ exist~ \msg_line_context: } + { + It~ seems~ you're~ trying~ to~ define~ the~ mapping~ `#1'.~ However,~ + this~ mapping~ does~ already~ exist.~ If~ this~ is~ not~ due~ to~ a~ + miss-spelling~ you~ need~ to~ redefine~ it~ via~ \token_to_str:N + \renewchemgreekmapping . + } + +% ---------------------------------------------------------------------------- +% a tokenlist constant that will be used to build the mapping property lists +% both for uppercase and lowercase and also for setting the output macros +\tl_const:Nn \c__chemgreek_order_tl + { + { alpha } % 1 + { beta } % 2 + { gamma } % 3 + { delta } % 4 + { epsilon } % 5 + { zeta } % 6 + { eta } % 7 + { theta } % 8 + { iota } % 9 + { kappa } % 10 + { lambda } % 11 + { mu } % 12 + { nu } % 13 + { xi } % 14 + { omikron } % 15 + { pi } % 16 + { rho } % 17 + { sigma } % 18 + { tau } % 19 + { upsilon } % 20 + { phi } % 21 + { psi } % 22 + { chi } % 23 + { omega } % 24 + } + +% ---------------------------------------------------------------------------- +% variants of kernel functions: +\cs_generate_variant:Nn \prop_put:Nnn { cxV } + +% ---------------------------------------------------------------------------- +% helper function to retrieve upper- and lowercase entries while the mapping +% happens: +\cs_new:Npn \__chemgreek_get_upper_lower:w #1 / #2 \q_stop + { + \tl_set:Nn \l__chemgreek_tmpa_tl { #1 } + \tl_set:Nn \l__chemgreek_tmpb_tl { #2 } + } + +% ---------------------------------------------------------------------------- +% a conditional to test if a mapping exists: +\prg_new_conditional:Npnn \chemgreek_if_mapping_exists:n #1 {p,T,F,TF} + { + \bool_if:nTF + { + \prop_if_exist_p:c { l__chemgreek_uppercase_mapping_#1_prop } && + \prop_if_exist_p:c { l__chemgreek_lowercase_mapping_#1_prop } + } + { \prg_return_true: } + { \prg_return_false: } + } + +% ---------------------------------------------------------------------------- +% the main mapping function: +% #1: mapping-name +% #2: mapping-entries +\cs_new_protected:Npn \chemgreek_new_mapping:nn #1#2 + { + \chemgreek_if_mapping_exists:nTF { #1 } + { \msg_error:nn { chemgreek } { mapping-defined } } + { + \prop_new:c { l__chemgreek_uppercase_mapping_#1_prop } + \prop_new:c { l__chemgreek_lowercase_mapping_#1_prop } + \__chemgreek_set_mapping:nn { #1 } { #2 } + } + } + +\cs_new_protected:Npn \chemgreek_renew_mapping:nn #1#2 + { + \chemgreek_if_mapping_exists:nTF { #1 } + { \__chemgreek_set_mapping:nn { #1 } { #2 } } + { \msg_error:nn { chemgreek } { mapping-not-defined } } + } + +\cs_new_protected:Npn \chemgreek_declare_mapping:nn #1#2 + { + \chemgreek_if_mapping_exists:nF { #1 } + { + \prop_new:c { l__chemgreek_uppercase_mapping_#1_prop } + \prop_new:c { l__chemgreek_lowercase_mapping_#1_prop } + } + \__chemgreek_set_mapping:nn { #1 } { #2 } + } + +\cs_new_protected:Npn \__chemgreek_set_mapping:nn #1#2 + { + \int_zero:N \l__chemgreek_tmpa_int + \clist_map_inline:nn { #2 } + { + \int_incr:N \l__chemgreek_tmpa_int + \__chemgreek_get_upper_lower:w ##1 \q_stop + \prop_put:cxV { l__chemgreek_lowercase_mapping_#1_prop } + { \tl_item:Nn \c__chemgreek_order_tl { \l__chemgreek_tmpa_int } } + \l__chemgreek_tmpa_tl + \prop_put:cxV { l__chemgreek_uppercase_mapping_#1_prop } + { \tl_item:Nn \c__chemgreek_order_tl { \l__chemgreek_tmpa_int } } + \l__chemgreek_tmpb_tl + } + } + +% the user command: +\NewDocumentCommand \newchemgreekmapping { mm } + { \chemgreek_new_mapping:nn { #1 } { #2 } } + +\NewDocumentCommand \renewchemgreekmapping { mm } + { \chemgreek_renew_mapping:nn { #1 } { #2 } } + +\NewDocumentCommand \declarechemgreekmapping { mm } + { \chemgreek_declare_mapping:nn { #1 } { #2 } } + +% ---------------------------------------------------------------------------- +% a function to selectively change specific entries in a mapping: +% #1: mapping-name +% #2: upper / lower +% #3: entry-name +% #4: entry +\cs_new_protected:Npn \chemgreek_change:nnnn #1#2#3#4 + { + \chemgreek_if_mapping_exists:nTF { #1 } + { + \prop_put:cnn { l__chemgreek_#2 case_mapping_#1_prop } + { #3 } + { #4 } + } + { \msg_error:nn { chemgreek } { mapping-not-defined } } + } + +% the user command: +\NewDocumentCommand \changechemgreeksymbol { mmmm } + { \chemgreek_change:nnnn { #1 } { #2 } { #3 } { #4 } } + +% ---------------------------------------------------------------------------- +% a function to activate a mapping: +% #1: mapping-name +\cs_new_protected:Npn \chemgreek_activate_mapping:n #1 + { + \chemgreek_if_mapping_exists:nTF { #1 } + { + \tl_map_inline:Nn \c__chemgreek_order_tl + { + \cs_set_protected:cpx { Chem \tl_expandable_uppercase:n ##1 } + { \prop_get:cn { l__chemgreek_uppercase_mapping_#1_prop } { ##1 } } + \cs_set_protected:cpx { Chem ##1 } + { \prop_get:cn { l__chemgreek_lowercase_mapping_#1_prop } { ##1 } } + } + } + { \msg_error:nn { chemgreek } { mapping-not-defined } } + } + +% user command that also loads the needed package: +% #1: load package +% #2: option +% #3: mapping-name +\NewDocumentCommand \activatechemgreekmapping { som } + { + \IfBooleanT { #1 } + { + \IfNoValueTF { #2 } + { \RequirePackage { #3 } } + { \RequirePackage [ #2 ] { #3 } } + } + \chemgreek_activate_mapping:n { #3 } + } +\@onlypreamble\activatechemgreekmapping + +% user command that activates a new mapping without loading the package: +\NewDocumentCommand \selectchemgreekmapping { m } + { \chemgreek_activate_mapping:n { #1 } } + +% ---------------------------------------------------------------------------- +% a debugging command: +\cs_new_protected:Npn \chemgreek_show_mapping:n #1 + { + \chemgreek_activate_mapping:n { #1 } + \int_gzero:N \g__chemgreek_tmpa_int + \begin { tabular } { llll } + pos & name & lower & upper \\ + \tl_map_inline:Nn \c__chemgreek_order_tl + { + \int_gincr:N \g__chemgreek_tmpa_int + \int_use:N \g__chemgreek_tmpa_int . & + ##1 & + \use:c { Chem ##1 } & + \use:c { Chem \tl_expandable_uppercase:n ##1 } \\ + } + \end{tabular} + } + +\cs_new_eq:NN \showchemgreekmapping \chemgreek_show_mapping:n + +% ---------------------------------------------------------------------------- +% predefine some mappings +% default: +\chemgreek_new_mapping:nn { default } + { + \ensuremath{\alpha} / \ensuremath{\mathrm{A}} , % 1 + \ensuremath{\beta} / \ensuremath{\mathrm{B}} , % 2 + \ensuremath{\gamma} / \ensuremath{\Gamma} , % 3 + \ensuremath{\delta} / \ensuremath{\Delta} , % 4 + \ensuremath{\epsilon} / \ensuremath{\mathrm{E}} , % 5 + \ensuremath{\zeta} / \ensuremath{\mathrm{Z}} , % 6 + \ensuremath{\eta} / \ensuremath{\mathrm{H}} , % 7 + \ensuremath{\theta} / \ensuremath{\Theta} , % 8 + \ensuremath{\iota} / \ensuremath{\mathrm{I}} , % 9 + \ensuremath{\kappa} / \ensuremath{\mathrm{K}} , % 10 + \ensuremath{\lambda} / \ensuremath{\Lambda} , % 11 + \ensuremath{\mu} / \ensuremath{\mathrm{M}} , % 12 + \ensuremath{\nu} / \ensuremath{\mathrm{N}} , % 13 + \ensuremath{\xi} / \ensuremath{\Xi} , % 14 + \ensuremath{o} / \ensuremath{\mathrm{O}} , % 15 + \ensuremath{\pi} / \ensuremath{\Pi} , % 16 + \ensuremath{\rho} / \ensuremath{\mathrm{P}} , % 17 + \ensuremath{\sigma} / \ensuremath{\Sigma} , % 18 + \ensuremath{\tau} / \ensuremath{\mathrm{T}} , % 19 + \ensuremath{\upsilon} / \ensuremath{\Upsilon} , % 20 + \ensuremath{\phi} / \ensuremath{\Phi} , % 21 + \ensuremath{\psi} / \ensuremath{\Psi} , % 22 + \ensuremath{\chi} / \ensuremath{\mathrm{X}} , % 23 + \ensuremath{\omega} / \ensuremath{\Omega} % 24 + } + +% default-variant: +\chemgreek_new_mapping:nn { var-default } + { + \ensuremath{\alpha} / \ensuremath{\mathrm{A}} , % 1 + \ensuremath{\beta} / \ensuremath{\mathrm{B}} , % 2 + \ensuremath{\gamma} / \ensuremath{\Gamma} , % 3 + \ensuremath{\delta} / \ensuremath{\Delta} , % 4 + \ensuremath{\varepsilon} / \ensuremath{\mathrm{E}} , % 5 + \ensuremath{\zeta} / \ensuremath{\mathrm{Z}} , % 6 + \ensuremath{\eta} / \ensuremath{\mathrm{H}} , % 7 + \ensuremath{\theta} / \ensuremath{\Theta} , % 8 + \ensuremath{\iota} / \ensuremath{\mathrm{I}} , % 9 + \ensuremath{\kappa} / \ensuremath{\mathrm{K}} , % 10 + \ensuremath{\lambda} / \ensuremath{\Lambda} , % 11 + \ensuremath{\mu} / \ensuremath{\mathrm{M}} , % 12 + \ensuremath{\nu} / \ensuremath{\mathrm{N}} , % 13 + \ensuremath{\xi} / \ensuremath{\Xi} , % 14 + \ensuremath{o} / \ensuremath{\mathrm{O}} , % 15 + \ensuremath{\pi} / \ensuremath{\Pi} , % 16 + \ensuremath{\varrho} / \ensuremath{\mathrm{P}} , % 17 + \ensuremath{\sigma} / \ensuremath{\Sigma} , % 18 + \ensuremath{\tau} / \ensuremath{\mathrm{T}} , % 19 + \ensuremath{\upsilon} / \ensuremath{\Upsilon} , % 20 + \ensuremath{\phi} / \ensuremath{\Phi} , % 21 + \ensuremath{\psi} / \ensuremath{\Psi} , % 22 + \ensuremath{\chi} / \ensuremath{\mathrm{X}} , % 23 + \ensuremath{\omega} / \ensuremath{\Omega} % 24 + } + +% textgreek: +\chemgreek_new_mapping:nn { textgreek } + { + \textalpha / \textAlpha , % 1 + \textbeta / \textBeta , % 2 + \textgamma / \textGamma , % 3 + \textdelta / \textDelta , % 4 + \textepsilon / \textEpsilon , % 5 + \textzeta / \textZeta , % 6 + \texteta / \textEta , % 7 + \texttheta / \textTheta , % 8 + \textiota / \textIota , % 9 + \textkappa / \textKappa , % 10 + \textlambda / \textLambda , % 11 + \textmugreek / \textMu , % 12 + \textnu / \textNu , % 13 + \textxi / \textXi , % 14 + \textomikron / \textOmikron , % 15 + \textpi / \textPi , % 16 + \textrho / \textRho , % 17 + \textsigma / \textSigma , % 18 + \texttau / \textTau , % 19 + \textupsilon / \textUpsilon , % 20 + \textphi / \textPhi , % 21 + \textpsi / \textPsi , % 22 + \textchi / \textChi , % 23 + \textomega / \textOmega % 24 + } + +% upgreek: +\chemgreek_new_mapping:nn { upgreek } + { + \ensuremath{\upalpha} / \ensuremath{\mathrm{A}} , % 1 + \ensuremath{\upbeta} / \ensuremath{\mathrm{B}} , % 2 + \ensuremath{\upgamma} / \ensuremath{\Upgamma} , % 3 + \ensuremath{\updelta} / \ensuremath{\Updelta} , % 4 + \ensuremath{\upepsilon} / \ensuremath{\mathrm{E}} , % 5 + \ensuremath{\upzeta} / \ensuremath{\mathrm{Z}} , % 6 + \ensuremath{\upeta} / \ensuremath{\mathrm{H}} , % 7 + \ensuremath{\uptheta} / \ensuremath{\Uptheta} , % 8 + \ensuremath{\upiota} / \ensuremath{\mathrm{I}} , % 9 + \ensuremath{\upkappa} / \ensuremath{\mathrm{K}} , % 10 + \ensuremath{\uplambda} / \ensuremath{\Uplambda} , % 11 + \ensuremath{\upmu} / \ensuremath{\mathrm{M}} , % 12 + \ensuremath{\upnu} / \ensuremath{\mathrm{N}} , % 13 + \ensuremath{\upxi} / \ensuremath{\Upxi} , % 14 + \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 + \ensuremath{\uppi} / \ensuremath{\Uppi} , % 16 + \ensuremath{\uprho} / \ensuremath{\mathrm{R}} , % 17 + \ensuremath{\upsigma} / \ensuremath{\Upsigma} , % 18 + \ensuremath{\uptau} / \ensuremath{\mathrm{T}} , % 19 + \ensuremath{\upupsilon} / \ensuremath{\Upupsilon} , % 20 + \ensuremath{\upphi} / \ensuremath{\Upphi} , % 21 + \ensuremath{\uppsi} / \ensuremath{\Uppsi} , % 22 + \ensuremath{\upchi} / \ensuremath{\mathrm{X}} , % 23 + \ensuremath{\upomega} / \ensuremath{\Upomega} % 24 + } + +% kpfonts: +\chemgreek_new_mapping:nn { kpfonts } + { + \ensuremath{\alphaup} / \ensuremath{\mathrm{A}} , % 1 + \ensuremath{\betaup} / \ensuremath{\mathrm{B}} , % 2 + \ensuremath{\gammaup} / \ensuremath{\Gammaup} , % 3 + \ensuremath{\deltaup} / \ensuremath{\Deltaup} , % 4 + \ensuremath{\epsilonup} / \ensuremath{\mathrm{E}} , % 5 + \ensuremath{\zetaup} / \ensuremath{\mathrm{Z}} , % 6 + \ensuremath{\etaup} / \ensuremath{\mathrm{H}} , % 7 + \ensuremath{\thetaup} / \ensuremath{\Thetaup} , % 8 + \ensuremath{\iotaup} / \ensuremath{\mathrm{I}} , % 9 + \ensuremath{\kappaup} / \ensuremath{\mathrm{K}} , % 10 + \ensuremath{\lambdaup} / \ensuremath{\Lambdaup} , % 11 + \ensuremath{\muup} / \ensuremath{\mathrm{M}} , % 12 + \ensuremath{\nuup} / \ensuremath{\mathrm{N}} , % 13 + \ensuremath{\xiup} / \ensuremath{\Xiup} , % 14 + \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 + \ensuremath{\piup} / \ensuremath{\Piup} , % 16 + \ensuremath{\rhoup} / \ensuremath{\mathrm{R}} , % 17 + \ensuremath{\sigmaup} / \ensuremath{\Sigmaup} , % 18 + \ensuremath{\tauup} / \ensuremath{\mathrm{T}} , % 19 + \ensuremath{\upsilonup} / \ensuremath{\Upsilonup} , % 20 + \ensuremath{\phiup} / \ensuremath{\Phiup} , % 21 + \ensuremath{\psiup} / \ensuremath{\Psiup} , % 22 + \ensuremath{\chiup} / \ensuremath{\mathrm{X}} , % 23 + \ensuremath{\omegaup} / \ensuremath{\Omegaup} % 24 + } + +% newtx: +\chemgreek_new_mapping:nn { newtx } + { + \ensuremath{\upalpha} / \ensuremath{\mathrm{A}} , % 1 + \ensuremath{\upbeta} / \ensuremath{\mathrm{B}} , % 2 + \ensuremath{\upgamma} / \ensuremath{\upGamma} , % 3 + \ensuremath{\updelta} / \ensuremath{\upDelta} , % 4 + \ensuremath{\upepsilon} / \ensuremath{\mathrm{E}} , % 5 + \ensuremath{\upzeta} / \ensuremath{\mathrm{Z}} , % 6 + \ensuremath{\upeta} / \ensuremath{\mathrm{H}} , % 7 + \ensuremath{\uptheta} / \ensuremath{\upTheta} , % 8 + \ensuremath{\upiota} / \ensuremath{\mathrm{I}} , % 9 + \ensuremath{\upkappa} / \ensuremath{\mathrm{K}} , % 10 + \ensuremath{\uplambda} / \ensuremath{\upLambda} , % 11 + \ensuremath{\upmu} / \ensuremath{\mathrm{M}} , % 12 + \ensuremath{\upnu} / \ensuremath{\mathrm{N}} , % 13 + \ensuremath{\upxi} / \ensuremath{\upXi} , % 14 + \ensuremath{\mathrm{o}} / \ensuremath{\mathrm{O}} , % 15 + \ensuremath{\uppi} / \ensuremath{\upPi} , % 16 + \ensuremath{\uprho} / \ensuremath{\mathrm{R}} , % 17 + \ensuremath{\upsigma} / \ensuremath{\upSigma} , % 18 + \ensuremath{\uptau} / \ensuremath{\mathrm{T}} , % 19 + \ensuremath{\upupsilon} / \ensuremath{\upUpsilon} , % 20 + \ensuremath{\upphi} / \ensuremath{\upPhi} , % 21 + \ensuremath{\uppsi} / \ensuremath{\upPsi} , % 22 + \ensuremath{\upchi} / \ensuremath{\mathrm{X}} , % 23 + \ensuremath{\upomega} / \ensuremath{\upOmega} % 24 + } + +% activate default mapping +\chemgreek_activate_mapping:n { default } + +\tex_endinput:D + +HISTORY: +2013/06/26 - v0.1 - first working version to be bundled with chemmacros +2013/07/06 - v0.1a - fixed stupid bug in `upgreek' mapping + - added error messages and added \renewchemgreekmapping and + \declarechemgreekmapping diff --git a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty index efa0b0d2138..a1c7aa6c46f 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/chemmacros.sty @@ -1,67 +1,105 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% --------------------------------------------------------------------------- % -% - the CHEMMACROS bundle - % -% - chemmacros.sty - % -% - 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. - % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{ expl3 , xparse , l3keys2e , xfrac , siunitx } -\RequirePackage{ tikz , mathtools , environ , scrlfile , etoolbox , bm } -\usetikzlibrary{calc,arrows} -\def\chemmacros@version{3.6b} -\def\chemmacros@date{2013/04/19} +% -------------------------------------------------------------------------- +% - the CHEMMACROS bundle +% - chemmacros.sty +% - loads of little helpers 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. +% -------------------------------------------------------------------------- +\RequirePackage{ expl3 , xparse , l3keys2e } +\def\chemmacros@version{4.0} +\def\chemmacros@date{2013/07/06} \ProvidesExplPackage {chemmacros} {\chemmacros@date} {\chemmacros@version} - {macros and commands for chemists} - -\@ifpackageloaded { chemformula } {} { \RequirePackage { chemformula } } - -\bool_new:N \l__chemmacros_version_one_bool -\bool_new:N \l__chemmacros_xspace_bool - \bool_set_true:N \l__chemmacros_xspace_bool -\bool_new:N \l__chemmacros_bpchem_bool -\bool_new:N \l__chemmacros_circled_bool - \bool_set_true:N \l__chemmacros_circled_bool -\bool_new:N \l__chemmacros_circled_formal_bool - \bool_set_true:N \l__chemmacros_circled_formal_bool -\bool_new:N \l__chemmacros_circled_chem_bool - \bool_set_true:N \l__chemmacros_circled_chem_bool -\bool_new:N \l__chemmacros_EZ_cool_bool -\bool_new:N \l__chemmacros_Nu_mathspec_bool -\bool_new:N \l__chemmacros_use_mhchem_bool -\bool_new:N \l__chemmacros_chemstyle_bool -\bool_new:N \l__chemmacros_hyperref_bool -\bool_new:N \l__chemmacros_varioref_bool -\bool_new:N \l__chemmacros_chemfig_bool -\bool_new:N \l__chemmacros_ghsystem_bool - \bool_set_true:N \l__chemmacros_ghsystem_bool -\bool_new:N \l__chemmacros_iupac_restricted_bool -\bool_new:N \l__chemmacros_iupac_strict_bool -\bool_new:N \l__chemmacros_in_document_bool + {loads of little helpers for chemists (CN)} + +% -------------------------------------------------------------------------- +% check expl3 version: +\@ifpackagelater { expl3 } { 2012/11/21 } + { } + { + \PackageError { chemmacros } { Support~package~expl3~too~old } + { + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~chemmacros~will~abort! + } + \tex_endinput:D + } + +% -------------------------------------------------------------------------- +% variants of kernel commands: +\cs_generate_variant:Nn \prop_if_in:NnTF { NV , Nx } +\cs_generate_variant:Nn \prop_put:Nnn { NV , NVx } +\cs_generate_variant:Nn \prop_get:NnNTF { NV } +\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV } + +% -------------------------------------------------------------------------- +% load required packages +% the technical ones: +\RequirePackage { environ , scrlfile , etoolbox , translations } +% related to other topics like mathematics or graphics: +\RequirePackage { xfrac , siunitx , tikz, mathtools , bm } +% other packages of this bundle -- ghsystem is not loaded here but at the end +% of the preamble depending on a package option: +\RequirePackage { chemformula , chemgreek } +% TikZ libraries (the don't like expl3 syntax): +\ExplSyntaxOff +\usetikzlibrary{calc,arrows} +\ExplSyntaxOn + +% -------------------------------------------------------------------------- +% boolean variables for the package options +% versioning: +\bool_new:N \l__chemmacros_version_one_bool +\bool_new:N \l__chemmacros_version_three_bool +\bool_new:N \l__chemmacros_version_four_bool +\bool_set_true:N \l__chemmacros_version_four_bool + +\bool_new:N \l__chemmacros_xspace_bool +\bool_set_true:N \l__chemmacros_xspace_bool + +\bool_new:N \l__chemmacros_circled_bool +\bool_set_true:N \l__chemmacros_circled_bool +\bool_new:N \l__chemmacros_circled_formal_bool +\bool_set_true:N \l__chemmacros_circled_formal_bool +\bool_new:N \l__chemmacros_circled_chem_bool +\bool_set_true:N \l__chemmacros_circled_chem_bool + +\bool_new:N \l__chemmacros_EZ_cool_bool +\bool_new:N \l__chemmacros_Nu_mathspec_bool +\bool_new:N \l__chemmacros_chemstyle_bool +\bool_new:N \l__chemmacros_hyperref_bool +\bool_new:N \l__chemmacros_varioref_bool +\bool_new:N \l__chemmacros_chemfig_bool +\bool_new:N \l__chemmacros_ghsystem_bool +\bool_set_true:N \l__chemmacros_ghsystem_bool + +\bool_new:N \l__chemmacros_iupac_restricted_bool +\bool_new:N \l__chemmacros_iupac_strict_bool +\bool_new:N \l__chemmacros_in_document_bool \AtBeginDocument { @@ -80,211 +118,293 @@ { \bool_set_false:N \l__chemmacros_chemfig_bool } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % warning / error messages -\cs_new:Npn \chemmacros_msg:nnxx #1#2#3#4 +\cs_new_protected:Npn \chemmacros_msg:nnxx #1#2#3#4 { - \bool_if:NTF \l__chemmacros_strict_bool + \bool_if:NTF \l_chemmacros_strict_bool { \msg_error:nnxx { #1 } { #2 } { #3 } { #4 } } { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } } -\msg_set:nnnn { chemmacros } { language-not-defined } +\cs_new_protected:Npn \chemmacros_warning:nnxx #1#2#3#4 { - The~language~#1~is~not~defined~by~chemmacros. - } - { - You~chose~the~language~`#1'~which~is~not~defined~by~chemmacros.~`english'~is - ~used~instead.~If~you~just~mistyped~try~again!~Otherwise~contact~the~author~ - and~he'll~probably~add~your~language. + \bool_if:NTF \l_chemmacros_strict_bool + { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } + { \msg_info:nnxx { #1 } { #2 } { #3 } { #4 } } } -\msg_set:nnnn { chemmacros } { already-defined } +\msg_new:nnnn { chemmacros } { language-not-defined } + { The~ language~ `#1'~ is~ not~ defined~ by~ chemmacros. } { - The~command~#1~has~also~been~defined~by~another~package. + You~ chose~ the~ language~ `#1'~ which~ is~ not~ defined~ by~ chemmacros.~ + `english'~ is~ used~ instead.~ If~ you~ just~ mistyped~ try~ again!~ + Otherwise~ contact~ the~ author~ and~ he'll~ probably~ add~ your~ language. } + +\msg_new:nnnn { chemmacros } { already-defined } + { The~ command~ #1~ has~ also~ been~ defined~ by~ another~ package. } { - The~command~#1~has~also~been~defined~by~another~package.~ - chemmacros~provides~an~alternative~definition.~ - See~the~documentation~for~more~information. + The~ command~ #1~ has~ also~ been~ defined~ by~ another~ package.~ + chemmacros~ provides~ an~ alternative~ definition.~ See~ the~ + documentation~ for~ more~ information. } -\msg_set:nnnn { chemmacros } { option-deprecated } - { The~option~#1~is~deprecated.~I~will~ignore~it. } +\msg_new:nnnn { chemmacros } { option-deprecated } + { The~ option~ `#1'~ is~ deprecated.~ I~ will~ ignore~ it. } { - The~package~option~#1~is~deprecated~and~not~used~by~chemmacros~any~more. - ~It~will~therefore~simply~be~ignored. + The~ package~ option~ `#1'~ is~ deprecated~ and~ not~ used~ by~ + chemmacros~ any~ more.~ It~ will~ therefore~ simply~ be~ ignored. } -\msg_set:nnnn { chemmacros } { command-deprecated } +\msg_new:nnnn { chemmacros } { command-deprecated } { - The~command~\token_to_str:N #1 \c_space_tl is~deprecated.~Use~ + The~ command~ \token_to_str:N #1 \c_space_tl is~ deprecated.~ Use~ \token_to_str:N #2 \c_space_tl instead. } { - The~command~\token_to_str:N #1 \c_space_tl is~deprecated.~Use~ + The~ command~ \token_to_str:N #1 \c_space_tl is~ deprecated.~ Use~ \token_to_str:N #2 \c_space_tl instead. } -\cs_new_protected:Npn \chemmacros_define_deprecated:NNn #1#2#3 +\msg_new:nnnn { chemmacros } { command-dropped } { - \cs_new_protected:Npn #1 - { - \chemmacros_msg:nnxx { chemmacros } { command-deprecated } - { #1 } { #2 } - #3 - } + The~ command~ \token_to_str:N #1 \c_space_tl has~ been~ dropped.~ I'm~ + sorry. + } + { + The~ command~ \token_to_str:N #1 \c_space_tl has~ been~ dropped.~ I'm~ + sorry. } -\NewDocumentCommand \DeclareChemDeprecated { mmm } - { \chemmacros_define_deprecated:NNn #1 #2 { #3 } } - -\msg_set:nnnn { chemmacros } { command-dropped } - { The~command~\token_to_str:N #1 \c_space_tl has~been~dropped.~I'm~sorry. } - { The~command~\token_to_str:N #1 \c_space_tl has~been~dropped.~I'm~sorry. } -\msg_set:nnnn { chemmacros } { declare-particle } +\msg_new:nnnn { chemmacros } { declare-particle } { - The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. + The~ command~ sequence~ \token_to_str:N #1 \c_space_tl is~ already~ + defined. } { - You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemParticle, - ~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists. - ~Please~choose~another~name. + You've~ tried~ to~ define~ a~ particle~ with~ \token_to_str:N + \DeclareChemParticle ,~ but~ the~ command~ sequence~ \token_to_str:N #1 + \c_space_tl already~ exists.~ Please~ choose~ another~ name. } -\msg_set:nnnn { chemmacros } { renew-particle } - { The~particle~ \token_to_str:N #1 \c_space_tl is~not~defined. } +\msg_new:nnnn { chemmacros } { renew-particle } + { The~ particle~ \token_to_str:N #1 \c_space_tl is~ not~ defined. } { - You've~tried~to~renew~the~particle~\token_to_str:N #1 ,~but~it~doesn't~ - exist. + You've~ tried~ to~ renew~ the~ particle~ \token_to_str:N #1 ,~ but~ it~ + doesn't~ exist. } -\msg_set:nnnn { chemmacros } { declare-latin } +\msg_new:nnnn { chemmacros } { declare-latin } { - The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. + The~ command~ sequence~ \token_to_str:N #1 \c_space_tl is~ already~ + defined. } { - You've~tried~to~define~a~latin~phrase~with~\token_to_str:N - \DeclareChemLatin,~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl - already~exists.~Please~choose~another~name. + You've~ tried~ to~ define~ a~ latin~ phrase~ with~\token_to_str:N + \DeclareChemLatin ,~ but~ the~ command~ sequence~ \token_to_str:N #1 + \c_space_tl already~ exists.~ Please~ choose~ another~ name. } -\msg_set:nnnn { chemmacros } { renew-latin } - { The~latin~phrase \token_to_str:N #1 \c_space_tl is~not~defined. } +\msg_new:nnnn { chemmacros } { renew-latin } + { The~ latin~ phrase \token_to_str:N #1 \c_space_tl is~ not~ defined. } { - You've~tried~to~renew~the~latin~phrase~\token_to_str:N #1 ,~but~it~doesn't~ - exist. + You've~ tried~ to~ renew~ the~ latin~ phrase~ \token_to_str:N #1 ,~ but~ + it~ doesn't~ exist. } -\msg_set:nnnn { chemmacros } { declare-nmr } +\msg_new:nnnn { chemmacros } { declare-nmr } { - The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. + The~ command~ sequence~ \token_to_str:N #1 \c_space_tl is~ already~ + defined. } { - You've~tried~to~define~a~NMR~command~with~\token_to_str:N - \DeclareChemParticle, ~but~the~command~sequence~ \token_to_str:N #1 - \c_space_tl already~exists.~Please~choose~another~name. + You've~ tried~ to~ define~ a~ NMR~ command~ with~\token_to_str:N + \DeclareChemParticle ,~ but~ the~ command~ sequence~ \token_to_str:N #1 + \c_space_tl already~ exists.~ Please~ choose~ another~ name. } -\msg_set:nnnn { chemmacros } { renew-nmr } - { The~NMR~command~ \token_to_str:N #1 \c_space_tl is~not~defined. } +\msg_new:nnnn { chemmacros } { renew-nmr } + { The~ NMR~ command~ \token_to_str:N #1 \c_space_tl is~ not~ defined. } { - You've~tried~to~renew~the~NMR~command~\token_to_str:N #1 ,~but~it~doesn't~ - exist. + You've~ tried~ to~ renew~ the~ NMR~ command~ \token_to_str:N #1 ,~ but~ + it~ doesn't~ exist. } -\msg_set:nnnn { chemmacros } { declare-phase } +\msg_new:nnnn { chemmacros } { declare-phase } { - The~command~sequence~ \token_to_str:N #1 \c_space_tl is~already~defined. + The~ command~ sequence~ \token_to_str:N #1 \c_space_tl is~ already~ + defined. } { - You've~tried~to~define~a~particle~with~\token_to_str:N \DeclareChemPhase , - ~but~the~command~sequence~ \token_to_str:N #1 \c_space_tl already~exists. - ~Please~choose~another~name. + You've~ tried~ to~ define~ a~ phase~ with~ \token_to_str:N + \DeclareChemPhase ,~ but~ the~ command~ sequence~ \token_to_str:N #1 + \c_space_tl already~ exists.~ Please~ choose~ another~ name. } -\msg_set:nnnn { chemmacros } { renew-phase } - { The~phase~ \token_to_str:N #1 \c_space_tl is~not~defined. } +\msg_new:nnnn { chemmacros } { renew-phase } + { The~ phase~ \token_to_str:N #1 \c_space_tl is~ not~ defined. } { - You've~tried~to~renew~the~phase~\token_to_str:N #1 ,~but~it~doesn't~ - exist. + You've~ tried~ to~ renew~ the~ phase~ \token_to_str:N #1 ,~ but~ it~ + doesn't~ exist. } -\msg_set:nnnn { chemmacros } { declare-iupac } +\msg_new:nnnn { chemmacros } { declare-iupac } { - The~iupac~naming~command~ \token_to_str:N #1 \c_space_tl is~already~defined. + The~ iupac~ naming~ command~ \token_to_str:N #1 \c_space_tl is~ already~ + defined. } { - You've~tried~to~define~a~iupac~naming~command~with~\token_to_str:N - \DeclareChemIUPAC,~but~the~iupac~command~ \token_to_str:N #1 \c_space_tl - already~exists.~Choose~another~name~or~use~\token_to_str:N \RenewChemIUPAC . + You've~ tried~ to~ define~ a~ iupac~ naming~ command~ with~ + \token_to_str:N \DeclareChemIUPAC ,~ but~ the~ iupac~ command~ + \token_to_str:N #1 \c_space_tl already~ exists.~ Choose~ another~ name~ + or~ use~ \token_to_str:N \RenewChemIUPAC . } -\msg_set:nnnn { chemmacros } { renew-iupac } - { The~iupac~naming~command~ \token_to_str:N #1 \c_space_tl is~not~defined. } +\msg_new:nnnn { chemmacros } { renew-iupac } { - You've~tried~to~renew~the~iupac~command~\token_to_str:N #1 ,~but~it~doesn't~ - exist.~Use~\token_to_str:N \DeclareChemIUPAC \c_space_tl instead . + The~ iupac~ naming~ command~ \token_to_str:N #1 \c_space_tl is~ not~ + defined. + } + { + You've~ tried~ to~ renew~ the~ iupac~ command~ \token_to_str:N #1 ,~ but~ + it~ doesn't~ exist.~ Use~ \token_to_str:N \DeclareChemIUPAC \c_space_tl + instead. } -\msg_set:nnnn { chemmacros } { ox } +\msg_new:nnnn { chemmacros } { ox } { \token_to_str:N \ox \c_space_tl : ~ #1 ~ \msg_line_context: . } { \token_to_str:N \ox \c_space_tl : ~ #1 ~ \msg_line_context: . } -\msg_set:nnnn { chemmacros } { OX } +\msg_new:nnnn { chemmacros } { OX } { \token_to_str:N \OX \c_space_tl : ~ #1 ~ \msg_line_context: . } { \token_to_str:N \OX \c_space_tl : ~ #1 ~ \msg_line_context: . } -\msg_set:nnnn { chemmacros } { redox } +\msg_new:nnnn { chemmacros } { redox } { \token_to_str:N \redox \c_space_tl : ~ #1 ~ \msg_line_context: . } { \token_to_str:N \redox \c_space_tl : ~ #1 ~ \msg_line_context: . } -\msg_set:nnnn { chemmacros } { chemfig } +\msg_new:nnnn { chemmacros } { chemfig } { - You~need~to~load~the~chemfig~package~in~order~to~make~ - \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl - work~properly~\msg_line_context: . + You~ need~ to~ load~ the~ `chemfig'~ package~ in~ order~ to~ make~ + \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl work~ + properly~ \msg_line_context: . } { - You~need~to~load~the~chemfig~package~in~order~to~make~ - \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl - work~properly~\msg_line_context: . + You~ need~ to~ load~ the~ `chemfig'~ package~ in~ order~ to~ make~ + \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl work~ + properly~ \msg_line_context: . } -\msg_set:nnnn { chemmacros } { DeclareChemState } +\msg_new:nnnn { chemmacros } { DeclareChemState } { - The~state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: - \c_space_tl already~exists.~You~need~to~use~ - \token_to_str:N \RenewChemState \c_space_tl to~alter~it. + The~ state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl + already~ exists.~ You~ need~ to~ use~ \token_to_str:N \RenewChemState + \c_space_tl to~ alter~ it. } { - The~state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: - \c_space_tl already~exists.~You~need~to~use~ - \token_to_str:N \RenewChemState \c_space_tl to~alter~it. + The~ state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl + already~ exists.~ You~ need~ to~ use~ \token_to_str:N \RenewChemState + \c_space_tl to~ alter~ it. } -\msg_set:nnnn { chemmacros } { RenewChemState } +\msg_new:nnnn { chemmacros } { RenewChemState } { - The~state~\exp_after:wN \token_to_str:N \cs:w #1 \cs_end: - \c_space_tl isn't~set~up~yet.~You~need~to~use~ - \token_to_str:N \DeclareChemState \c_space_tl to~create~it. + The~ state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl + isn't~ set~ up~ yet.~ You~ need~ to~ use~ \token_to_str:N + \DeclareChemState \c_space_tl to~ create~ it. } { - The~state~\exp_after:wN \token_to_str:N \cs:w #1 \cs_end: - \c_space_tl isn't~set~up~yet.~You~need~to~use~ - \token_to_str:N \DeclareChemState \c_space_tl to~create~it. + The~ state~ \exp_after:wN \token_to_str:N \cs:w #1 \cs_end: \c_space_tl + isn't~ set~ up~ yet.~ You~ need~ to~ use~ \token_to_str:N + \DeclareChemState \c_space_tl to~ create ~it. } -% --------------------------------------------------------------------------- % -% scratch variables +% declare an option as deprecated: +\cs_new_protected:Npn \chemmacros_option_deprecated:n #1 + { \chemmacros_msg:nnn { chemmacros } { option-deprecated } { #1 } } + +% define a deprecated command with hints to the corresponding new one: +\cs_new_protected:Npn \chemmacros_define_deprecated:NNn #1#2#3 + { + \cs_new_protected:Npn #1 + { + \chemmacros_msg:nnxx { chemmacros } { command-deprecated } + { #1 } { #2 } + #3 + } + } + +\NewDocumentCommand \DeclareChemDeprecated { mmm } + { \chemmacros_define_deprecated:NNn #1 #2 { #3 } } + +% define a command as dropped! +\cs_new_protected:Npn \chemmacros_define_dropped:N #1 + { + \cs_new_protected:Npn #1 + { \chemmacros_msg:nnxx { chemmacros } { command-dropped } { #1 } { } } + } + +\NewDocumentCommand \DeclareChemDropped { m } + { \chemmacros_define_dropped:N #1 } + +% -------------------------------------------------------------------------- +% temporary variables \tl_new:N \l__chemmacros_tmpa_tl \tl_new:N \l__chemmacros_tmpb_tl \int_new:N \l__chemmacros_tmpa_int \box_new:N \l__chemmacros_tmpa_box -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- +% language settings: +\bool_new:N \l__chemmacros_language_auto_bool +\bool_set_true:N \l__chemmacros_language_auto_bool +% this token list will hold the chosen language for chemmacros; since the +% language is either chosen automatically or by option it is only available at +% begin document +\tl_new:N \l_chemmacros_language_tl +\tl_set:Nn \l_chemmacros_language_tl { english } +\tl_new:N \l__chemmacros_current_language_tl + +% translate the key #1 or insert #2 +\cs_new:Npn \chemmacros_translate:nn #1#2 + { + \@trnslt@if@translation + { #1 } + { \l_chemmacros_language_tl } + { \GetTranslation{#1} } + { #2 } + } + +\AtBeginDocument{ + \bool_if:NTF \l__chemmacros_language_auto_bool + { + \tl_set:Nx \l_chemmacros_language_tl + { \@trnslt@language{\@trnslt@current@language} } + } + { + \tl_set_eq:NN + \l_chemmacros_language_tl + \l__chemmacros_current_language_tl + } +} + +% -------------------------------------------------------------------------- +% version management: +\tl_const:Nn \c__chemmacros_versions_tl { {one} {three} {four} } + +\cs_new_protected:Npn \chemmacros_set_version:n #1 + { + \tl_map_inline:Nn \c__chemmacros_versions_tl + { + \tl_if_eq:nnTF { #1 } { ##1 } + { \bool_set_true:c { l__chemmacros_version_##1_bool } } + { \bool_set_false:c { l__chemmacros_version_##1_bool } } + } + } + +% -------------------------------------------------------------------------- % package options -% bpchem => use \IUPAC inside for \NMR command % circled => circle charges % detect-bold => behaviour when font series bold % EZ => cool or chemmacros version of \E @@ -299,55 +419,52 @@ % version=1 => compatibility for documents set with v1.* % xspace => add an \xspace after a whole bunch of macros -\bool_new:N \l__chemmacros_strict_bool +% this boolean has to be public since the other packages of the bundle may +% want to know its value +\bool_new:N \l_chemmacros_strict_bool + \bool_new:N \l__chemmacros_detect_bold_bool \bool_set_true:N \l__chemmacros_detect_bold_bool + +\bool_new:N \l__chemmacros_option_greek_set_bool \bool_new:N \l__chemmacros_use_upgreek_bool \bool_new:N \l__chemmacros_use_textgreek_bool -\bool_new:N \l__chemmacros_option_greek_set_bool - -\tl_new:N \l__chemmacros_language_tl -\tl_set:Nn \l__chemmacros_language_tl { english } -\tl_new:N \l__chemmacros_current_language_tl -\tl_set:Nn \l__chemmacros_current_language_tl { english } +\bool_new:N \l__chemmacros_use_kpfonts_bool +\bool_new:N \l__chemmacros_use_newtx_bool \cs_new:Npn \chemmacros_inner_font: {} \keys_define:nn { chemmacros / option } { - bpchem .bool_set:N = \l__chemmacros_bpchem_bool , - bpchem .default:n = true , + bpchem .code:n = \chemmacros_option_deprecated:n { bpchem } , circletype .choice: , circletype / math .code:n = { \bool_set_false:N \l__chemmacros_circled_chem_bool } , circletype / chem .code:n = { \bool_set_true:N \l__chemmacros_circled_chem_bool } , circled .choice: , - circled / none .code:n = + circled / none .code:n = { \bool_set_false:N \l__chemmacros_circled_bool \bool_set_false:N \l__chemmacros_circled_formal_bool } , - circled / formal .code:n = + circled / formal .code:n = { \bool_set_true:N \l__chemmacros_circled_bool \bool_set_true:N \l__chemmacros_circled_formal_bool } , - circled / all .code:n = + circled / all .code:n = { \bool_set_true:N \l__chemmacros_circled_bool \bool_set_false:N \l__chemmacros_circled_formal_bool } , circled .default:n = all , - detect-bold .code:n = - \chemmacros_msg:nnxx { chemmacros } { option-deprecated } - { detect-bold } {} , - EZ .code:n = - \chemmacros_msg:nnxx { chemmacros } { option-deprecated } { EZ } {} , + detect-bold .code:n = \chemmacros_option_deprecated:n { detect-bold } , + EZ .code:n = \chemmacros_option_deprecated:n { EZ } , german .code:n = - \tl_set:Nn \l__chemmacros_language_tl { german } , + \tl_set:Nn \l__chemmacros_current_language_tl { german } , ngerman .code:n = - \tl_set:Nn \l__chemmacros_language_tl { ngerman } , + \tl_set:Nn \l__chemmacros_current_language_tl { ngerman } , ghsystem .bool_set:N = \l__chemmacros_ghsystem_bool , ghsystem .default:n = true , iupac .choice: , @@ -360,18 +477,20 @@ iupac / strict .code:n = \bool_set_false:N \l__chemmacros_iupac_restricted_bool \bool_set_true:N \l__chemmacros_iupac_strict_bool , - language .tl_set:N = \l__chemmacros_language_tl , + language .code:n = + \bool_set_false:N \l__chemmacros_language_auto_bool + \tl_set:Nn \l__chemmacros_current_language_tl { #1 } , method .choice: , method / chemformula .code:n = - \bool_set_false:N \l__chemmacros_use_mhchem_bool , + \chemmacros_option_deprecated:n { method } , method / mhchem .code:n = - \bool_set_true:N \l__chemmacros_use_mhchem_bool , + \chemmacros_option_deprecated:n { method } , Nu .choice: , Nu / mathspec .code:n = \bool_set_true:N \l__chemmacros_Nu_mathspec_bool , Nu / chemmacros .code:n = \bool_set_false:N \l__chemmacros_Nu_mathspec_bool , - strict .bool_set:N = \l__chemmacros_strict_bool , + strict .bool_set:N = \l_chemmacros_strict_bool , strict .default:n = true , synchronize .choice: , synchronize / true .code:n = @@ -380,88 +499,54 @@ synchronize .default:n = true , greek .choice: , greek / upgreek .code:n = - \bool_set_true:N \l__chemmacros_use_upgreek_bool - \bool_set_false:N \l__chemmacros_use_textgreek_bool - \bool_set_true:N \l__chemmacros_option_greek_set_bool , + \chemgreek_activate_mapping:n { upgreek } + \bool_set_true:N \l__chemmacros_option_greek_set_bool , greek / textgreek .code:n = - \bool_set_false:N \l__chemmacros_use_upgreek_bool - \bool_set_true:N \l__chemmacros_use_textgreek_bool - \bool_set_true:N \l__chemmacros_option_greek_set_bool , + \chemgreek_activate_mapping:n { textgreek } + \bool_set_true:N \l__chemmacros_option_greek_set_bool, + greek / kpfonts .code:n = + \chemgreek_activate_mapping:n { kpfonts } + \bool_set_true:N \l__chemmacros_option_greek_set_bool, + greek / newtx .code:n = + \chemgreek_activate_mapping:n { newtx } + \bool_set_true:N \l__chemmacros_option_greek_set_bool, greek / math .code:n = - \bool_set_false:N \l__chemmacros_use_upgreek_bool - \bool_set_false:N \l__chemmacros_use_textgreek_bool - \bool_set_true:N \l__chemmacros_option_greek_set_bool , + \chemgreek_activate_mapping:n { default } + \bool_set_true:N \l__chemmacros_option_greek_set_bool, greek / auto .code:n = - \bool_set_false:N \l__chemmacros_use_upgreek_bool - \bool_set_false:N \l__chemmacros_use_textgreek_bool - \bool_set_false:N \l__chemmacros_option_greek_set_bool , + \bool_set_false:N \l__chemmacros_option_greek_set_bool, greek .default:n = auto , - upgreek .code:n = - \chemmacros_msg:nnxx { chemmacros } { option-deprecated } - { upgreek } {} , + upgreek .code:n = \chemmacros_option_deprecated:n { upgreek } , % dummy version for compatibility with KOMA's global option and backwards % compatibility of chemmacros - version .code:n = - \chemmacros_msg:nnxx { chemmacros } { option-deprecated } - { version } {} , + version .code:n = \chemmacros_option_deprecated:n { version } , cmversion .choice: , - cmversion / 1 .code:n = - { \bool_set_true:N \l__chemmacros_version_one_bool } , - cmversion / 2 .code:n = - { \bool_set_false:N \l__chemmacros_version_one_bool } , - cmversion / bundle .code:n = - { \bool_set_false:N \l__chemmacros_version_one_bool } , + cmversion / 1 .code:n = \chemmacros_set_version:n { one } , + cmversion / 2 .code:n = \chemmacros_set_version:n { three } , + cmversion / 3 .code:n = \chemmacros_set_version:n { three } , + cmversion / 4 .code:n = \chemmacros_set_version:n { four } , + cmversion / newest .code:n = \chemmacros_set_version:n { four } , + cmversion / bundle .code:n = + \chemmacros_option_deprecated:n { cmversion/bundle } , xspace .bool_set:N = \l__chemmacros_xspace_bool , xspace .default:n = true } -\ProcessKeysOptions { chemmacros / option } -% --------------------------------------------------------------------------- % -% language settings: -\prop_new:N \l__chemmacros_language_prop -\prop_put:Nnn \l__chemmacros_language_prop { english } { english } -\prop_put:Nnn \l__chemmacros_language_prop { american } { english } -\prop_put:Nnn \l__chemmacros_language_prop { british } { english } -\prop_put:Nnn \l__chemmacros_language_prop { german } { german } -\prop_put:Nnn \l__chemmacros_language_prop { ngerman } { german } -\prop_put:Nnn \l__chemmacros_language_prop { italian } { italian } -\prop_put:Nnn \l__chemmacros_language_prop { french } { french } - -\prop_map_inline:Nn \l__chemmacros_language_prop - { - \cs_if_exist:cF { l__chemmacros_ #2 _bool } - { \bool_new:c { l__chemmacros_ #2 _bool } } - } -\cs_new_protected:Npn \chemmacros_set_language: - { - \prop_get:NoNTF - \l__chemmacros_language_prop - { \l__chemmacros_language_tl } - \l__chemmacros_current_language_tl - { - \bool_set_true:c - { l__chemmacros_ \l__chemmacros_current_language_tl _bool } - } - { - \chemmacros_msg:nnxx { chemmacros } { language-not-defined } - { \l__chemmacros_language_tl } { } - } - } +\ProcessKeysOptions { chemmacros / option } +% -------------------------------------------------------------------------- +% set up a few things: +% - is `ghsystem' requested? +% - do we need `xspace'? +% - what about the greek letters? \AtEndPreamble { - \chemmacros_set_language: - \chemmacros_make_phases: \bool_if:NT \l__chemmacros_ghsystem_bool { \RequirePackage { ghsystem } } - \bool_if:NT \l__chemmacros_bpchem_bool - { \RequirePackage { bpchem } } \bool_if:NT \l__chemmacros_xspace_bool { \RequirePackage { xspace } } - \bool_if:NT \l__chemmacros_use_mhchem_bool - { \RequirePackage[ version=3 ]{ mhchem } } \bool_if:NF \l__chemmacros_option_greek_set_bool { \@ifpackageloaded { upgreek } @@ -469,205 +554,113 @@ { \@ifpackageloaded { textgreek } { \bool_set_true:N \l__chemmacros_use_textgreek_bool } - { } + { + \@ifpackageloaded { kpfonts } + { \bool_set_true:N \l__chemmacros_use_kpfonts_bool } + { + \@ifpackageloaded { newtxmath } + { \bool_set_true:N \l__chemmacros_use_newtx_bool } + { } + } + } } } - \bool_if:NTF \l__chemmacros_use_upgreek_bool - { - \cs_set:Npn \Chemalpha { \ensuremath { \upalpha } } - \cs_set:Npn \Chembeta { \ensuremath { \upbeta } } - \cs_set:Npn \Chemgamma { \ensuremath { \upgamma } } - \cs_set:Npn \Chemdelta { \ensuremath { \updelta } } - \cs_set:Npn \Chemepsilon { \ensuremath { \upvarepsilon } } - \cs_set:Npn \Chemeta { \ensuremath { \upeta } } - \cs_set:Npn \Chemkappa { \ensuremath { \upkappa } } - \cs_set:Npn \Chemmu { \ensuremath { \upmu } } - \cs_set:Npn \Chemnu { \ensuremath { \upnu } } - \cs_set:Npn \Chemrho { \ensuremath { \uprho } } - \cs_set:Npn \Chempi { \ensuremath { \uppi } } - \cs_set:Npn \Chemsigma { \ensuremath { \upsigma } } - \cs_set:Npn \Chemomega { \ensuremath { \upomega } } - \cs_set:Npn \ChemDelta { \ensuremath { \Updelta } } - } - { - \bool_if:NT \l__chemmacros_use_textgreek_bool - { - \cs_set_protected:Npn \Chemalpha { \ensuremath { \text { \textalpha } } } - \cs_set_protected:Npn \Chembeta { \ensuremath { \text { \textbeta } } } - \cs_set_protected:Npn \Chemgamma { \ensuremath { \text { \textgamma } } } - \cs_set_protected:Npn \Chemdelta { \ensuremath { \text { \textdelta } } } - \cs_set_protected:Npn \Chemepsilon { \ensuremath { \text { \textepsilon } } } - \cs_set_protected:Npn \Chemeta { \ensuremath { \text { \texteta } } } - \cs_set_protected:Npn \Chemkappa { \ensuremath { \text { \textkappa } } } - \cs_set_protected:Npn \Chemmu { \ensuremath { \text { \textmu } } } - \cs_set_protected:Npn \Chemnu { \ensuremath { \text { \textnu } } } - \cs_set_protected:Npn \Chemrho { \ensuremath { \text { \textrho } } } - \cs_set_protected:Npn \Chempi { \ensuremath { \text { \textpi } } } - \cs_set_protected:Npn \Chemsigma { \ensuremath { \text { \textsigma } } } - \cs_set_protected:Npn \Chemomega { \ensuremath { \text { \textomega } } } - \cs_set_protected:Npn \ChemDelta { \ensuremath { \text { \textDelta } } } - } - } - } - -\cs_new:Npn \Chemalpha { \ensuremath { \alpha } } -\cs_new:Npn \Chembeta { \ensuremath { \beta } } -\cs_new:Npn \Chemgamma { \ensuremath { \gamma } } -\cs_new:Npn \Chemdelta { \ensuremath { \delta } } -\cs_new:Npn \Chemepsilon { \ensuremath { \varepsilon } } -\cs_new:Npn \Chemeta { \ensuremath { \eta } } -\cs_new:Npn \Chemkappa { \ensuremath { \kappa } } -\cs_new:Npn \Chemmu { \ensuremath { \mu } } -\cs_new:Npn \Chemnu { \ensuremath { \nu } } -\cs_new:Npn \Chemrho { \ensuremath { \rho } } -\cs_new:Npn \Chempi { \ensuremath { \pi } } -\cs_new:Npn \Chemsigma { \ensuremath { \sigma } } -\cs_new:Npn \Chemomega { \ensuremath { \omega } } -\cs_new:Npn \ChemDelta { \ensuremath { \Delta } } - -\cs_new:Npn \chemmacros_xspace: + \bool_if:NT \l__chemmacros_use_upgreek_bool + { \chemgreek_activate_mapping:n { upgreek } } + \bool_if:NT \l__chemmacros_use_textgreek_bool + { \chemgreek_activate_mapping:n { textgreek } } + \bool_if:NT \l__chemmacros_use_kpfonts_bool + { \chemgreek_activate_mapping:n { kpfonts } } + \bool_if:NT \l__chemmacros_use_newtx_bool + { \chemgreek_activate_mapping:n { newtx } } + } + +\cs_new_protected:Npn \chemmacros_xspace: { \bool_if:NT \l__chemmacros_xspace_bool { \xspace } } -% --------------------------------------------------------------------------- % -% TikZ drawings -\cs_new:Npn \chemmacros_tikz_picture:nn #1#2 +% -------------------------------------------------------------------------- +% TikZ drawings - helper macros +\cs_new_protected:Npn \chemmacros_tikz_picture:nn #1#2 { \tikzpicture[#1] #2 \endtikzpicture } \cs_generate_variant:Nn \chemmacros_tikz_picture:nn { fn,xn } -\cs_new:Npn \chemmacros_tikz_draw:n #1 +\cs_new_protected:Npn \chemmacros_tikz_draw:n #1 { \draw[#1] } \cs_generate_variant:Nn \chemmacros_tikz_draw:n { f,x } -\cs_new:Npn \chemmacros_tikz_node:n #1 +\cs_new_protected:Npn \chemmacros_tikz_node:n #1 { \node[#1] } \cs_generate_variant:Nn \chemmacros_tikz_node:n { f,x } -\cs_new:Npn \chemmacros_tikz_shade:n #1 +\cs_new_protected:Npn \chemmacros_tikz_shade:n #1 { \shade[#1] } \cs_generate_variant:Nn \chemmacros_tikz_shade:n { f,x } -\cs_new:Npn \chemmacros_tikz_shadedraw:n #1 +\cs_new_protected:Npn \chemmacros_tikz_shadedraw:n #1 { \shadedraw[#1] } \cs_generate_variant:Nn \chemmacros_tikz_shadedraw:n { f,x } -\cs_new:Npn \chemmacros_tikz_node_in_draw:n #1 +\cs_new_protected:Npn \chemmacros_tikz_node_in_draw:n #1 { node[#1] } \cs_generate_variant:Nn \chemmacros_tikz_node_in_draw:n { f,x } -% --------------------------------------------------------------------------- % -% general functions -\cs_new_protected:Npn \chemmacros_leave_vmode: - { \hbox_unpack:N \c_empty_box } - +% -------------------------------------------------------------------------- +% a few general functions: +\cs_new_eq:NN \chemmacros_leave_vmode: \chemformula_leave_vmode: \cs_new_eq:NN \chemmacros_ignore_spaces: \tex_ignorespaces:D +\cs_new_eq:NN \chemmacros_nobreak: \chemformula_nobreak: +\cs_new_eq:NN \chemmacros_allow_break: \chemformula_allow_break: +\cs_new_eq:NN \chemmacros_skip_nobreak:N \chemformula_skip_nobreak:N +\cs_new:Npn \chemmacros_remove_backslash:N #1 + { \exp_after:wN \use_none:n \token_to_str:N #1 } -\cs_new:Npn \chemmacros_nobreak: - { \tex_penalty:D \c_ten_thousand } -\cs_new:Npn \chemmacros_allow_break: - { \tex_penalty:D \c_zero } - -\cs_new:Npn \chemmacros_skip_nobreak:N #1 +% detection and handling of bold face: +\prg_new_conditional:Npnn \chemmacros_if_bold: { T,F,TF } { - \chemmacros_nobreak: - \skip_horizontal:N #1 - \chemmacros_nobreak: + \seq_if_in:NVTF \l__chemmacros_if_bf_seq \f@series + { \prg_return_true: } + { \prg_return_false: } } -% --------------------------------------------------------------------------- % -% circled charge signs -\cs_new_protected:Npn \chemmacros_fplus: - { \ensuremath { \__chemmacros_fplus: } } - -\cs_new:Npn \__chemmacros_fplus: - { \mathpalette \__chemmacros_fplus_aux: \bigcirc } +\seq_new:N \l__chemmacros_if_bf_seq -% TODO: can I rewrite this in a more "expl3-way"? -% and what about a ``text'' version? -\cs_new:Npn \__chemmacros_fplus_aux: #1#2 +\seq_set_split:Nnn \l__chemmacros_if_bf_seq { , } { - \ooalign - { - \tex_hfil:D - $#1+$ - \tex_hfil:D - \tex_cr:D - \tex_hfil:D - $#1#2$ - \tex_hfil:D - \tex_cr:D - } + b , bc , bm , bx , bux , + eb , ebc , ebx , mb , + sb , sbc , sbx , + ub , ubc , ubx } -\cs_new_protected:Npn \chemmacros_fminus: - { \ensuremath { \__chemmacros_fminus: } } - -\cs_new:Npn \__chemmacros_fminus: - { \mathpalette \__chemmacros_fminus_aux_aux: \bigcirc } - -\cs_new:Npn \__chemmacros_fminus_aux_aux: #1#2 +\cs_new_protected:Npn \chemmacros_bm:n #1 { - \ooalign - { - \tex_hfil:D - $#1-$ - \tex_hfil:D - \tex_cr:D - \tex_hfil:D - $#1#2$ - \tex_hfil:D - \tex_cr:D - } + \bool_if:NTF \l__chemmacros_detect_bold_bool + { \bm { #1 } } + { #1 } } -% use directly: -\cs_new_eq:NN \fplus \chemmacros_fplus: -\cs_new_eq:NN \fminus \chemmacros_fminus: - -% change output depending on circled-option -\cs_new:Npn \chemmacros_plus: +\cs_new_protected:Npn \chemmacros_bf:n #1 { - \bool_if:nTF - { \l__chemmacros_circled_bool && !\l__chemmacros_circled_formal_bool } - { - \bool_if:NTF \l__chemmacros_circled_chem_bool - { \chemmacros_fplus: } - { \oplus } - } - { + } + \bool_if:NTF \l__chemmacros_detect_bold_bool + { { \normalfont \bfseries #1 } } + { { \normalfont #1 } } } -\cs_new:Npn \chemmacros_minus: +\cs_new_protected:Npn \chemmacros_detect_bold:n #1 { - \bool_if:nTF - { \l__chemmacros_circled_bool && !\l__chemmacros_circled_formal_bool } + \chemmacros_if_bold:TF { - \bool_if:NTF \l__chemmacros_circled_chem_bool - { \chemmacros_fminus: } - { \ominus } + \mode_if_math:TF + { \chemmacros_bm:n { #1 } } + { \chemmacros_bf:n { #1 } } } - { - } - } - -\cs_new_protected:Npn \chemmacros_formal_plus: - { - \group_begin: - \bool_set_false:N \l__chemmacros_circled_formal_bool - \chemmacros_plus: - \group_end: - } - -\cs_new_protected:Npn \chemmacros_formal_minus: - { - \group_begin: - \bool_set_false:N \l__chemmacros_circled_formal_bool - \chemmacros_minus: - \group_end: + { #1 } } -% --------------------------------------------------------------------------- % +% --------------------------------------------------------------------------- % transition state symbol -\cs_new:Npn \__chemmacros_transition_state: +\cs_new_protected:Npn \__chemmacros_transition_state: { \text { @@ -693,165 +686,100 @@ } } +% \DeclareDocumentCommand? \cs_new_eq:NN \transitionstatesymbol \chemmacros_transition_state: -\cs_new:Nn \chemmacros_atom:n +% -------------------------------------------------------------------------- +% let's make use of `chemformula' inside some of `chemmacros' commands: +\cs_new_protected:Nn \chemmacros_atom:n { \mode_if_math:TF { \text { \chemmacros_inner_font: #1 } } { \group_begin: \chemmacros_inner_font: #1 \group_end: } } -\cs_generate_variant:Nn \chemmacros_atom:n { o,f,x,V } +\cs_generate_variant:Nn \chemmacros_atom:n { V } -\cs_new:Npn \chemmacros_text:n #1 +\cs_new_protected:Npn \chemmacros_text:n #1 { \mode_if_math:TF { \text { #1 } } { #1 } } -% add a possibility to let chemformula use the chemformula -% with method=chemformula, too \tl_new:N \l__chemmacros_chemformula_tl + \cs_new_protected:Npn \chemmacros_chemformula:n #1 { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \ce { #1 } } - { - \group_begin: - \cs_set_eq:NN \chemformula_font_inner: \chemmacros_inner_font: - \chemformula_input_cmpd:nN { #1 } \l__chemmacros_chemformula_tl - \mode_if_math:TF - { \text { \l__chemmacros_chemformula_tl } } - { { \l__chemmacros_chemformula_tl } } - \group_end: - } + \group_begin: + \cs_set_eq:NN \chemformula_font_inner: \chemmacros_inner_font: + \chemformula_chcpd:nn {} { #1 } + \group_end: } \cs_generate_variant:Nn \chemmacros_chemformula:n { x,V } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % particles, charges -\bool_new:N \l__chemmacros_charge_append_bool -\bool_set_false:N \l__chemmacros_charge_append_bool - -% \DeclareChemParticle, \RenewChemParticle -\bool_if:NTF \l__chemmacros_use_mhchem_bool +\NewDocumentCommand \DeclareChemParticle { mm } { - \NewDocumentCommand \DeclareChemParticle { mm } - { - \cs_if_free:NTF #1 - { \cs_new:Npn #1 { \ce { #2 } \chemmacros_xspace: } } - { \chemmacros_msg:nnxx { chemmacros } { declare-particle } { #1 } {} } - } - \NewDocumentCommand \RenewChemParticle { mm } - { - \cs_if_free:NTF #1 - { \chemmacros_msg:nnxx { chemmacros } { renew-particle } { #1 } {} } - { \cs_set:Npn #1 { \ce { #2 } \chemmacros_xspace: } } - } + \cs_if_free:NTF #1 + { \chemmacros_new_particle:Nn #1 { #2 } } + { \chemmacros_msg:nnxx { chemmacros } { declare-particle } { #1 } {} } } + +\NewDocumentCommand \RenewChemParticle { mm } { - \NewDocumentCommand \DeclareChemParticle { mm } - { - \cs_if_free:NTF #1 - { \chemmacros_chem_particle:Nn #1 { #2 } } - { \chemmacros_msg:nnxx { chemmacros } { declare-particle } { #1 } {} } - } - \NewDocumentCommand \RenewChemParticle { mm } - { - \cs_if_free:NTF #1 - { \chemmacros_msg:nnxx { chemmacros } { renew-particle } { #1 } {} } - { \chemmacros_chem_particle:Nn #1 { #2 } } - } + \cs_if_free:NTF #1 + { \chemmacros_msg:nnxx { chemmacros } { renew-particle } { #1 } {} } + { \chemmacros_new_particle:Nn #1 { #2 } } } -\cs_new_protected:Nn \chemmacros_chem_particle:Nn +\cs_new_protected:Nn \chemmacros_new_particle:Nn { - \cs_set:Npn #1 + \cs_set_protected:Npn #1 { - \bool_if:NTF \l__chemformula_inside_ch_bool - { - \chemformula_input_cmpd:nN { #2 } \l__chemmacros_chemformula_tl - \tl_set_rescan:Nno \l__chemmacros_chemformula_tl - { \ExplSyntaxOn } - { \l__chemmacros_chemformula_tl } - \tl_use:N \l__chemmacros_chemformula_tl - \tl_clear:N \l__chemmacros_chemformula_tl - } - { - \group_begin: - \chemformula_input:n { #2 } - \tl_set_rescan:Nno \l__chemmacros_tmpa_tl - { \ExplSyntaxOn } - { \l__chemformula_input_tl } - \chemformula_write:V \l__chemmacros_tmpa_tl - \group_end: - \chemmacros_xspace: - } + \chemformula_chcpd:nn {} { #2 } + \chemmacros_xspace: } } -\bool_if:NTF \l__chemmacros_use_mhchem_bool - { - \cs_new:Npn \el { \chemmacros_atom:n { e } \mch \chemmacros_xspace: } - \cs_new:Npn \prt { \chemmacros_atom:n { p } \pch \chemmacros_xspace: } - } - { - \DeclareChemParticle \el { e- } - \DeclareChemParticle \prt { p+ } - } - +\DeclareChemParticle \el { e- } +\DeclareChemParticle \prt { p+ } \DeclareChemParticle \ntr { n^0 } -\cs_new:Npn \chemmacros_bm:n #1 - { - \bool_if:NTF \l__chemmacros_detect_bold_bool - { \bm { #1 } } - { #1 } - } +\DeclareChemDropped \Rad -\cs_new:Npn \chemmacros_bf:n #1 - { - \bool_if:NTF \l__chemmacros_detect_bold_bool - { { \normalfont \bfseries #1 } } - { { \normalfont #1 } } - } +% -------------------------------------------------------------------------- +% charges +% circled charge signs: they are defined in the `chemformula' module: +% use directly: + +\cs_new_protected:Npn \fplus { { \chemformula_fplus: } } +\cs_new_protected:Npn \fminus { { \chemformula_fminus: } } + +% change output depending on circled-option +\cs_new_eq:NN \chemmacros_plus: \chemformula_plus: +\cs_new_eq:NN \chemmacros_minus: \chemformula_minus: -\cs_new:Npn \chemmacros_detect_bold:n #1 +\cs_new_protected:Npn \chemmacros_formal_plus: { - \chemmacros_if_bold:TF - { - \mode_if_math:TF - { \chemmacros_bm:n { #1 } } - { \chemmacros_bf:n { #1 } } - } - { #1 } + \group_begin: + \bool_set_true:N \l__chemformula_formal_charges_bool + \chemformula_plus: + \group_end: } -\NewDocumentCommand \Rad { O{}G{} } +\cs_new_protected:Npn \chemmacros_formal_minus: { - \chemmacros_msg:nnxx { chemmacros } { command-dropped } - { \Rad } { } - #1#2 + \group_begin: + \bool_set_true:N \l__chemformula_formal_charges_bool + \chemformula_minus: + \group_end: } -% charges -\cs_new:Npn \chemmacros_charge:n #1 +\cs_new_protected:Npn \chemmacros_charge:n #1 { - \bool_if:NTF \l__chemmacros_charge_append_bool - { - \mode_if_math:TF - { {}^ { \chemmacros_detect_bold:n { #1 } } } - { $ {}^ { \chemmacros_detect_bold:n { #1 } } $ } - } - { - \mode_if_math:TF - { ^ { \chemmacros_detect_bold:n { #1 } } } - { $ ^ { \chemmacros_detect_bold:n { #1 } } $ } - } + \chemformula_superscript:n + { \chemmacros_detect_bold:n { #1 } } } \keys_define:nn { chemmacros / charges } - { - append .bool_set:N = \l__chemmacros_charge_append_bool , - append .default:n = true - } + { append .code:n = \chemmacros_option_deprecated:n { append } } \NewDocumentCommand \mch { o } { @@ -881,44 +809,67 @@ { \chemmacros_charge:n { #1 \chemmacros_formal_plus: } } } -\cs_new:Npn \delm - { \mbox { \tiny \( \delta \chemmacros_minus: \) } \chemmacros_xspace: } -\cs_new:Npn \delp - { \mbox { \tiny \( \delta \chemmacros_plus: \) } \chemmacros_xspace: } -\cs_new:Npn \fdelm - { \mbox { \tiny \( \delta \chemmacros_formal_minus: \) } \chemmacros_xspace: } -\cs_new:Npn \fdelp - { \mbox { \tiny \( \delta \chemmacros_formal_plus: \) } \chemmacros_xspace: } -\cs_new:Npn \scrm +\tl_new:N \l__chemmacros_partial_charge_format_tl +\tl_set:Nn \l__chemmacros_partial_charge_format_tl { \tiny } + +\cs_new_protected:Npn \delm + { + \mbox { + \l__chemmacros_partial_charge_format_tl + \( \delta \chemmacros_minus: \) + } + \chemmacros_xspace: + } +\cs_new_protected:Npn \delp + { + \mbox { + \l__chemmacros_partial_charge_format_tl + \( \delta \chemmacros_plus: \) + } + \chemmacros_xspace: + } +\cs_new_protected:Npn \fdelm + { + \mbox { + \l__chemmacros_partial_charge_format_tl + \( \delta \chemmacros_formal_minus: \) + } + \chemmacros_xspace: + } +\cs_new_protected:Npn \fdelp + { + \mbox { + \l__chemmacros_partial_charge_format_tl + \( \delta \chemmacros_formal_plus: \) + } + \chemmacros_xspace: + } + +\cs_new_protected:Npn \scrm { \ensuremath { \scriptstyle \chemmacros_minus: } } -\cs_new:Npn \scrp +\cs_new_protected:Npn \scrp { \ensuremath { \scriptstyle \chemmacros_plus: } } -\cs_new:Npn \fscrm +\cs_new_protected:Npn \fscrm { \ensuremath { \scriptstyle \chemmacros_formal_minus: } } -\cs_new:Npn \fscrp +\cs_new_protected:Npn \fscrp { \ensuremath { \scriptstyle \chemmacros_formal_plus: } } -\cs_new:Npn \fsscrm +\cs_new_protected:Npn \fsscrm { \ensuremath { \scriptscriptstyle \chemmacros_formal_minus: } } -\cs_new:Npn \fsscrp +\cs_new_protected:Npn \fsscrp { \ensuremath { \scriptscriptstyle \chemmacros_formal_plus: } } -% --------------------------------------------------------------------------- % -% ions, molecules -% proton, hydroxide, hydronium/oxonium, water, nucleophile, electrophile -\bool_if:NTF \l__chemmacros_use_mhchem_bool - { - \cs_new:Npn \Hpl { \chemmacros_atom:n { H } \pch \chemmacros_xspace: } - \cs_new:Npn \Hyd { \chemmacros_atom:n { OH } \mch \chemmacros_xspace: } - \cs_new:Npn \HtO { \chemmacros_chemformula:n { H3O } \pch \chemmacros_xspace: } - \cs_new:Npn \El { \chemmacros_atom:n { E } \pch \chemmacros_xspace: } - } +\keys_define:nn { chemmacros / charges } { - \DeclareChemParticle \Hpl { H+ } - \DeclareChemParticle \Hyd { OH- } - \DeclareChemParticle \HtO { H3O+ } - \DeclareChemParticle \El { E+ } + partial-format .tl_set:N = \l__chemmacros_partial_charge_format_tl } +% -------------------------------------------------------------------------- +% ions, molecules +% proton, hydroxide, hydronium/oxonium, water, nucleophile, electrophile +\DeclareChemParticle \Hpl { H+ } +\DeclareChemParticle \Hyd { OH- } +\DeclareChemParticle \HtO { H3O+ } +\DeclareChemParticle \El { E+ } \DeclareChemParticle \water { H2O } \NewDocumentCommand \chemmacros_Nu:w { o } @@ -926,11 +877,7 @@ \IfNoValueF { #1 } { \keys_set:nn { chemmacros / particle } { #1 } } \bool_if:NTF \l__chemmacros_particle_elpair_bool { \chemmacros_elpair:n { Nu } \mch } - { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \chemmacros_atom:n { Nu } \mch } - { \chemmacros_chemformula:n { Nu- } } - } + { \chemmacros_chemformula:n { Nu- } } \chemmacros_xspace: } @@ -941,15 +888,11 @@ { \cs_set_eq:NN \Nu \chemmacros_Nu:w } } -\cs_new:Npn \chemmacros_ba: +\cs_new_protected:Npn \chemmacros_ba: { \bool_if:NTF \l__chemmacros_particle_elpair_bool { \chemmacros_elpair:n { ba } \mch } - { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \chemmacros_atom:n { ba } \mch } - { \chemmacros_chemformula:n { ba- } } - } + { \chemmacros_chemformula:n { ba- } } \chemmacros_xspace: } @@ -961,7 +904,7 @@ \group_end: } -\cs_new:Npn \chemmacros_elpair:n #1 +\cs_new_protected:Npn \chemmacros_elpair:n #1 { \bool_if:NTF \l__chemmacros_chemfig_bool { @@ -998,20 +941,21 @@ elpair .default:n = dots } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% -------------------------------------------------------------------------- % IUPAC \prop_new:N \l__chemmacros_iupac_prop \cs_new_protected:Npn \chemmacros_declare_iupac:Nn #1#2 { - \tl_set_rescan:Nnn \l__chemmacros_tmpa_tl - { \char_set_catcode_letter:N \\ } - { #1 } - \tl_set:Nf \l__chemmacros_tmpa_tl - { \tl_tail:V \l__chemmacros_tmpa_tl } - \prop_if_in:NoTF \l__chemmacros_iupac_prop { \l__chemmacros_tmpa_tl } + \tl_set:Nx \l__chemmacros_tmpa_tl + { \chemmacros_remove_backslash:N #1 } + \prop_if_in:NVTF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_tl { \chemmacros_msg:nnxx { chemmacros } { declare-iupac } { #1 } { } } - { \prop_put:Non \l__chemmacros_iupac_prop { \l__chemmacros_tmpa_tl } { #2 } } + { + \prop_put:NVn \l__chemmacros_iupac_prop + \l__chemmacros_tmpa_tl + { #2 } + } \chemmacros_make_iupac: } @@ -1022,8 +966,12 @@ { #1 } \tl_set:Nf \l__chemmacros_tmpa_tl { \tl_tail:V \l__chemmacros_tmpa_tl } - \prop_if_in:NoTF \l__chemmacros_iupac_prop { \l__chemmacros_tmpa_tl } - { \prop_put:Non \l__chemmacros_iupac_prop { \l__chemmacros_tmpa_tl } { #2 } } + \prop_if_in:NVTF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_tl + { + \prop_put:NVn \l__chemmacros_iupac_prop + \l__chemmacros_tmpa_tl + { #2 } + } { \chemmacros_msg:nnxx { chemmacros } { renew-iupac } { #1 } { } } \chemmacros_make_iupac: } @@ -1076,8 +1024,8 @@ \NewDocumentCommand \cip { m } { \chemmacros_cip:n { #1 } } -\cs_new:Npn \chemmacros_cip:n #1 - { (\textit{#1}\tex_kern:D \l__chemmacros_cip_kern_dim) } +\cs_new_protected:Npn \chemmacros_cip:n #1 + { ( \textit{#1} \tex_kern:D \l__chemmacros_cip_kern_dim ) } \DeclareChemDeprecated \Rcip \R { \cip { R } } \DeclareChemDeprecated \Scip \S { \cip { S } } @@ -1087,7 +1035,7 @@ % TikZ needs : to be other \ExplSyntaxOff -\def\chemmacros@sconf#1% +\protected\def\chemmacros@sconf#1% {% \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex] { @@ -1096,7 +1044,7 @@ }% } -\def\chemmacros@rconf#1% +\protected\def\chemmacros@rconf#1% {% \tikz[baseline=(a.base),text height=1.5ex,text depth=.25ex] { @@ -1119,8 +1067,8 @@ \DeclareChemIUPAC \tert { \textit { tert } } % Fischer -\DeclareChemDeprecated \Dfi \D { \textsc { d } } -\DeclareChemDeprecated \Lfi \L { \textsc { l } } +\DeclareChemDropped \Dfi +\DeclareChemDropped \Lfi \DeclareChemIUPAC \D { \textsc { d } } \DeclareChemIUPAC \L { \textsc { l } } @@ -1148,10 +1096,10 @@ coord-use-hyphen .default:n = true } -\cs_new:Npn \chemformula_hapto:n #1 +\cs_new_protected:Npn \chemformula_hapto:n #1 { \Chemeta \chemformula_superscript:n { #1 } \chemmacros_break_point_hyphen: } -\cs_new:Npn \chemformula_bridge:n #1 +\cs_new_protected:Npn \chemformula_bridge:n #1 { \Chemmu \tl_if_blank:nF { #1 } @@ -1167,11 +1115,11 @@ \DeclareChemIUPAC \bridge { \chemformula_bridge:n } % attachments to heteroatoms / added hydrogen -\DeclareChemIUPAC \H { \textit { H } } -\DeclareChemIUPAC \O { \textit { O } } -\DeclareChemIUPAC \N { \textit { N } } -\DeclareChemIUPAC \Sf { \textit { S } } -\DeclareChemIUPAC \P { \textit { P } } +\DeclareChemIUPAC \H { \textit { H } } +\DeclareChemIUPAC \O { \textit { O } } +\DeclareChemIUPAC \N { \textit { N } } +\DeclareChemIUPAC \Sf { \textit { S } } +\DeclareChemIUPAC \P { \textit { P } } % language specific settings \AtBeginDocument @@ -1265,6 +1213,7 @@ \NewDocumentCommand \iupac { m } { \chemmacros_iupac:n { #1 } } +% -------------------------------------------------------------------------- % latin phrases \tl_new:N \l__chemmacros_latin_format_tl \tl_set:Nn \l__chemmacros_latin_format_tl { \itshape } @@ -1272,7 +1221,7 @@ \keys_define:nn { chemmacros / latin } { format . tl_set:N = \l__chemmacros_latin_format_tl } -\cs_new:Npn \chemmacros_latin:n #1 +\cs_new_protected:Npn \chemmacros_latin:n #1 { { \l__chemmacros_latin_format_tl #1 } } \prop_new:N \l__chemmacros_latin_prop @@ -1281,7 +1230,8 @@ { \cs_if_free:NTF #1 { - \cs_new:Npn #1 { \chemmacros_latin:n { #2 } \chemmacros_xspace: } + \cs_new_protected:Npn #1 + { \chemmacros_latin:n { #2 } \chemmacros_xspace: } \prop_put:Nnn \l__chemmacros_latin_prop { #1 } { #2 } } { \chemmacros_msg:nnxx { chemmacros } { declare-latin } { #1 } { } } @@ -1313,13 +1263,13 @@ { \cs_new_eq:NN \latin \chemmacros_latin:n } - \DeclareChemLatin \insitu { in~situ } + \DeclareChemLatin \insitu { in~situ } \DeclareChemLatin \abinitio { ab~initio } - \DeclareChemLatin \invacuo { in~vacuo } + \DeclareChemLatin \invacuo { in~vacuo } } % --------------------------------------------------------------------------- % -% acid/base +% acid / base \keys_define:nn { chemmacros / acid-base } { p-style .choice: , @@ -1330,64 +1280,56 @@ \cs_new_eq:NN \chemmacros_p_style:n \textup -% TODO: rewrite in expl3 style -\cs_new:Npn \chemmacros_if_bold:TF #1#2 - { - \ifx\f@series\l__chemmacros_if_bf_tl - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - { #1 }{ #2 } - } - -\tl_new:N \l__chemmacros_if_bf_tl -\tl_set:Nn \l__chemmacros_if_bf_tl { bx } - \cs_new_protected:Npn \Ka { - \mbox + \ensuremath { - \( - \chemmacros_detect_bold:n - { - K \c_math_subscript_token \mathrm - { \bool_if:NTF \l__chemmacros_german_bool { S } { A } } - } - \) + \chemmacros_detect_bold:n + { + K + \c_math_subscript_token + { \chemmacros_translate:nn { K-acid } { A } } + } } \chemmacros_xspace: } \cs_new_protected:Npn \Kb { - \mbox + \ensuremath { - \( - \chemmacros_detect_bold:n - { K \c_math_subscript_token \mathrm { B } } - \) + \chemmacros_detect_bold:n + { + K + \c_math_subscript_token + { \chemmacros_translate:nn { K-base } { B } } + } } \chemmacros_xspace: } \cs_new_protected:Npn \Kw { - \mbox + \ensuremath { - \( - \chemmacros_detect_bold:n - { K \c_math_subscript_token \mathrm { W } } - \) + \chemmacros_detect_bold:n + { + K + \c_math_subscript_token + { \chemmacros_translate:nn { K-water } { W } } + } } \chemmacros_xspace: } -\cs_new:Npn \chemmacros_p:n #1 +\cs_new_protected:Npn \chemmacros_p:n #1 { \group_begin: - \chemmacros_p_style:n { p } - \ensuremath { #1 } + \mbox + { + \chemmacros_p_style:n { p } + \ensuremath { #1 } + } \group_end: } @@ -1411,7 +1353,7 @@ \chemmacros_p:n { \Ka \IfNoValueF { #1 } - { \c_math_subscript_token { \chemmacros_detect_bold:n { #1 } } } + { {} \c_math_subscript_token { \chemmacros_detect_bold:n { #1 } } } } \chemmacros_xspace: } @@ -1421,12 +1363,12 @@ \chemmacros_p:n { \Kb \IfNoValueF { #1 } - { \c_math_subscript_token { \chemmacros_detect_bold:n { #1 } } } + { {} \c_math_subscript_token { \chemmacros_detect_bold:n { #1 } } } } \chemmacros_xspace: } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % units \DeclareSIUnit { \atm } { atm } \DeclareSIUnit { \atmosphere } { atm } @@ -1448,7 +1390,7 @@ \DeclareSIUnit { \normal } { \textsc{n} } \DeclareSIUnit { \torr } { torr } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % reaction mechanisms % \mech[<type>] % <type> - substitutions: {}, 1, 2, se, 1e, 2e, ar @@ -1545,27 +1487,27 @@ { \chemmacros_mech:n { #1 } } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % oxidation numbers % \ox{<number>,<atom>} -\bool_new:N \l__chemmacros_ox_sign_bool -\bool_new:N \l__chemmacros_ox_integer_bool -\bool_new:N \l__chemmacros_ox_explicit_sign_bool +\bool_new:N \l__chemmacros_ox_sign_bool +\bool_new:N \l__chemmacros_ox_integer_bool +\bool_new:N \l__chemmacros_ox_explicit_sign_bool \bool_set_false:N \l__chemmacros_ox_explicit_sign_bool -\bool_new:N \l__chemmacros_ox_format_roman_bool -\bool_set_true:N \l__chemmacros_ox_format_roman_bool -\bool_new:N \l__chemmacros_ox_decimal_marker_comma_bool +\bool_new:N \l__chemmacros_ox_format_roman_bool +\bool_set_true:N \l__chemmacros_ox_format_roman_bool +\bool_new:N \l__chemmacros_ox_decimal_marker_comma_bool \bool_set_false:N \l__chemmacros_ox_decimal_marker_comma_bool -\bool_new:N \l__chemmacros_ox_parse_bool -\bool_set_true:N \l__chemmacros_ox_parse_bool -\bool_new:N \l__chemmacros_ox_side_bool -\bool_new:N \l__chemmacros_ox_super_bool -\bool_new:N \l__chemmacros_ox_top_bool -\bool_set_true:N \l__chemmacros_ox_top_bool -\bool_new:N \l__chemmacros_ox_align_center_bool +\bool_new:N \l__chemmacros_ox_parse_bool +\bool_set_true:N \l__chemmacros_ox_parse_bool +\bool_new:N \l__chemmacros_ox_side_bool +\bool_new:N \l__chemmacros_ox_super_bool +\bool_new:N \l__chemmacros_ox_top_bool +\bool_set_true:N \l__chemmacros_ox_top_bool +\bool_new:N \l__chemmacros_ox_align_center_bool -\int_new:N \l__chemmacros_ox_number_int -\fp_new:N \l__chemmacros_ox_number_fp +\int_new:N \l__chemmacros_ox_number_int +\fp_new:N \l__chemmacros_ox_number_fp \cs_new_protected:Npn \__chemmacros_ox_process_number:n #1 { @@ -1591,16 +1533,20 @@ slash-symbol-font = lmr } -\cs_new:Npn \__chemmacros_ox_fraction:n #1/#2 +\cs_new_protected:Npn \__chemmacros_ox_fraction:n #1/#2 { \bool_set_false:N \l__chemmacros_ox_format_roman_bool \__chemmacros_ox_sign:n { #1 } \bool_if:NTF \l__chemmacros_ox_side_bool { \sfrac { \__chemmacros_ox_value:n { #1 } } { #2 } } - { \sfrac [ chemmacros-ox-frac ] { \__chemmacros_ox_value:n { #1 } } { #2 } } + { + \sfrac [ chemmacros-ox-frac ] + { \__chemmacros_ox_value:n { #1 } } + { #2 } + } } -\cs_new:Npn \__chemmacros_ox_sign:n #1 +\cs_new_protected:Npn \__chemmacros_ox_sign:n #1 { \fp_compare:nNnT { #1 } > { 0 } { \bool_if:NT \l__chemmacros_ox_explicit_sign_bool { $+$ } } @@ -1616,13 +1562,11 @@ \fp_abs:N \l__chemmacros_ox_number_fp \__chemmacros_ox_is_integer:V \l__chemmacros_ox_number_fp \bool_if:NTF \l__chemmacros_ox_format_roman_bool - { - \__chemmacros_fp_to_Roman:V \l__chemmacros_ox_number_fp - } + { \__chemmacros_fp_to_Roman:V \l__chemmacros_ox_number_fp } { \bool_if:NTF \l__chemmacros_ox_integer_bool - { \__chemmacros_fp_to_arabic:V \l__chemmacros_ox_number_fp } - { \__chemmacros_fp_show:V \l__chemmacros_ox_number_fp } + { $ \__chemmacros_fp_to_arabic:V \l__chemmacros_ox_number_fp $ } + { $ \__chemmacros_fp_show:V \l__chemmacros_ox_number_fp $ } } } @@ -1646,10 +1590,11 @@ \group_begin: \fp_set:Nn \l__chemmacros_tmpa_tl { #1 } \fp_round_places:Nn \l__chemmacros_tmpa_tl { 0 } - \int_set:Nn \l__chemmacros_tmpa_int { \fp_to_tl:N \l__chemmacros_tmpa_tl } + \int_set:Nn \l__chemmacros_tmpa_int + { \fp_to_tl:N \l__chemmacros_tmpa_tl } \int_compare:nTF { \l__chemmacros_tmpa_int = 0 } { 0 } - { \int_to_Roman:n { \int_use:N \l__chemmacros_tmpa_int } } + { \int_to_Roman:n { \l__chemmacros_tmpa_int } } \group_end: } \cs_generate_variant:Nn \__chemmacros_fp_to_Roman:n { V } @@ -1669,7 +1614,8 @@ \fp_set:Nn \l__chemmacros_tmpa_tl { #1 } \bool_if:NTF \l__chemmacros_ox_decimal_marker_comma_bool { - \tl_set:Nx \l__chemmacros_tmpb_tl { \fp_to_tl:N \l__chemmacros_tmpa_tl } + \tl_set:Nx \l__chemmacros_tmpb_tl + { \fp_to_tl:N \l__chemmacros_tmpa_tl } \tl_replace_once:Nnn \l__chemmacros_tmpb_tl { . } { {,} } \tl_use:N \l__chemmacros_tmpb_tl } @@ -1810,12 +1756,19 @@ \cs_new_protected:Npn \chemmacros_redox_partner:nn #1#2 { - \tl_if_blank:nT { #1 } - { \msg_error:nnx { chemmacros } { OX } { node~name~missing } } - \tl_if_blank:nT { #2 } - { \msg_error:nnx { chemmacros } { OX } { atom~missing } } - \tikz[baseline=(#1.base),remember~picture] - { \node [inner~sep=0] (#1) { #2 } ; } + \chemformula_latex_if:nTF { measuring@ } + { + \tikz[baseline=(#1.base)] + { \node [inner~sep=0] (#1) { #2 } ; } + } + { + \tl_if_blank:nT { #1 } + { \msg_error:nnx { chemmacros } { OX } { node~name~missing } } + \tl_if_blank:nT { #2 } + { \msg_error:nnx { chemmacros } { OX } { atom~missing } } + \tikz[baseline=(#1.base),remember~picture] + { \node [inner~sep=0] (#1) { #2 } ; } + } } \cs_new_protected:Npn \__chemmacros_redox_coordinates:nn #1#2 @@ -1937,20 +1890,18 @@ \leftmargin\z@ } -\bool_new:N \l__chemmacros_nmr_frequency_bool -\bool_new:N \l__chemmacros_nmr_solvent_bool -\bool_new:N \l__chemmacros_nmr_delimiters_bool -\bool_new:N \l__chemmacros_nmr_comma_bool -\bool_new:N \l__chemmacros_nmr_inner_bool -\bool_new:N \l__chemmacros_nmr_position_sub_bool -\bool_new:N \l__chemmacros_nmr_parse_bool +\bool_new:N \l__chemmacros_nmr_frequency_bool +\bool_new:N \l__chemmacros_nmr_solvent_bool +\bool_new:N \l__chemmacros_nmr_delimiters_bool +\bool_new:N \l__chemmacros_nmr_comma_bool +\bool_new:N \l__chemmacros_nmr_inner_bool +\bool_new:N \l__chemmacros_nmr_position_sub_bool +\bool_new:N \l__chemmacros_nmr_parse_bool \bool_set_true:N \l__chemmacros_nmr_parse_bool -\bool_new:N \l__chemmacros_nmr_list_bool -% \bool_set_true:N \l__chemmacros_nmr_list_bool -\bool_new:N \l__chemmacros_nmr_use_equal_bool -% \bool_set_true:N \l__chemmacros_nmr_use_equal_bool -\bool_new:N \l__chemmacros_nmr_custom_command_active_bool -\bool_new:N \l__chemmacros_nmr_custom_command_used_bool +\bool_new:N \l__chemmacros_nmr_list_bool +\bool_new:N \l__chemmacros_nmr_use_equal_bool +\bool_new:N \l__chemmacros_nmr_custom_command_active_bool +\bool_new:N \l__chemmacros_nmr_custom_command_used_bool \cs_new_protected:Npn \__chemmacros_nmr_nucleus:w #1,#2 \q_stop { @@ -1983,33 +1934,25 @@ \tl_put_right:Nn \g__chemmacros_nmr_element_coupled_tl { \} } } \tl_put_left:Nn \g__chemmacros_nmr_element_coupled_tl { #2 } - \bool_if:NTF \l__chemmacros_bpchem_bool - { \IUPAC { \^ { #1 } \g__chemmacros_nmr_element_coupled_tl - NMR } } - { - \iupac { \^ { #1 } } - \bool_if:NTF \l__chemmacros_nmr_parse_bool - { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \exp_args:No \ce { \g__chemmacros_nmr_element_coupled_tl } } - { \exp_args:No \ch { \g__chemmacros_nmr_element_coupled_tl } } - } - { \chemmacros_atom:V \g__chemmacros_nmr_element_coupled_tl } - - NMR - } + \iupac { \^ { #1 } } + \bool_if:NTF \l__chemmacros_nmr_parse_bool + { \chemformula_ch:nV {} \g__chemmacros_nmr_element_coupled_tl } + { \chemmacros_atom:V \g__chemmacros_nmr_element_coupled_tl } + - NMR } \cs_generate_variant:Nn \__chemmacros_nmr_base:nn { VV } -\cs_new:Npn \__chemmacros_nmr_frequency:n #1 +\cs_new_protected:Npn \__chemmacros_nmr_frequency:n #1 { \tl_if_in:nnTF { #1 } { , } { \__chemmacros_nmr_frequency_aux_i:w #1 \q_stop } { \__chemmacros_nmr_frequency_aux_ii:n { #1 } } } -\cs_new:Npn \__chemmacros_nmr_frequency_aux_i:w #1,#2 \q_stop +\cs_new_protected:Npn \__chemmacros_nmr_frequency_aux_i:w #1,#2 \q_stop { \SI { #1 } { #2 } } -\cs_new:Npn \__chemmacros_nmr_frequency_aux_ii:n #1 +\cs_new_protected:Npn \__chemmacros_nmr_frequency_aux_ii:n #1 { \SI { #1 } { \tl_use:N \l__chemmacros_nmr_unit_tl } } \keys_define:nn { chemmacros / nmr } @@ -2066,21 +2009,27 @@ \NewDocumentCommand \RenewChemNMR { mm } { \chemmacros_renew_nmr:Nn #1 { #2 } } -% TODO: separate document and module level +\NewDocumentCommand \NMR { s G{} D(){} O{} } + { + \IfBooleanTF { #1 } + { \chemmacros_nmr:nnnn { * } { #2 } { #3 } { #4 } } + { \chemmacros_nmr:nnnn { } { #2 } { #3 } { #4 } } + } + \AtBeginDocument { % \NMR{<num>,<elem>}(<num>,<unit>)[<solvent>] ALL arguments are optional % \NMR* same but without ": $\delta$" at end - \NewDocumentCommand \NMR { s g d() o } + \cs_new_protected:Npn \chemmacros_nmr:nnnn #1#2#3#4 { \bool_if:NT \l__chemmacros_nmr_list_bool { \item \scan_stop: } \group_begin: \chemmacros_leave_vmode: \bool_set_false:N \l__chemmacros_nmr_frequency_bool \bool_set_false:N \l__chemmacros_nmr_solvent_bool - \IfNoValueF { #3 } + \tl_if_empty:nF { #3 } { \bool_set_true:N \l__chemmacros_nmr_frequency_bool } - \IfNoValueF { #4 } + \tl_if_empty:nF { #4 } { \bool_set_true:N \l__chemmacros_nmr_solvent_bool } \bool_if:nT { @@ -2096,7 +2045,7 @@ \l__chemmacros_nmr_solvent_bool } { \bool_set_true:N \l__chemmacros_nmr_comma_bool } - \IfNoValueTF { #2 } + \tl_if_empty:nTF { #2 } { \__chemmacros_nmr_nucleus:w \l__chemmacros_nmr_isotope_default_tl , @@ -2122,10 +2071,10 @@ { \chemmacros_atom:n { #4 } } \bool_if:NT \l__chemmacros_nmr_delimiters_bool { ) } - \IfBooleanF { #1 } { : ~ } + \tl_if_blank:nT { #1 } { : ~ } \group_end: } - \IfBooleanF { #1 } + \tl_if_blank:nT { #1 } { \delta \text { \l__chemmacros_nmr_delta_tl } @@ -2147,25 +2096,21 @@ \bool_if:NT \l__chemmacros_nmr_solvent_bool { \bool_if:NTF \l__chemmacros_nmr_parse_bool - { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \ce { #4 } } - { \ch { #4 } } - } + { \chemformula_ch:nn { } { #4 } } { #4 } } \bool_if:NT \l__chemmacros_nmr_delimiters_bool { ) } - \IfBooleanF { #1 } { : } + \tl_if_blank:nT { #1 } { : } \group_end: - \IfBooleanF { #1 } + \tl_if_blank:nT { #1 } { \tl_use:N \c_space_tl $ \delta $ \l__chemmacros_nmr_delta_tl \bool_if:NT \l__chemmacros_nmr_use_equal_bool { ~ = } } \bool_if:NF \l__chemmacros_nmr_comma_bool - { \IfBooleanF { #1 } { \chemmacros_xspace: } } + { \tl_if_blank:nT { #1 } { \chemmacros_xspace: } } } \group_end: } @@ -2188,6 +2133,7 @@ { \chemmacros_val_aux:w #1 \q_nil } { \num { #1 } } } + \cs_new_protected:Npn \chemmacros_val_aux:w #1--#2 \q_nil { \numrange { #1 } { #2 } } @@ -2211,30 +2157,14 @@ \chemmacros_ignore_spaces: } -\cs_new:Npn \chemmacros_nmr_number:n #1 - { - #1 \, - \bool_if:NTF \l__chemmacros_bpchem_bool - { \g__chemmacros_nmr_element_tl } - { \chemmacros_atom:V \g__chemmacros_nmr_element_tl } - } +\cs_new_protected:Npn \chemmacros_nmr_number:n #1 + { #1 \, \chemmacros_atom:V \g__chemmacros_nmr_element_tl } -\cs_new:Npn \chemmacros_nmr_position:n #1 +\cs_new_protected:Npn \chemmacros_nmr_position:n #1 { - \bool_if:NTF \l__chemmacros_bpchem_bool - { - \tl_use:N \g__chemmacros_nmr_element_tl - \bool_if:NTF \l__chemmacros_nmr_position_sub_bool - { $\sb{#1}$ } - { - #1 } - } - { - \bool_if:NTF \l__chemmacros_nmr_position_sub_bool - { - \chemmacros_chemformula:x { \g__chemmacros_nmr_element_tl _ #1 } - } - { \chemmacros_atom:V \g__chemmacros_nmr_element_tl - #1 } - } + \bool_if:NTF \l__chemmacros_nmr_position_sub_bool + { \chemmacros_chemformula:x { \g__chemmacros_nmr_element_tl _ #1 } } + { \chemmacros_atom:V \g__chemmacros_nmr_element_tl - #1 } } \cs_new_protected:Npn \chemmacros_nmr_coupling:w @@ -2255,14 +2185,14 @@ \__chemmacros_nmr_coupling_aux_i:w } -\cs_new:Npn \__chemmacros_nmr_coupling_aux_i:w +\cs_new_protected:Npn \__chemmacros_nmr_coupling_aux_i:w { \peek_meaning:NTF [ { \__chemmacros_nmr_coupling_aux_ii:w } { \__chemmacros_nmr_coupling_aux_iii:n } } -\cs_new:Npn \__chemmacros_nmr_coupling_aux_ii:w [#1]#2 +\cs_new_protected:Npn \__chemmacros_nmr_coupling_aux_ii:w [#1]#2 { \group_begin: \sisetup @@ -2278,7 +2208,7 @@ \group_end: } -\cs_new:Npn \__chemmacros_nmr_coupling_aux_iii:n #1 +\cs_new_protected:Npn \__chemmacros_nmr_coupling_aux_iii:n #1 { \group_begin: \sisetup @@ -2295,14 +2225,10 @@ \group_end: } -% --------------------------------------------------------------------------- % -% placing text below atom/molecule -\cs_new_protected:Npn \chemmacros_dim_to_width:Nn #1#2 - { - \hbox_set:Nn \l__chemmacros_tmpa_box { #2 } - \dim_set:Nn #1 { \box_wd:N \l__chemmacros_tmpa_box } - \box_clear:N \l__chemmacros_tmpa_box - } +% -------------------------------------------------------------------------- +% placing text below atom/molecule -- only for `mhchem' users or users of +% version 1 +\cs_new_eq:NN \chemmacros_dim_to_width:Nn \chemformula_dim_to_width:Nn \bool_new:N \l__chemmacros_mhname_width_bool \bool_set_false:N \l__chemmacros_mhname_width_bool @@ -2331,7 +2257,7 @@ } % \mhName[<keyval>]{<chemformula>}{<text>} -\bool_if:nF { \l__chemmacros_version_one_bool || \l__chemmacros_use_mhchem_bool } +\bool_if:NF \l__chemmacros_version_one_bool { \NewDocumentCommand \mhName { o m m } { @@ -2352,7 +2278,7 @@ #3 } } - { \ce { #2 } } + { \cf { #2 } } } \group_end: } @@ -2374,75 +2300,57 @@ space .dim_set:N = \l__chemmacros_phases_space_dim } -\cs_new_protected:Npn \chemmacros_declare_phase:Nnn #1#2#3 +\cs_new_protected:Npn \chemmacros_declare_phase:Nn #1#2 { - \tl_set_rescan:Nnn \l__chemmacros_tmpa_tl - { \char_set_catcode_letter:N \\ } - { #1 } - \tl_set:Nf \l__chemmacros_tmpa_tl { \tl_tail:V \l__chemmacros_tmpa_tl } - \cs_if_free:NTF #1 - { \cs_new:Npn #1 {} } + \tl_set:Nx \l__chemmacros_tmpa_tl + { \chemmacros_remove_backslash:N #1 } + \cs_if_free:NF #1 { \chemmacros_msg:nnxx { chemmacros } { declare-phase } { #1 } {} } - \tl_if_blank:nTF { #2 } - { \prop_put:Non \l__chemmacros_phases_german_prop { \l__chemmacros_tmpa_tl } { #3 } } - { \prop_put:Non \l__chemmacros_phases_german_prop { \l__chemmacros_tmpa_tl } { #2 } } - \prop_put:Non \l__chemmacros_phases_prop - { \l__chemmacros_tmpa_tl } - { #3 } - \chemmacros_make_phases: + \DeclareTranslationFallback { phase-\l__chemmacros_tmpa_tl } { #2 } + \__chemmacros_define_phase:Nx #1 + { + \exp_not:N \chemmacros_translate:nn + { phase-\l__chemmacros_tmpa_tl } + { #2 } + } } -\cs_new_protected:Npn \chemmacros_renew_phase:Nnn #1#2#3 +\cs_new_protected:Npn \chemmacros_renew_phase:Nn #1#2 { - \tl_set_rescan:Nnn \l__chemmacros_tmpa_tl - { \char_set_catcode_letter:N \\ } - { #1 } - \tl_set:Nf \l__chemmacros_tmpa_tl { \tl_tail:V \l__chemmacros_tmpa_tl } + \tl_set:Nx \l__chemmacros_tmpa_tl + { \chemmacros_remove_backslash:N #1 } \cs_if_free:NT #1 { \chemmacros_msg:nnxx { chemmacros } { renew-phase } { #1 } {} } - \tl_if_blank:nTF { #2 } - { \prop_put:Non \l__chemmacros_phases_german_prop { \l__chemmacros_tmpa_tl } { #3 } } - { \prop_put:Non \l__chemmacros_phases_german_prop { \l__chemmacros_tmpa_tl } { #2 } } - \prop_put:Non \l__chemmacros_phases_prop - { \l__chemmacros_tmpa_tl } - { #3 } - \chemmacros_make_phases: + \DeclareTranslationFallback { phase-\l__chemmacros_tmpa_tl } { #2 } + \__chemmacros_define_phase:Nx #1 + { + \exp_not:N \chemmacros_translate:nn + { phase-\l__chemmacros_tmpa_tl } + { #2 } + } } \NewDocumentCommand \DeclareChemPhase { mom } { \IfNoValueTF { #2 } - { \chemmacros_declare_phase:Nnn #1 { } { #3 } } - { \chemmacros_declare_phase:Nnn #1 { #2 } { #3 } } + { \chemmacros_declare_phase:Nn #1 { #3 } } + { \chemmacros_declare_phase:Nn #1 { #3 } } } \NewDocumentCommand \RenewChemPhase { mom } { \IfNoValueTF { #2 } - { \chemmacros_renew_phase:Nnn #1 { } { #3 } } - { \chemmacros_renew_phase:Nnn #1 { #2 } { #3 } } - } - -\cs_new_protected:Npn \chemmacros_make_phases: - { - \bool_if:NTF \l__chemmacros_german_bool - { - \prop_map_function:NN \l__chemmacros_phases_german_prop - \__chemmacros_define_phases:nn - } - { - \prop_map_function:NN \l__chemmacros_phases_prop - \__chemmacros_define_phases:nn - } + { \chemmacros_renew_phase:Nn #1 { #3 } } + { \chemmacros_renew_phase:Nn #1 { #3 } } } -\cs_new_protected:Npn \__chemmacros_define_phases:nn #1#2 +\cs_new_protected:Npn \__chemmacros_define_phase:Nn #1#2 { - \cs_set:cpn { #1 } + \cs_set_protected:Npn #1 { \bool_if:NTF \l__chemmacros_phases_sub_bool { - \bool_if:NTF \l__chemformula_inside_ch_bool + \bool_if:NTF \l_chemformula_inside_ch_bool { \chemformula_subscript:n { ( #2 ) } } { \ensuremath { \c_math_subscript_token { \text { (#2) } } } } } @@ -2455,13 +2363,14 @@ } } } +\cs_generate_variant:Nn \__chemmacros_define_phase:Nn { Nx } -\DeclareChemPhase \sld [ f ] { s } -\DeclareChemPhase \lqd [ f{}l ] { l } -\DeclareChemPhase \gas { g } -\DeclareChemPhase \aq { aq } +\DeclareChemPhase\sld{ s } +\DeclareChemPhase\lqd{ l } +\DeclareChemPhase\gas{ g } +\DeclareChemPhase\aq { aq } -\cs_new:Npn \chemmacros_phase:n #1 +\cs_new_protected:Npn \chemmacros_phase:n #1 { \bool_if:NTF \l__chemmacros_phases_sub_bool { \ensuremath { \c_math_subscript_token { \text { (#1) } } } } @@ -2483,29 +2392,42 @@ \cs_new_eq:NN \liquid \lqd } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % reaction environments +\cs_new_protected:Npn \__chemmacros_record_for_lor:nnnnn #1#2#3#4#5 + { + \tl_if_eq:nnT { #1 } { reaction } + { + \group_begin: + % we need to prevent \Hy@make@anchor from being written to the lor + % file: + \bool_if:NT \l__chemmacros_hyperref_bool + { \cs_set:Npn \Hy@make@anchor {} } + \addcontentsline { lor } { reaction } + { + \tl_use:N \l__chemmacros_reaction_lorname_tl + #2 #3 #4 #5 + \tl_use:N \g__chemmacros_reaction_description_tl + } + \tl_gclear:N \g__chemmacros_reaction_description_tl + \group_end: + } + } % redefine mathtools' command \MT_define_tagform:nwnn to ensure we add an % entry to the list of reactions even if the user redefines the reaction tag +% this should probably be done via patching... \AfterPackage* { mathtools } { - \cs_set:Npn \MT_define_tagform:nwnn #1[#2]#3#4 + \cs_set_protected:Npn \MT_define_tagform:nwnn #1[#2]#3#4 { \@namedef{MT_tagform_#1:n}##1 { % this is the original part: \maketag@@@{#3\ignorespaces#2{##1}\unskip\@@italiccorr#4} - % this is added: - \tl_if_eq:nnT { #1 } { reaction } - { - \addcontentsline { lor } { reaction } - { - \l__chemmacros_reaction_lorname_tl #3 #2 ##1 #4 - \tl_use:N \g__chemmacros_reaction_description_tl - } - \tl_gclear:N \g__chemmacros_reaction_description_tl - } + % this is added => this disturbs hyperref: + \__chemmacros_record_for_lor:nnnnn + { #1 } { #3 } { #2 } { ##1 } { #4 } } } } @@ -2522,35 +2444,21 @@ { \chemmacros_add_reaction_description:n { #1 } } % define \listofreactions -\tl_new:N \l__chemmacros_reaction_lorname_tl -\tl_set:Nn \l__chemmacros_reaction_lorname_tl { Reaction ~ } -\tl_new:N \reactionlistname -\tl_set:Nn \reactionlistname { List~of~reactions } +\tl_new:N \l__chemmacros_reaction_lorname_tl +\tl_new:N \reactionlistname -% language settings % TODO -\AtBeginDocument +% TODO: add option +\cs_new:Npn \__chemmacros_reaction_heading:n #1 + { \section* { #1 } } +\cs_generate_variant:Nn \__chemmacros_reaction_heading:n { V } + +\cs_new_protected:Npn \listofreactions { - \bool_if:NT \l__chemmacros_german_bool - { - \tl_set:Nn \reactionlistname { Reaktionsverzeichnis } - \tl_set:Nn \l__chemmacros_reaction_lorname_tl { Reaktion ~ } - } - \bool_if:NT \l__chemmacros_italian_bool - { - \tl_set:Nn \reactionlistname { Elenco ~ delle ~ reazioni } - \tl_set:Nn \l__chemmacros_reaction_lorname_tl { Reazione ~ } - } - \bool_if:NT \l__chemmacros_french_bool - { - \tl_set:Nn \reactionlistname { Table ~ des ~ r\'eactions } - \tl_set:Nn \l__chemmacros_reaction_lorname_tl { R\'eaction ~ } - } + \__chemmacros_reaction_heading:V \reactionlistname + \@starttoc { lor } } -\cs_new:Npn \listofreactions - { \section* { \reactionlistname } \@starttoc { lor } } - -\cs_new:Npn \l@reaction #1#2 +\cs_new_protected:Npn \l@reaction #1#2 { \@dottedtocline { 1 } { 1.5em } { 2.3em } { #1 } { #2 } } % create tagform @@ -2561,7 +2469,7 @@ \newcounter { reaction } % switch to reaction tags -\cs_new:Npn \__chemmacros_begin_reaction: +\cs_new_protected:Npn \__chemmacros_begin_reaction: { % create individual names for `hyperref': \bool_if:NT \l__chemmacros_hyperref_bool @@ -2580,7 +2488,7 @@ } % switch back to equation tags -\cs_new:Npn \__chemmacros_end_reaction: +\cs_new_protected:Npn \__chemmacros_end_reaction: { \setcounter { reaction } { \value { equation } } \setcounter { equation } { \value { chemmacros_save_reaction } } @@ -2592,88 +2500,85 @@ \keys_define:nn { chemmacros / reaction } { - star .bool_set:N = \l__chemmacros_reactions_star_bool , - star .default:n = true , - arg .bool_set:N = \l__chemmacros_reactions_args_bool , - arg .default:n = true , - list-name .tl_set:N = \reactionlistname , - list-entry .code:n = - \tl_set:Nn \l__chemmacros_reaction_lorname_tl { #1 ~ } + star .bool_set:N = \l__chemmacros_reactions_star_bool , + star .default:n = true , + arg .bool_set:N = \l__chemmacros_reactions_args_bool , + arg .default:n = true , + list-name .tl_set:N = \reactionlistname , + list-entry .code:n = + \tl_set:Nn \l__chemmacros_reaction_lorname_tl { #1 ~ } , + list-heading .code:n = + \cs_set:Npn \__chemmacros_reaction_heading:n ##1 { #1 { ##1 } } } -% TODO separate document and module level % \DeclareChemReaction[<keyval>]{<name>}{<type>} -\bool_if:NF \l__chemmacros_version_one_bool +\cs_new_protected:Npn \chemmacros_new_reaction:nnn #1#2#3 { - \NewDocumentCommand \DeclareChemReaction { o m m } - { - \cs_if_exist:cTF { #2 } - { \msg_error:nnx { chemmacros } { already-defined } { #2 } } - { - \IfNoValueTF { #1 } - { - \bool_set_false:N \l__chemmacros_reactions_star_bool - \bool_set_false:N \l__chemmacros_reactions_args_bool - } - { \keys_set:nn { chemmacros / reaction } { #1 } } - \bool_if:NTF \l__chemmacros_reactions_args_bool - { - \NewEnviron { #2 } [ 2 ] [] - { - \__chemmacros_begin_reaction: - \AddRxnDesc { ##1 } - \begin { #3 } { ##2 } - \chemmacros_equation_chemformula:V \BODY - \end{ #3 } - \__chemmacros_end_reaction: - } - \bool_if:NT \l__chemmacros_reactions_star_bool - { - \NewEnviron { #2* } [ 1 ] - { - \begin { #3* } { ##1 } - \chemmacros_equation_chemformula:V \BODY - \end { #3* } - } - } - } - { - \NewEnviron { #2 } [ 1 ] [] - { - \__chemmacros_begin_reaction: - \AddRxnDesc { ##1 } - \begin { #3 } - \chemmacros_equation_chemformula:V \BODY - \end { #3 } - \__chemmacros_end_reaction: - } - \bool_if:NT \l__chemmacros_reactions_star_bool - { - \NewEnviron { #2* } - { - \begin { #3* } - \chemmacros_equation_chemformula:V \BODY - \end { #3* } - } - } - } - } - \ignorespaces - } - \cs_set:Npn \newreaction + \cs_if_exist:cTF { #2 } + { \msg_error:nnx { chemmacros } { already-defined } { #2 } } { - \chemmacros_msg:nnxx { chemmacros } { command-deprecated } - { \newreaction } { \DeclareChemReaction } - \DeclareChemReaction + \bool_set_false:N \l__chemmacros_reactions_star_bool + \bool_set_false:N \l__chemmacros_reactions_args_bool + \keys_set:nn { chemmacros / reaction } { #1 } + \bool_if:NTF \l__chemmacros_reactions_args_bool + { + \NewEnviron { #2 } [ 2 ] [] + { + \__chemmacros_begin_reaction: + \AddRxnDesc { ##1 } + \begin { #3 } { ##2 } + \chemmacros_equation_chemformula:V \BODY + \end{ #3 } + \__chemmacros_end_reaction: + } + \bool_if:NT \l__chemmacros_reactions_star_bool + { + \NewEnviron { #2* } [ 1 ] + { + \begin { #3* } { ##1 } + \chemmacros_equation_chemformula:V \BODY + \end { #3* } + } + } + } + { + \NewEnviron { #2 } [ 1 ] [] + { + \__chemmacros_begin_reaction: + \AddRxnDesc { ##1 } + \begin { #3 } + \chemmacros_equation_chemformula:V \BODY + \end { #3 } + \__chemmacros_end_reaction: + } + \bool_if:NT \l__chemmacros_reactions_star_bool + { + \NewEnviron { #2* } + { + \begin { #3* } + \chemmacros_equation_chemformula:V \BODY + \end { #3* } + } + } + } } + \ignorespaces } -\cs_new:Npn \chemmacros_equation_chemformula:n #1 +\bool_if:NF \l__chemmacros_version_one_bool { - \bool_if:NTF \l__chemmacros_use_mhchem_bool - { \cee { #1 } } - { \ch { #1 } } + \NewDocumentCommand \DeclareChemReaction { o m m } + { + \IfNoValueTF { #1 } + { \chemmacros_new_reaction:nnn { } { #2 } { #3 } } + { \chemmacros_new_reaction:nnn { #1 } { #2 } { #3 } } + } + \DeclareChemDeprecated \newreaction \DeclareChemReaction + { \DeclareChemReaction } } + +\cs_new_protected:Npn \chemmacros_equation_chemformula:n #1 + { \chemformula_ch:nn { } { #1 } } \cs_generate_variant:Nn \chemmacros_equation_chemformula:n { V } % predefined: @@ -2683,43 +2588,44 @@ \DeclareChemReaction [ star ] { reactions } { align } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % thermodynamics et.al. % \standardstate as defined by the chemstyle package. Thanks to Joseph Wright -\cs_if_exist:NF \standardstate +% the `chemstyle' provides it with \providecommand so it doesn't matter which +% package defines it first +\ProvideDocumentCommand \standardstate {} + { \ensuremath { \chemmacros_standardstate: } } + +\cs_new_protected:Npn \chemmacros_standardstate: + { \mathpalette \chemmacros_standardstate_aux: \circ } + +\cs_new_protected:Npn \chemmacros_standardstate_aux: #1#2 { - \cs_new:Npn \standardstate - { \ensuremath { \chemmacros_standardstate: } } - \cs_new:Npn \chemmacros_standardstate: - { \mathpalette \chemmacros_standardstate_aux: \circ } - \cs_new:Npn \chemmacros_standardstate_aux: #1#2 + \ooalign { - \ooalign - { - \tex_hfil:D - $#1-$ - \tex_hfil:D - \tex_cr:D - \tex_hfil:D - $#1#2$ - \tex_hfil:D - \tex_cr:D - } + \tex_hfil:D + $#1-$ + \tex_hfil:D + \tex_cr:D + \tex_hfil:D + $#1#2$ + \tex_hfil:D + \tex_cr:D } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % \State -\tl_new:N \l__chemmacros_State_delta_tl -\tl_set:Nn \l__chemmacros_State_delta_tl { \Delta } -\tl_new:N \l__chemmacros_State_exponent_tl -\tl_set:Nn \l__chemmacros_State_exponent_tl { \standardstate } +\tl_new:N \l__chemmacros_State_delta_tl +\tl_set:Nn \l__chemmacros_State_delta_tl { \Delta } +\tl_new:N \l__chemmacros_State_exponent_tl +\tl_set:Nn \l__chemmacros_State_exponent_tl { \standardstate } -\bool_new:N \l__chemmacros_State_delta_bool +\bool_new:N \l__chemmacros_State_delta_bool \bool_set_true:N \l__chemmacros_State_delta_bool -\bool_new:N \l__chemmacros_State_subscript_left_bool +\bool_new:N \l__chemmacros_State_subscript_left_bool \bool_set_true:N \l__chemmacros_State_subscript_left_bool -\bool_new:N \l__chemmacros_State_exponent_bool +\bool_new:N \l__chemmacros_State_exponent_bool \bool_set_true:N \l__chemmacros_State_exponent_bool \keys_define:nn { chemmacros / state } @@ -2752,7 +2658,7 @@ % old syntax (v2.0): % \State[<keyval>]{<Symbol>}{<subscript>} % {<subscript>} is an optional argument! -\cs_new:Npn \chemmacros_state:nnn #1#2#3 +\cs_new_protected:Npn \chemmacros_state:nnn #1#2#3 { \group_begin: \IfNoValueF { #1 } @@ -2788,7 +2694,7 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- \tl_new:N \l__chemmacros_thermod_subscript_left_tl \tl_new:N \l__chemmacros_thermod_subscript_left_default_tl \tl_new:N \l__chemmacros_thermod_subscript_tl @@ -2829,7 +2735,7 @@ % \DeclareChemState[<keyval>]{<name>}{<symbol>}{<unit>} \bool_if:NF \l__chemmacros_version_one_bool { - \cs_new:Npn \DeclareChemState + \cs_new_protected:Npn \DeclareChemState { \bool_set_false:N \l__chemmacros_renewstate_bool \__chemmacros_setnewstate_reset: @@ -2838,7 +2744,7 @@ { \__chemmacros_setnewstate_aux:nnn } } % \RenewChemState[<keyval>]{<name>}{<symbol>}{<unit>} - \cs_new:Npn \RenewChemState + \cs_new_protected:Npn \RenewChemState { \bool_set_true:N \l__chemmacros_renewstate_bool \__chemmacros_setnewstate_reset: @@ -2846,13 +2752,13 @@ { \__chemmacros_setnewstate:n } { \__chemmacros_setnewstate_aux:nnn } } - \cs_set:Npn \setnewstate + \cs_set_protected:Npn \setnewstate { \chemmacros_msg:nnxx { chemmacros } { command-deprecated } { \setnewstate } { \DeclareChemState } \DeclareChemState } - \cs_set:Npn \renewstate + \cs_set_protected:Npn \renewstate { \chemmacros_msg:nnxx { chemmacros } { command-deprecated } { \renewstate } { \RenewChemState } @@ -2860,7 +2766,7 @@ } } -\cs_new:Npn \__chemmacros_setnewstate_reset: +\cs_new_protected:Npn \__chemmacros_setnewstate_reset: { \tl_set:Nn \l__chemmacros_thermod_subscript_left_default_tl { true } \tl_clear:N \l__chemmacros_thermod_subscript_default_tl @@ -2868,13 +2774,13 @@ \tl_set:Nn \l__chemmacros_thermod_delta_default_tl { \Delta } } -\cs_new:Npn \__chemmacros_setnewstate:n [#1] +\cs_new_protected:Npn \__chemmacros_setnewstate:n [#1] { \keys_set:nn { chemmacros / setnewstate } { #1 } \__chemmacros_setnewstate_aux:nnn } -\cs_new:Npn \__chemmacros_setnewstate_aux:nnn #1#2#3 +\cs_new_protected:Npn \__chemmacros_setnewstate_aux:nnn #1#2#3 { \bool_if:NTF \l__chemmacros_renewstate_bool { @@ -2911,7 +2817,7 @@ \tl_const:cn { l__chemmacros_ #1 _unit_tl } { #3 } - \cs_new:cpn {chemmacros_ #1 _reset: } + \cs_new_protected:cpn {chemmacros_ #1 _reset: } { \tl_set_eq:Nc \l__chemmacros_thermod_subscript_tl @@ -2929,7 +2835,7 @@ \l__chemmacros_thermod_unit_tl { l__chemmacros_ #1 _unit_tl } } - \cs_new:cpn { #1 } + \cs_new_protected:cpn { #1 } { \use:c {chemmacros_ #1 _reset: } \peek_meaning:NTF [ @@ -2940,19 +2846,19 @@ { \tl_use:c { #1 _aux_iii:n } } } } - \cs_new:cpn { #1 _aux_i:n } [##1] + \cs_new_protected:cpn { #1 _aux_i:n } [##1] { \keys_set:nn { chemmacros / State } { ##1 } \peek_meaning:NTF ( { \tl_use:c { #1 _aux_ii:n } } { \tl_use:c { #1 _aux_iii:n } } } - \cs_new:cpn { #1 _aux_ii:n } (##1) + \cs_new_protected:cpn { #1 _aux_ii:n } (##1) { \tl_set:Nn \l__chemmacros_thermod_subscript_tl { ##1 } \tl_use:c { #1 _aux_iii:n } } - \cs_new:cpn { #1 _aux_iii:n } ##1 + \cs_new_protected:cpn { #1 _aux_iii:n } ##1 { \ensuremath { @@ -3000,21 +2906,21 @@ {G} {\kilo\joule\per\mole} } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % Newman projections -\fp_new:N \l__chemmacros_newman_rel_angle_fp -\fp_zero:N \l__chemmacros_newman_rel_angle_fp -\fp_new:N \l__chemmacros_newman_tmp_angle_fp -\fp_new:N \l__chemmacros_newman_abs_angle_fp -\fp_zero:N \l__chemmacros_newman_abs_angle_fp -\fp_new:N \l__chemmacros_newman_scale_fp -\fp_set:Nn \l__chemmacros_newman_scale_fp { 1 } -\fp_new:N \l__chemmacros_newman_x_fp -\fp_new:N \l__chemmacros_newman_y_fp - -\tl_new:N \l__chemmacros_newman_tikz_ring_tl -\tl_new:N \l__chemmacros_newman_tikz_front_tl -\tl_new:N \l__chemmacros_newman_tikz_back_tl +\fp_new:N \l__chemmacros_newman_rel_angle_fp +\fp_zero:N \l__chemmacros_newman_rel_angle_fp +\fp_new:N \l__chemmacros_newman_tmp_angle_fp +\fp_new:N \l__chemmacros_newman_abs_angle_fp +\fp_zero:N \l__chemmacros_newman_abs_angle_fp +\fp_new:N \l__chemmacros_newman_scale_fp +\fp_set:Nn \l__chemmacros_newman_scale_fp { 1 } +\fp_new:N \l__chemmacros_newman_x_fp +\fp_new:N \l__chemmacros_newman_y_fp + +\tl_new:N \l__chemmacros_newman_tikz_ring_tl +\tl_new:N \l__chemmacros_newman_tikz_front_tl +\tl_new:N \l__chemmacros_newman_tikz_back_tl \bool_new:N \l__chemmacros_newman_tikz_back_bool @@ -3050,7 +2956,7 @@ % place atoms: % #1: angle % #2 - #7: atoms -\cs_new:Npn \chemmacros_newman_atoms:nnnnnnn #1#2#3#4#5#6#7 +\cs_new_protected:Npn \chemmacros_newman_atoms:nnnnnnn #1#2#3#4#5#6#7 { \tl_if_blank:nTF { #1 } { @@ -3107,14 +3013,14 @@ % #2: fp variable for y % #3: angle % #4: radius -\cs_new:Npn \chemmacros_polar_to_cartesian:NNnn #1#2#3#4 +\cs_new_protected:Npn \chemmacros_polar_to_cartesian:NNnn #1#2#3#4 { \fp_set:Nn #1 { #4 * cos( #3 / 180 * pi ) }% x \fp_set:Nn #2 { #4 * sin( #3 / 180 * pi ) }% y } % place back nodes -\cs_new:Npn \chemmacros_newman_back_node:nn #1#2 +\cs_new_protected:Npn \chemmacros_newman_back_node:nn #1#2 { \group_begin: \fp_add:Nn \l__chemmacros_newman_rel_angle_fp { #1 } @@ -3155,7 +3061,7 @@ \cs_generate_variant:Nn \chemmacros_newman_back_node:nn { nf } % place front nodes: -\cs_new:Npn \chemmacros_newman_front_node:nn #1#2 +\cs_new_protected:Npn \chemmacros_newman_front_node:nn #1#2 { \chemmacros_polar_to_cartesian:NNnn \l__chemmacros_newman_x_fp @@ -3185,27 +3091,27 @@ } \cs_generate_variant:Nn \chemmacros_newman_front_node:nn { nf } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % \orbital[<keyval>]{<type>} % variables: -\bool_new:N \l__chemmacros_orbital_type_s_bool -\bool_new:N \l__chemmacros_orbital_type_p_bool -\bool_new:N \l__chemmacros_orbital_type_sp_bool -\bool_new:N \l__chemmacros_orbital_type_sptwo_bool -\bool_new:N \l__chemmacros_orbital_type_spthree_bool -\bool_new:N \l__chemmacros_orbital_s_phase_bool +\bool_new:N \l__chemmacros_orbital_type_s_bool +\bool_new:N \l__chemmacros_orbital_type_p_bool +\bool_new:N \l__chemmacros_orbital_type_sp_bool +\bool_new:N \l__chemmacros_orbital_type_sptwo_bool +\bool_new:N \l__chemmacros_orbital_type_spthree_bool +\bool_new:N \l__chemmacros_orbital_s_phase_bool \bool_set_true:N \l__chemmacros_orbital_s_phase_bool -\bool_new:N \l__chemmacros_orbital_p_phase_bool +\bool_new:N \l__chemmacros_orbital_p_phase_bool \bool_set_true:N \l__chemmacros_orbital_p_phase_bool -\bool_new:N \l__chemmacros_orbital_sp_phase_bool +\bool_new:N \l__chemmacros_orbital_sp_phase_bool \bool_set_true:N \l__chemmacros_orbital_sp_phase_bool -\bool_new:N \l__chemmacros_orbital_sptwo_phase_bool +\bool_new:N \l__chemmacros_orbital_sptwo_phase_bool \bool_set_true:N \l__chemmacros_orbital_sptwo_phase_bool -\bool_new:N \l__chemmacros_orbital_spthree_phase_bool +\bool_new:N \l__chemmacros_orbital_spthree_phase_bool \bool_set_true:N \l__chemmacros_orbital_spthree_phase_bool -\bool_new:N \l__chemmacros_orbital_p_half_bool -\bool_new:N \l__chemmacros_orbital_overlay_bool -\bool_new:N \l__chemmacros_orbital_opacity_bool +\bool_new:N \l__chemmacros_orbital_p_half_bool +\bool_new:N \l__chemmacros_orbital_overlay_bool +\bool_new:N \l__chemmacros_orbital_opacity_bool \tl_new:N \l__chemmacros_orbital_s_color_tl \tl_set:Nn \l__chemmacros_orbital_s_color_tl { black } @@ -3260,9 +3166,9 @@ { opacity = { \fp_use:N \l__chemmacros_orbital_opacity_fp } } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % s-orbitals -\cs_new:Npn \__chemmacros_orbital_type_s: +\cs_new_protected:Npn \__chemmacros_orbital_type_s: { \bool_set_true:N \l__chemmacros_orbital_type_s_bool \bool_set_false:N \l__chemmacros_orbital_type_p_bool @@ -3282,7 +3188,7 @@ color .tl_set:N = \l__chemmacros_orbital_s_color_tl } -\cs_new:Npn \__chemmacros_orbital_s_draw:n #1 +\cs_new_protected:Npn \__chemmacros_orbital_s_draw:n #1 { \keys_set:nn { chemmacros / orbital / s } { #1 } \bool_if:NTF \l__chemmacros_orbital_s_phase_bool @@ -3309,9 +3215,9 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % p-orbitals -\cs_new:Npn \__chemmacros_orbital_type_p: +\cs_new_protected:Npn \__chemmacros_orbital_type_p: { \bool_set_false:N \l__chemmacros_orbital_type_s_bool \bool_set_true:N \l__chemmacros_orbital_type_p_bool @@ -3334,7 +3240,7 @@ half .default:n = true } -\cs_new:Npn \__chemmacros_orbital_p_draw:n #1 +\cs_new_protected:Npn \__chemmacros_orbital_p_draw:n #1 { \keys_set:nn { chemmacros / orbital / p } { #1 } \bool_if:NTF \l__chemmacros_orbital_p_phase_bool @@ -3405,9 +3311,9 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % sp-orbitals -\cs_new:Npn \__chemmacros_orbital_type_sp: +\cs_new_protected:Npn \__chemmacros_orbital_type_sp: { \bool_set_false:N \l__chemmacros_orbital_type_s_bool \bool_set_false:N \l__chemmacros_orbital_type_p_bool @@ -3428,7 +3334,7 @@ color .tl_set:N = \l__chemmacros_orbital_sp_color_tl } -\cs_new:Npn \__chemmacros_orbital_sp_draw:n #1 +\cs_new_protected:Npn \__chemmacros_orbital_sp_draw:n #1 { \keys_set:nn { chemmacros / orbital / sp } { #1 } \bool_if:NTF \l__chemmacros_orbital_sp_phase_bool @@ -3496,9 +3402,9 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % sp2-orbitals -\cs_new:Npn \__chemmacros_orbital_type_sptwo: +\cs_new_protected:Npn \__chemmacros_orbital_type_sptwo: { \bool_set_false:N \l__chemmacros_orbital_type_s_bool \bool_set_false:N \l__chemmacros_orbital_type_p_bool @@ -3519,7 +3425,7 @@ color .tl_set:N = \l__chemmacros_orbital_sptwo_color_tl } -\cs_new:Npn \__chemmacros_orbital_sptwo_draw:n #1 +\cs_new_protected:Npn \__chemmacros_orbital_sptwo_draw:n #1 { \keys_set:nn { chemmacros / orbital / sp2 } { #1 } \bool_if:NTF \l__chemmacros_orbital_sptwo_phase_bool @@ -3587,9 +3493,9 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % sp3-orbitals -\cs_new:Npn \__chemmacros_orbital_type_spthree: +\cs_new_protected:Npn \__chemmacros_orbital_type_spthree: { \bool_set_false:N \l__chemmacros_orbital_type_s_bool \bool_set_false:N \l__chemmacros_orbital_type_p_bool @@ -3610,7 +3516,7 @@ color .tl_set:N = \l__chemmacros_orbital_spthree_color_tl } -\cs_new:Npn \__chemmacros_orbital_spthree_draw:n #1 +\cs_new_protected:Npn \__chemmacros_orbital_spthree_draw:n #1 { \keys_set:nn { chemmacros / orbital / sp3 } { #1 } \bool_if:NTF \l__chemmacros_orbital_spthree_phase_bool @@ -3678,7 +3584,7 @@ } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % main command \keys_define:nn { chemmacros / orbital } { @@ -3702,7 +3608,7 @@ sp3 .code:n = { \__chemmacros_orbital_type_spthree: } } -\cs_new:Npn \chemmacros_orbital:n #1 +\cs_new_protected:Npn \chemmacros_orbital:n #1 { \bool_if:NT \l__chemmacros_orbital_type_s_bool { \__chemmacros_orbital_s_draw:n { #1 } } @@ -3726,7 +3632,7 @@ \group_end: } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % arrow tips for electron movement \dim_new:N \l__chemmacros_el_length_dim @@ -3815,22 +3721,30 @@ \pgfusepathqfillstroke } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % setup \NewDocumentCommand \chemsetup { o m } { \IfNoValueTF { #1 } { \keys_set:nn { chemmacros } { #2 } } - { \keys_set:nn { chemmacros / #1 } { #2 } } + { + \bool_if:NTF \l__chemmacros_version_four_bool + { + \tl_if_eq:nnTF { #1 } { chemformula } + { \setchemformula { #2 } } + { \keys_set:nn { chemmacros / #1 } { #2 } } + } + { \keys_set:nn { chemmacros / #1 } { #2 } } + } \ignorespaces } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % load old definitions: \bool_if:NT \l__chemmacros_version_one_bool { \file_input:n { chemmacros-version1 . cfg } } -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- % hyperref support % ?? unsure about adding IUPAC commands \AfterPackage* { hyperref } @@ -3839,15 +3753,72 @@ { \cs_set:Npn \- { - }% myabe not a good idea... \cs_set:Npn \| { } - \cs_set:Npn \iupac #1 { #1 } \cs_set:Npn \pH { pH } \cs_set:Npn \pOH { pOH } - } + \cs_set:Npn \iupac #1 { #1 } + % \cs_set:Npn \a { alpha } + % \cs_set:Npn \g { gamma } + % \cs_set:Npn \d { delta } + % \cs_set:Npn \m { mu } + % \cs_set:Npn \n { eta } + % \cs_set:Npn \w { omega } + % \cs_set:Npn \N { N } + % \cs_set:Npn \O { O } + % \cs_set:Npn \Sf { S } + % \cs_set:Npn \P { P } + % \cs_set:Npn \R { (R) } + \cs_set:Npn \cip #1 { (#1) } + % \cs_set:Npn \E { (E) } + % \cs_set:Npn \Z { (Z) } + \cs_set:Npn \cis { cis } + \cs_set:Npn \trans { trans } + \cs_set:Npn \tert { tert } + % \cs_set:Npn \D { D } + \cs_set:Npn \ortho { o } + \cs_set:Npn \meta { m } + \cs_set:Npn \para { p } + \cs_set:Npn \syn { syn } + \cs_set:Npn \anti { anti } + } + } + +% -------------------------------------------------------------------------- +% language support -- provided through `translations' +% equilibrium constants: +\DeclareTranslationFallback{K-acid}{A} +\DeclareTranslationFallback{K-base}{B} +\DeclareTranslationFallback{K-water}{W} +\DeclareTranslation{German}{K-acid}{S} +% phases: +\DeclareTranslation{German}{phase-sld}{ f } +\DeclareTranslation{German}{phase-lqd}{ f{}l } +% list of reactions: +\DeclareTranslationFallback {list-of-reactions} { List ~ of ~ reactions } +\DeclareTranslation{English} {list-of-reactions} { List ~ of ~ reactions } +\DeclareTranslation{German} {list-of-reactions} { Reaktionsverzeichnis } +\DeclareTranslation{Italian} {list-of-reactions} { Elenco ~ delle ~ reazioni } +\DeclareTranslation{French} {list-of-reactions} { Table ~ des ~ r\'eactions } +% +\DeclareTranslationFallback {lor-reaction} { Reaction ~ } +\DeclareTranslation{English} {lor-reaction} { Reaction ~ } +\DeclareTranslation{German} {lor-reaction} { Reaktion ~ } +\DeclareTranslation{Italian} {lor-reaction} { Reazione ~ } +\DeclareTranslation{French} {lor-reaction} { R\'eaction ~ } + +\tl_set:Nn \l__chemmacros_reaction_lorname_tl + { + \chemmacros_translate:nn + {lor-reaction} { Reaction ~ } + } +\tl_set:Nn \reactionlistname + { + \chemmacros_translate:nn + {list-of-reactions} { List ~ of ~ reactions } } \tex_endinput:D -% --------------------------------------------------------------------------- % +% -------------------------------------------------------------------------- Version history 2011/05/15 - version 1.0 - CTAN release 2011/06/22 - version 1.1 - "LaTeXified" whole package for safer usage @@ -4005,11 +3976,39 @@ Version history 2013/04/19 - version 3.6b - chemformula: new key `arrow-min-length' - bug fix: stoichiometric fractions correctly displayed - changed appearance of \cip to use upright parentheses +2013/07/06 - version 4.0 - `chemformula' doesn't automatically load + `chemmacros' any more but can be used stand-alone + - option `bpchem' has been dropped + - improved detection of bold font series + - changed wrongly used \mbox in definition of \Ka, + \Kb and \Kw into \ensuremath + - adapt \mch and \pch to match `chemformula's + charges + - dropped option `method=mhchem' + - support for `kpfonts' and `newtxmath' upright + greek letters added, greek alphabet complete both + for uppercase and lowercase; this is handled by + the new package in the family: `chemgreek' + - \OX and \redox now work in `amsmath's environment + by ignoring the measuring phase + - language management with the halp of the + `translations' package => + recognize document language automatically and use + it if it a) is known to `chemmacros' and b) has + not been overwritten by the `language' option; + this also made minor changes to `ghsystem' + necessary; additionally this lead to changes in + the way phases are defined + - status of \Dfi and \Lfi changed from `deprecated' + to `dropped' + - new option `charges/partial-format' + - fixed wrongly written contents to the lor when + used together with `hyperref' + - new option `reaction/list-heading' + - option `charges/append' deprecated + % --------------------------------------------------------------------------- % -% TODO: -- ox-option xfrac vs math? -- drop option `bpchem' +% TODO: fuer version 4 - add d-orbitals -- add kpfonts to `greek' option so \Chemalpha and kin use \alphaup ... of kpfonts - package
\ No newline at end of file +- make electron movement arrow tips (`el', `left el' and `right el') public diff --git a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty index 90e387ff1d8..5f552b8e2a0 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty +++ b/Master/texmf-dist/tex/latex/chemmacros/ghsystem.sty @@ -26,13 +26,29 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{ chemmacros } +\RequirePackage{ expl3, xparse, l3keys2e } +\def\ghsystem@version{4.0} +\def\ghsystem@date{2013/07/06} \ProvidesExplPackage {ghsystem} - {\chemmacros@date} - {\chemmacros@version} + {\ghsystem@date} + {\ghsystem@version} {globally harmonised system} +% -------------------------------------------------------------------------- +% check expl3 version: +\@ifpackagelater { expl3 } { 2012/11/21 } + { } + { + \PackageError { ghsystem } { Support~package~expl3~too~old } + { + You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~ + 'l3packages'.\MessageBreak + Loading~ghsystem~will~abort! + } + \tex_endinput:D + } + % --------------------------------------------------------------------------- % % error and warning messages: \msg_set:nnnn { ghsystem } { explicit } @@ -62,6 +78,45 @@ sure~to~load~it~in~your~preamble. } +\cs_new_protected:Npn \ghsystem_msg:nnxx #1#2#3#4 + { + \bool_if:NTF \l__ghsystem_strict_bool + { \msg_error:nnxx { #1 } { #2 } { #3 } { #4 } } + { \msg_warning:nnxx { #1 } { #2 } { #3 } { #4 } } + } + +% -------------------------------------------------------------------------- +% package options: +\bool_new:N \l__ghsystem_strict_bool +\keys_define:nn { chemmacros / ghsystem } + { + strict .bool_set:N = \l__ghsystem_strict_bool , + strict .default:n = true , + language .code:n = \ghsystem_load_language:n { #1 } + } + +\AtBeginDocument + { + \@ifpackageloaded{ chemmacros } + { + \bool_if:NT \l_chemmacros_strict_bool + { \bool_set_true:N \l__ghsystem_strict_bool } + } + { + \cs_new:Npn \iupac #1 + { + \group_begin: + \cs_set_eq:NN \| \scan_stop: + #1 + \group_end: + } + } + } + +% --------------------------------------------------------------------------- % +% variants of kernel functions: +\cs_generate_variant:Nn \file_if_exist:nTF { x } + % --------------------------------------------------------------------------- % % scratch variables \tl_new:N \l__ghsystem_tmpa_tl @@ -69,13 +124,8 @@ \int_new:N \l__ghsystem_tmpa_int \int_new:N \l__ghsystem_tmpb_int -% --------------------------------------------------------------------------- % -% gobble options -\DeclareOption* { } -\ProcessOptions \scan_stop: - % load required packages: -\RequirePackage{ graphicx , tabu , longtable , ifpdf } +\RequirePackage{ translations , siunitx , graphicx , longtable , ifpdf } % --------------------------------------------------------------------------- % % define variables: @@ -126,7 +176,10 @@ \tl_new:N \l__ghsystem_table_caption_short_tl \tl_new:N \l__ghsystem_table_label_tl \tl_set:Nn \l__ghsystem_table_label_tl { tab : ghs-hp-statements } +\tl_new:N \l__ghsystem_list_all_column_format_tl +\dim_new:N \l__ghsystem_list_all_column_width_dim +\dim_set:Nn \l__ghsystem_list_all_column_width_dim { .7\linewidth } \dim_new:N \l__ghsystem_table_line_sep_dim \dim_set:Nn \l__ghsystem_table_line_sep_dim { 3pt } @@ -142,46 +195,63 @@ \bool_new:N \l__ghsystem_language_file_loaded_bool \bool_new:N \l__ghsystem_language_directory_bool -\file_if_exist:nTF { language / ghsystem_english_def } - { \bool_set_true:N \l__ghsystem_language_directory_bool } - { \bool_set_false:N \l__ghsystem_language_directory_bool } +% load the language file -- it needs expl3 namespace but shouldn't care about +% what catcode regime was before and simply restore it -\bool_if:NTF \l__ghsystem_language_directory_bool +\cs_new:Npn \__ghsystem_namespace_restore: {} + +\cs_new_protected:Npn \__ghsystem_expl_namespace: { - \prop_map_inline:Nn \l__chemmacros_language_prop - { - \bool_if:cT { l__chemmacros_#1_bool } - { - \file_if_exist:nTF { language / ghsystem_#2.def } - { - \bool_set_true:N \l__ghsystem_language_file_loaded_bool - \input { language / ghsystem_#2.def } \ExplSyntaxOn - } - { \input { language / ghsystem_english.def } \ExplSyntaxOn } - } - } + \group_begin: + \cs_gset_protected:Npx \__ghsystem_namespace_restore: + { + \char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } } + \char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } } + \char_set_catcode:nn { 34 } { \char_value_catcode:n { 34 } } + \char_set_catcode:nn { 38 } { \char_value_catcode:n { 38 } } + \char_set_catcode:nn { 58 } { \char_value_catcode:n { 58 } } + \char_set_catcode:nn { 94 } { \char_value_catcode:n { 94 } } + \char_set_catcode:nn { 95 } { \char_value_catcode:n { 95 } } + \char_set_catcode:nn { 124 } { \char_value_catcode:n { 124 } } + \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } } + \tex_endlinechar:D = \tex_the:D \tex_endlinechar:D \scan_stop: + } + \group_end: + \ExplSyntaxOn + } + +\cs_new:Npn \ghsystem_load_language_file:n #1 + { + \__ghsystem_expl_namespace: + \input ghsystem_#1.def \scan_stop: + \__ghsystem_namespace_restore: } + +\cs_new_protected:Npn \ghsystem_load_language:n #1 { - \prop_map_inline:Nn \l__chemmacros_language_prop + \file_if_exist:xTF { ghsystem_ #1 .def } { - \bool_if:cT { l__chemmacros_#1_bool } - { - \file_if_exist:nTF { ghsystem_#2.def } - { - \bool_set_true:N \l__ghsystem_language_file_loaded_bool - \input { ghsystem_#2.def } \ExplSyntaxOn - } - { \input { ghsystem_english.def } \ExplSyntaxOn } - } + \bool_set_true:N \l__ghsystem_language_file_loaded_bool + \ghsystem_load_language_file:n { #1 } } + { \ghsystem_load_language_file:n { english } } } +\cs_generate_variant:Nn \ghsystem_load_language:n { V } -\bool_if:NF \l__ghsystem_language_file_loaded_bool - { - \bool_if:NTF \l__ghsystem_language_directory_bool - { \input { language / ghsystem_english.def } \ExplSyntaxOn } - { \input { ghsystem_english.def } \ExplSyntaxOn } - } +\NewDocumentCommand \loadghsystemlanguage { m } + { \ghsystem_load_language:n { #1 } } + +\AtBeginDocument{ + \bool_if:NF \l__ghsystem_language_file_loaded_bool + { + \cs_if_exist:NTF \l_chemmacros_language_tl + { \ghsystem_load_language:V \l_chemmacros_language_tl } + { + \ghsystem_load_language:n + { \@trnslt@language{\@trnslt@current@language} } + } + } +} \cs_new_nopar:Nn \ghsystem_booktabs:n { @@ -193,12 +263,6 @@ % define options: \keys_define:nn { chemmacros / ghsystem } { - % general options: - language .code:n = - \bool_set_true:c { l__ghsystem_#1_bool } - \bool_if:NTF \l__ghsystem_language_directory_bool - { \input { language / ghsystem_#1.def } } - { \input { ghsystem_#1.def } } , % \ghs options: hide .bool_set:N = \l__ghsystem_hide_statement_bool , @@ -289,10 +353,16 @@ \tl_clear:N \l__ghsystem_table_top_head_rule_tl \tl_clear:N \l__ghsystem_table_foot_rule_tl \tl_clear:N \l__ghsystem_table_last_foot_rule_tl , - table-caption .tl_set:N = \l__ghsystem_table_caption_tl , + table-caption .tl_set:N = + \l__ghsystem_table_caption_tl , table-caption-short .tl_set:N = \l__ghsystem_table_caption_short_tl , - table-label .tl_set:N = \l__ghsystem_table_label_tl + table-label .tl_set:N = + \l__ghsystem_table_label_tl , + table-column-format .tl_set:N = + \l__ghsystem_list_all_column_format_tl , + table-column-width .dim_set:N = + \l__ghsystem_list_all_column_width_dim } % --------------------------------------------------------------------------- % @@ -318,7 +388,7 @@ \bool_if:NF \l__ghsystem_hide_statement_bool { \tl_use:N \l__ghsystem_tmpb_tl } } - { \chemmacros_msg:nnxx { ghsystem } { statements } { #1 } { #2 } } + { \ghsystem_msg:nnxx { ghsystem } { statements } { #1 } { #2 } } } \cs_new_protected:Nn \__ghsystem_get_type:nN @@ -400,8 +470,13 @@ \int_zero:N \l__ghsystem_tmpa_int \int_zero:N \l__ghsystem_tmpb_int \prop_map_inline:Nn \l__ghsystem_p_prop { \int_incr:N \l__ghsystem_tmpa_int } - \dim_set_eq:NN \tabulinesep \l__ghsystem_table_line_sep_dim - \begin { longtabu } { X[3]X[7,L] } + \dim_set_eq:NN \extrarowheight \l__ghsystem_table_line_sep_dim + \begin { longtable } + { + l + >{ \l__ghsystem_list_all_column_format_tl } + p{ \l__ghsystem_list_all_column_width_dim } + } \caption [ \l__ghsystem_table_caption_short_tl ] { \l__ghsystem_table_caption_tl @@ -435,7 +510,7 @@ \__ghsystem_read_number:nn { P } { ##1 } & ##2 \int_compare:nNnT { \l__ghsystem_tmpb_int } < { \l__ghsystem_tmpa_int } { \\ } } - \end { longtabu } + \end { longtable } } \cs_new:Nn \__ghsystem_read_number:nn @@ -491,37 +566,49 @@ \cs_new_protected:Npn \ghsystem_pic:n #1 { - \file_if_exist:nTF { pictures / ghsystem_ #1 . \l__ghsystem_picture_type_tl } - { \bool_set_true:N \l__ghsystem_picture_directory_bool } - { \bool_set_false:N \l__ghsystem_picture_directory_bool } - \bool_if:NTF \l__ghsystem_picture_directory_bool - { - \__ghsystem_includegraphics:xn - { - scale = \fp_to_tl:N \l__ghsystem_picture_scale_fp - \l__ghsystem_picture_includegraphics_tl - } - { pictures / ghsystem_ #1 . \l__ghsystem_picture_type_tl } - } + \__ghsystem_includegraphics:xn { - \__ghsystem_includegraphics:xn - { - scale = \fp_to_tl:N \l__ghsystem_picture_scale_fp - \l__ghsystem_picture_includegraphics_tl - } - { ghsystem_ #1 . \l__ghsystem_picture_type_tl } + scale = \fp_to_tl:N \l__ghsystem_picture_scale_fp + \exp_not:V \l__ghsystem_picture_includegraphics_tl } + { ghsystem_ #1 . \l__ghsystem_picture_type_tl } } \cs_new:Nn \__ghsystem_includegraphics:nn { \includegraphics[#1]{#2} } \cs_generate_variant:Nn \__ghsystem_includegraphics:nn { xn } +% -------------------------------------------------------------------------- +% options and setup +\ProcessKeysOptions{ chemmacros / ghsystem } + +\cs_new_protected:Npn \ghsystem_setup:n #1 + { \keys_set:nn { chemmacros / ghsystem } { #1 } } + +\NewDocumentCommand \ghssetup { m } + { \ghsystem_setup:n { #1 } } + \tex_endinput:D %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VERSION HISTORY -see the chemmacros.sty file +2012/01/30 - version 3.0a - renamed ghs => ghsystem to make the names unique + (following a request by Karl Berry for TeXlive) +2012/02/05 - version 3.0c - renamed pictogram files (following a request by + Karl Berry for TeXlive) +2012/05/13 - version 3.3a - Italian translations of the H, EUH and P statements +2012/05/18 - version 3.3b - compatibility with MiKTeX +2012/05/18 - version 3.3c - fix in the `ghsystem/language' option +2012/07/24 - version 3.3d - additional picture file type `pdf' +2013/02/19 - version 3.5a - bug fix: `ghsystem' recognizes language again +2013/07/06 - version 4.0 - dropped requirement of `tabu' package. + - new options `table-column-width' and + `table-column-format' + - adapted to changed language setting mechanism in + `chemmacros' + - new command: \loadghsystemlanguage + - the package can be used independently from + `chemmacros' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % TODO: -- add option to switch between `longtable` and `supertabular` for \ghslistall ?
\ No newline at end of file +- add option to switch between `longtable` and `supertabular` for \ghslistall ? diff --git a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def index e4324bc4c71..4dc71bee897 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def +++ b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_english.def @@ -27,7 +27,6 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ExplSyntaxOn % ENGLISH DEFINITIONS \prop_clear:N \l__ghsystem_h_prop \prop_clear:N \l__ghsystem_euh_prop @@ -45,7 +44,13 @@ { \bool_if:NT \l__ghsystem_fill_in_bool { - \c_space_tl \textit{\textless state~route~of~ex\-po\-sure~if~it~is~ con\-clu\-sive\-ly~pro\-ven~that~no~other~routes~of~ex\-po\-sure~cause~the~ha\-zard \textgreater} + \c_space_tl + \textit{ + \textless state~ route~ of~ exposure~ if~ it~ is~ + conclusively~ proven~ that~ no~ other~ routes~ of~ + exposure~ cause~ the~ hazard + \textgreater + } } } @@ -54,7 +59,10 @@ { \bool_if:NT \l__ghsystem_fill_in_bool { - \c_space_tl \textit{\textless state~spe\-ci\-fic~effect~if~known \textgreater} + \c_space_tl + \textit{ + \textless state~ specific~ effect~ if~ known \textgreater + } } } @@ -63,7 +71,10 @@ { \bool_if:nT { \l__ghsystem_fill_in_bool && !\l__ghsystem_organs_bool } { - \c_space_tl \textit{\textless or~state~all~or\-gans~affec\-ted,~if~known \textgreater} + \c_space_tl + \textit{ + \textless or~ state~ all~ organs~ affected,~ if~ known \textgreater + } } } @@ -72,272 +83,696 @@ { \bool_if:NF \l__ghsystem_substance_bool { - \c_space_tl \textit{\textless name~of~sen\-si\-ti\-sing~sub\-stance \textgreater} + \c_space_tl + \textit{ + \textless name~ of~ sensitising~ substance \textgreater + } } } % HAZARD STATEMENTS (Annex 3) % 1. Hazard Statements % 1.1 Physical Hazards -\prop_put:Nnn \l__ghsystem_h_prop { 200 } { Un\-stable~ex\-plo\-sives. } -\prop_put:Nnn \l__ghsystem_h_prop { 201 } { Ex\-plo\-sive;~mass~ex\-plo\-sion~ha\-zard. } -\prop_put:Nnn \l__ghsystem_h_prop { 202 } { Ex\-plo\-sive,~se\-vere~pro\-jec\-tion~ha\-zard. } -\prop_put:Nnn \l__ghsystem_h_prop { 203 } { Ex\-plo\-sive;~fire,~blast~or~pro\-jec\-tion~ha\-zard. } -\prop_put:Nnn \l__ghsystem_h_prop { 204 } { Fire~or~pro\-jec\-tion~ha\-zard. } -\prop_put:Nnn \l__ghsystem_h_prop { 205 } { May~mass~ex\-plode~in~fire. } -\prop_put:Nnn \l__ghsystem_h_prop { 220 } { Ex\-treme\-ly~flammable~gas. } -\prop_put:Nnn \l__ghsystem_h_prop { 221 } { Flammable~gas. } -\prop_put:Nnn \l__ghsystem_h_prop { 222 } { Ex\-treme\-ly~flammable~aero\-sol. } -\prop_put:Nnn \l__ghsystem_h_prop { 223 } { Flammable~aero\-sol. } -\prop_put:Nnn \l__ghsystem_h_prop { 224 } { Ex\-treme\-ly~flammable~li\-quid~and~va\-pour. } -\prop_put:Nnn \l__ghsystem_h_prop { 225 } { High\-ly~flammable~liquid~and~va\-pour. } -\prop_put:Nnn \l__ghsystem_h_prop { 226 } { Flammable~li\-quid~and~va\-pour. } -\prop_put:Nnn \l__ghsystem_h_prop { 228 } { Flammable~so\-lid. } -\prop_put:Nnn \l__ghsystem_h_prop { 240 } { Heating~may~cause~an~ex\-plo\-sion. } -\prop_put:Nnn \l__ghsystem_h_prop { 241 } { Heating~may~cause~a~fire~or~ex\-plo\-sion. } -\prop_put:Nnn \l__ghsystem_h_prop { 242 } { Heating~may~cause~a~fire. } -\prop_put:Nnn \l__ghsystem_h_prop { 250 } { Catches~fire~spon\-ta\-ne\-ous\-ly~if~ex\-po\-sed~to~air. } -\prop_put:Nnn \l__ghsystem_h_prop { 251 } { Self-heating : ~may~catch~fire. } -\prop_put:Nnn \l__ghsystem_h_prop { 252 } { Self-heating~in~large~quan\-ti\-ties;~may~catch~fire. } -\prop_put:Nnn \l__ghsystem_h_prop { 260 } { In~con\-tact~with~wa\-ter~re\-leases~flammable~ga\-ses~which~may~ig\-nite~spon\-ta\-ne\-ous\-ly. } -\prop_put:Nnn \l__ghsystem_h_prop { 261 } { In~con\-tact~with~wa\-ter~re\-leases~flammable~ga\-ses. } -\prop_put:Nnn \l__ghsystem_h_prop { 270 } { May~cause~or~in\-ten\-si\-fy~fire;~oxi\-di\-ser. } -\prop_put:Nnn \l__ghsystem_h_prop { 271 } { May~cause~fire~or~ex\-plo\-sion;~strong~oxi\-di\-ser. } -\prop_put:Nnn \l__ghsystem_h_prop { 272 } { May~in\-ten\-si\-fy~fire;~oxi\-di\-ser. } -\prop_put:Nnn \l__ghsystem_h_prop { 280 } { Con\-tains~gas~un\-der~pressure;~may~ex\-plode~if~heated. } -\prop_put:Nnn \l__ghsystem_h_prop { 281 } { Con\-tains~re\-fri\-ge\-ra\-ted~gas;~may~cause~cryo\-ge\-nic~burns~or~in\-ju\-ry. } -\prop_put:Nnn \l__ghsystem_h_prop { 290 } { May~be~corro\-sive~to~me\-tals. } +\prop_put:Nnn \l__ghsystem_h_prop { 200 } + { Unstable~ explosives. } +\prop_put:Nnn \l__ghsystem_h_prop { 201 } + { Explosive;~ mass~ explosion~ hazard. } +\prop_put:Nnn \l__ghsystem_h_prop { 202 } + { Explosive,~ severe~ projection~hazard. } +\prop_put:Nnn \l__ghsystem_h_prop { 203 } + { Explosive;~ fire,~ blast~ or~ projection~hazard. } +\prop_put:Nnn \l__ghsystem_h_prop { 204 } + { Fire~ or~ projection~ hazard. } +\prop_put:Nnn \l__ghsystem_h_prop { 205 } + { May~ mass~ explode~ in~ fire. } +\prop_put:Nnn \l__ghsystem_h_prop { 220 } + { Extremely~ flammable~ gas. } +\prop_put:Nnn \l__ghsystem_h_prop { 221 } + { Flammable~ gas. } +\prop_put:Nnn \l__ghsystem_h_prop { 222 } + { Extremely~ flammable~ aerosol. } +\prop_put:Nnn \l__ghsystem_h_prop { 223 } + { Flammable~ aerosol. } +\prop_put:Nnn \l__ghsystem_h_prop { 224 } + { Extremely~ flammable~ liquid~ and~ vapour. } +\prop_put:Nnn \l__ghsystem_h_prop { 225 } + { Highly~ flammable~ liquid~ and~ vapour. } +\prop_put:Nnn \l__ghsystem_h_prop { 226 } + { Flammable~ liquid~ and~ vapour. } +\prop_put:Nnn \l__ghsystem_h_prop { 228 } + { Flammable~ solid. } +\prop_put:Nnn \l__ghsystem_h_prop { 240 } + { Heating~ may~ cause~ an~ explosion. } +\prop_put:Nnn \l__ghsystem_h_prop { 241 } + { Heating~ may~ cause~ a~ fire~ or~ explosion. } +\prop_put:Nnn \l__ghsystem_h_prop { 242 } + { Heating~ may~ cause~ a~ fire. } +\prop_put:Nnn \l__ghsystem_h_prop { 250 } + { Catches~ fire~ spontaneously~ if~ exposed~ to~ air. } +\prop_put:Nnn \l__ghsystem_h_prop { 251 } + { Self-heating:~ may~ catch~ fire. } +\prop_put:Nnn \l__ghsystem_h_prop { 252 } + { Self-heating~ in~ large~ quantities;~ may~ catch~ fire. } +\prop_put:Nnn \l__ghsystem_h_prop { 260 } + { + In~ contact~ with~ water~ releases~ flammable~ gases~ which~ may~ ignite~ + spontaneously. + } +\prop_put:Nnn \l__ghsystem_h_prop { 261 } + { In~ contact~ with~ water~ releases~ flammable~ gases. } +\prop_put:Nnn \l__ghsystem_h_prop { 270 } + { May~ cause~ or~ intensify~ fire;~ oxidiser. } +\prop_put:Nnn \l__ghsystem_h_prop { 271 } + { May~ cause~ fire~ or~ explosion;~ strong~ oxidiser. } +\prop_put:Nnn \l__ghsystem_h_prop { 272 } + { May~ intensify~ fire;~ oxidiser. } +\prop_put:Nnn \l__ghsystem_h_prop { 280 } + { Contains~ gas~ under~ pressure;~ may~ explode~ if~ heated. } +\prop_put:Nnn \l__ghsystem_h_prop { 281 } + { Contains~ refrigerated~ gas;~ may~ cause~ cryogenic~ burns~ or~ injury. } +\prop_put:Nnn \l__ghsystem_h_prop { 290 } + { May~ be~ corrosive~ to~ metals. } % 1.2 Health Hazards -\prop_put:Nnn \l__ghsystem_h_prop { 300 } { Fa\-tal~if~swallowed. } -\prop_put:Nnn \l__ghsystem_h_prop { 301 } { To\-xic~if~swallowed. } -\prop_put:Nnn \l__ghsystem_h_prop { 302 } { Harm\-ful~if~swallowed. } -\prop_put:Nnn \l__ghsystem_h_prop { 304 } { May~be~fa\-tal~if~swallowed~and~en\-ters~air\-ways. } -\prop_put:Nnn \l__ghsystem_h_prop { 310 } { Fa\-tal~in~con\-tact~with~skin. } -\prop_put:Nnn \l__ghsystem_h_prop { 311 } { To\-xic~in~con\-tact~with~skin. } -\prop_put:Nnn \l__ghsystem_h_prop { 312 } { Harm\-ful~in~con\-tact~with~skin. } -\prop_put:Nnn \l__ghsystem_h_prop { 314 } { Cau\-ses~se\-vere~skin~burns~and~eye~da\-mage. } -\prop_put:Nnn \l__ghsystem_h_prop { 315 } { Cau\-ses~skin~ir\-ri\-ta\-tion. } -\prop_put:Nnn \l__ghsystem_h_prop { 317 } { May~cause~an~aller\-gic~skin~reac\-tion. } -\prop_put:Nnn \l__ghsystem_h_prop { 318 } { Causes~se\-rious~eye~da\-mage. } -\prop_put:Nnn \l__ghsystem_h_prop { 319 } { Causes~se\-rious~eye~irri\-ta\-tion. } -\prop_put:Nnn \l__ghsystem_h_prop { 330 } { Fa\-tal~if~in\-haled. } -\prop_put:Nnn \l__ghsystem_h_prop { 331 } { To\-xic~if~in\-haled. } -\prop_put:Nnn \l__ghsystem_h_prop { 332 } { Harm\-ful~if~in\-haled. } -\prop_put:Nnn \l__ghsystem_h_prop { 334 } { May~cause~aller\-gy~or~asth\-ma~symp\-toms~or\-breathing~diffi\-cul\-ties~if~in\-haled. } -\prop_put:Nnn \l__ghsystem_h_prop { 335 } { May~cause~res\-pi\-ra\-to\-ry~irri\-ta\-tion. } -\prop_put:Nnn \l__ghsystem_h_prop { 336 } { May~cause~drowsi\-ness~or~dizzi\-ness. } -\prop_put:Nnn \l__ghsystem_h_prop { 340 } { May~cause~ge\-ne\-tic~de\-fects. \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 341 } { Sus\-pec\-ted~of~causing~ge\-ne\-tic~de\-fects. \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 350 } { May~cause~can\-cer. \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 351 } { Sus\-pec\-ted~of~causing~cancer. \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 360 } { May~da\-mage~fer\-ti\-li\-ty~or~the~un\-born~child. \ghsystem_effect: \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 361 } { Sus\-pec\-ted~of~da\-ma\-ging~fer\-ti\-li\-ty~or~the~un\-born~child. \ghsystem_effect: \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 362 } { May~cause~harm~to~breast-fed~child\-ren. } -\prop_put:Nnn \l__ghsystem_h_prop { 370 } { Causes~da\-mage \bool_if:NF \l__ghsystem_organs_bool { ~to~or\-gans } \ghsystem_organs: . \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 371 } { May~cause~da\-mage \bool_if:NF \l__ghsystem_organs_bool { ~to~or\-gans } \ghsystem_organs: . \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 372 } { Causes~da\-mage \bool_if:NF \l__ghsystem_organs_bool { ~to~or\-gans } \ghsystem_organs:\ through~pro\-longed~or~re\-pea\-ted~ex\-po\-sure. \ghsystem_exposure: } -\prop_put:Nnn \l__ghsystem_h_prop { 373 } { May~cause~da\-mage \bool_if:NF \l__ghsystem_organs_bool { ~to~or\-gans } \ghsystem_organs:\ through~pro\-longed~or~re\-pea\-ted~ex\-po\-sure. \ghsystem_exposure: } +\prop_put:Nnn \l__ghsystem_h_prop { 300 } + { Fatal~ if~ swallowed. } +\prop_put:Nnn \l__ghsystem_h_prop { 301 } + { Toxic~ if~ swallowed. } +\prop_put:Nnn \l__ghsystem_h_prop { 302 } + { Harmful~ if~ swallowed. } +\prop_put:Nnn \l__ghsystem_h_prop { 304 } + { May~ be~ fatal~ if~ swallowed~ and~ enters~ airways. } +\prop_put:Nnn \l__ghsystem_h_prop { 310 } + { Fatal~ in~ contact~ with~ skin. } +\prop_put:Nnn \l__ghsystem_h_prop { 311 } + { Toxic~ in~ contact~ with~ skin. } +\prop_put:Nnn \l__ghsystem_h_prop { 312 } + { Harmful~ in~ contact~ with~ skin. } +\prop_put:Nnn \l__ghsystem_h_prop { 314 } + { Causes~ severe~ skin~ burns~ and~ eye~ damage. } +\prop_put:Nnn \l__ghsystem_h_prop { 315 } + { Causes~ skin~ irritation. } +\prop_put:Nnn \l__ghsystem_h_prop { 317 } + { May~ cause~ an~ allergic~ skin~ reaction. } +\prop_put:Nnn \l__ghsystem_h_prop { 318 } + { Causes~ serious~ eye~ damage. } +\prop_put:Nnn \l__ghsystem_h_prop { 319 } + { Causes~ serious~ eye~ irritation. } +\prop_put:Nnn \l__ghsystem_h_prop { 330 } + { Fatal~ if~ inhaled. } +\prop_put:Nnn \l__ghsystem_h_prop { 331 } + { Toxic~ if~ inhaled. } +\prop_put:Nnn \l__ghsystem_h_prop { 332 } + { Harmful~ if~ inhaled. } +\prop_put:Nnn \l__ghsystem_h_prop { 334 } + { + May~ cause~ allergy~ or~ asthma~ symptoms~ orbreathing~ difficulties~ if~ + inhaled. + } +\prop_put:Nnn \l__ghsystem_h_prop { 335 } + { May~ cause~ respiratory~ irritation. } +\prop_put:Nnn \l__ghsystem_h_prop { 336 } + { May~ cause~ drowsiness~ or~ dizziness. } +\prop_put:Nnn \l__ghsystem_h_prop { 340 } + { May~ cause~ genetic~ defects. \ghsystem_exposure: } +\prop_put:Nnn \l__ghsystem_h_prop { 341 } + { Suspected~ of~ causing~ genetic~ defects. \ghsystem_exposure: } +\prop_put:Nnn \l__ghsystem_h_prop { 350 } + { May~ cause~ cancer. \ghsystem_exposure: } +\prop_put:Nnn \l__ghsystem_h_prop { 351 } + { Suspected~ of~ causing~ cancer. \ghsystem_exposure: } +\prop_put:Nnn \l__ghsystem_h_prop { 360 } + { + May~ damage~ fertility~ or~ the~ unborn~ child. + \ghsystem_effect: + \ghsystem_exposure: + } +\prop_put:Nnn \l__ghsystem_h_prop { 361 } + { + Suspected~ of~ damaging~ fertility~ or~ the~ unborn~ child. + \ghsystem_effect: + \ghsystem_exposure: + } +\prop_put:Nnn \l__ghsystem_h_prop { 362 } + { May~ cause~ harm~ to~ breast-fed~ children. } +\prop_put:Nnn \l__ghsystem_h_prop { 370 } + { + Causes~ damage + \bool_if:NF \l__ghsystem_organs_bool { ~to~ organs } + \ghsystem_organs: . + \ghsystem_exposure: + } +\prop_put:Nnn \l__ghsystem_h_prop { 371 } + { + May~ cause~ damage + \bool_if:NF \l__ghsystem_organs_bool { ~to~ organs } + \ghsystem_organs: . + \ghsystem_exposure: + } +\prop_put:Nnn \l__ghsystem_h_prop { 372 } + { + Causes~ damage + \bool_if:NF \l__ghsystem_organs_bool { ~to~ organs } + \ghsystem_organs: \c_space_tl + through~ prolonged~ or~ repeated~ exposure. + \ghsystem_exposure: + } +\prop_put:Nnn \l__ghsystem_h_prop { 373 } + { + May~ cause~ damage + \bool_if:NF \l__ghsystem_organs_bool { ~to~ organs } + \ghsystem_organs:\c_space_rl + through~ prolonged~ or~ repeated~ exposure. + \ghsystem_exposure: + } % 1.3 Environmental hazards -\prop_put:Nnn \l__ghsystem_h_prop { 400 } { Ve\-ry~to\-xic~to~aqua\-tic~life. } -\prop_put:Nnn \l__ghsystem_h_prop { 410 } { Ve\-ry~to\-xic~to~aqua\-tic~life~with~long~las\-ting~effects. } -\prop_put:Nnn \l__ghsystem_h_prop { 411 } { To\-xic~to~aqua\-tic~life~with~long~las\-ting~effects. } -\prop_put:Nnn \l__ghsystem_h_prop { 412 } { Harm\-ful~to~aqua\-tic~life~ with~long~las\-ting~effects. } -\prop_put:Nnn \l__ghsystem_h_prop { 413 } { May~cause~long~las\-ting~harm\-ful~effects~to~aqua\-tic~life. } +\prop_put:Nnn \l__ghsystem_h_prop { 400 } + { Very~ toxic~ to~ aquatic~ life. } +\prop_put:Nnn \l__ghsystem_h_prop { 410 } + { Very~ toxic~ to~ aquatic~ life~ with~ long~ lasting~ effects. } +\prop_put:Nnn \l__ghsystem_h_prop { 411 } + { Toxic~ to~ aquatic~ life~ with~ long~ lasting~ effects. } +\prop_put:Nnn \l__ghsystem_h_prop { 412 } + { Harmful~ to~ aquatic~ life~ with~ long~ lasting~ effects. } +\prop_put:Nnn \l__ghsystem_h_prop { 413 } + { May~ cause~ long~ lasting~ harmful~ effects~ to~ aquatic~ life. } % 2 Supplemental Hazard Informations % 2.1 Physical Properties -\prop_put:Nnn \l__ghsystem_euh_prop { 001 } { Ex\-plo\-sive~when~dry. } -\prop_put:Nnn \l__ghsystem_euh_prop { 006 } { Ex\-plo\-sive~with~or~with\-out~con\-tact~with~air. } -\prop_put:Nnn \l__ghsystem_euh_prop { 014 } { Reacts~vio\-lent\-ly~with~wa\-ter. } -\prop_put:Nnn \l__ghsystem_euh_prop { 018 } { In~use~may~form~flammable/ex\-plo\-sive~va\-pour-air~mix\-ture. } -\prop_put:Nnn \l__ghsystem_euh_prop { 019 } { May~form~ex\-plo\-sive~per\-oxides. } -\prop_put:Nnn \l__ghsystem_euh_prop { 044 } { Risk~of~ex\-plo\-sion~if~heated~un\-der~con\-fine\-ment. } +\prop_put:Nnn \l__ghsystem_euh_prop { 001 } + { Explosive~ when~ dry. } +\prop_put:Nnn \l__ghsystem_euh_prop { 006 } + { Explosive~ with~ or~ without~ contact~ with~ air. } +\prop_put:Nnn \l__ghsystem_euh_prop { 014 } + { Reacts~ violently~ with~ water. } +\prop_put:Nnn \l__ghsystem_euh_prop { 018 } + { In~ use~ may~ form~ flammable\slash explosive~ vapour-air~ mixture. } +\prop_put:Nnn \l__ghsystem_euh_prop { 019 } + { May~ form~ explosive~ peroxides. } +\prop_put:Nnn \l__ghsystem_euh_prop { 044 } + { Risk~ of~ explosion~ if~ heated~ under~ confinement. } % 2.2 Health Properties -\prop_put:Nnn \l__ghsystem_euh_prop { 029 } { Con\-tact~with~wa\-ter~li\-be\-rates~to\-xic~gas. } -\prop_put:Nnn \l__ghsystem_euh_prop { 031 } { Con\-tact~with~acids~li\-be\-rates~to\-xic~gas. } -\prop_put:Nnn \l__ghsystem_euh_prop { 032 } { Con\-tact~with~acids~li\-be\-rates~ve\-ry~to\-xic~gas. } -\prop_put:Nnn \l__ghsystem_euh_prop { 066 } { Re\-pea\-ted~ex\-po\-sure~may~cause~skin~dry\-ness~or~cracking. } -\prop_put:Nnn \l__ghsystem_euh_prop { 070 } { Toxic~by~eye~con\-tact. } -\prop_put:Nnn \l__ghsystem_euh_prop { 071 } { Corro\-sive~to~the~respi\-ra\-to\-ry~tract. } +\prop_put:Nnn \l__ghsystem_euh_prop { 029 } + { Contact~ with~ water~ liberates~ toxic~ gas. } +\prop_put:Nnn \l__ghsystem_euh_prop { 031 } + { Contact~ with~ acids~ liberates~ toxic~ gas. } +\prop_put:Nnn \l__ghsystem_euh_prop { 032 } + { Contact~ with~ acids~ liberates~ very~ toxic~ gas. } +\prop_put:Nnn \l__ghsystem_euh_prop { 066 } + { Repeated~ exposure~ may~ cause~ skin~ dryness~ or~ cracking. } +\prop_put:Nnn \l__ghsystem_euh_prop { 070 } + { Toxic~ by~ eye~ contact. } +\prop_put:Nnn \l__ghsystem_euh_prop { 071 } + { Corrosive~ to~ the~ respiratory~ tract. } % 2.3 Environmental Properties -\prop_put:Nnn \l__ghsystem_euh_prop { 059 } { Ha\-zar\-dous~to~the~ozone~layer. } +\prop_put:Nnn \l__ghsystem_euh_prop { 059 } + { Hazardous~ to~ the~ ozone~ layer. } % 2.4 Supplemental Label Elements/Information On Certain Substances And Mixtures -\prop_put:Nnn \l__ghsystem_euh_prop { 201 } { Con\-tains~lead.~Should~not~be~used~on~sur\-faces~liable~to~be~chewed~or~sucked~by~child\-ren. } -\prop_put:Nnn \l__ghsystem_euh_prop { 201A } { Warning!~con\-tains~lead. } -\prop_put:Nnn \l__ghsystem_euh_prop { 202 } { \iupac { Cyano\|acrylate } . ~ Dan\-ger.~Bonds~skin~and~eyes~in~se\-conds.~Keep~out~of~the~reach~of~child\-ren. } -\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { Con\-tains ~ \ox[pos=side]{ 6 , chromium } . ~ May~pro\-duce~an~aller\-gic~reac\-tion. } -\prop_put:Nnn \l__ghsystem_euh_prop { 204 } { Con\-tains ~ \iupac { iso\|cyanates } . ~ May~pro\-duce~an~aller\-gic~reac\-tion. } -\prop_put:Nnn \l__ghsystem_euh_prop { 205 } { Con\-tains~epoxy~consti\-tuents.~May~pro\-duce~an~aller\-gic~reac\-tion. } -\prop_put:Nnn \l__ghsystem_euh_prop { 206 } { War\-ning!~Do~not~use~to\-gether~with~other~pro\-ducts.~May~re\-lease~dan\-ge\-rous~gases~(chlorine). } -\prop_put:Nnn \l__ghsystem_euh_prop { 207 } { War\-ning!~Con\-tains ~ \iupac { cad\|mium } . ~ Dan\-ge\-rous~fumes~are~formed~du\-ring~use.~See~in\-for\-ma\-tion~supplied~by~the~ma\-nu\-fac\-turer.~Comply~with~the~safety~in\-struc\-tions. } -\prop_put:Nnn \l__ghsystem_euh_prop { 208 } { Con\-tains \ghsystem_substance: . ~ May~pro\-duce~an~aller\-gic~reac\-tion. } -\prop_put:Nnn \l__ghsystem_euh_prop { 209 } { Can~be\-come~high\-ly~flammable~in~use. } -\prop_put:Nnn \l__ghsystem_euh_prop { 209A } { Can~be\-come~flammable~in~use. } -\prop_put:Nnn \l__ghsystem_euh_prop { 210 } { Safe\-ty~da\-ta~sheet~available~on~re\-quest. } -\prop_put:Nnn \l__ghsystem_euh_prop { 401 } { To~avoid~risks~to~hu\-man~health~and~the~en\-vi\-ron\-ment,~comply~with~the~in\-struc\-tions~for~use. } +\prop_put:Nnn \l__ghsystem_euh_prop { 201 } + { + Contains~ lead.~ Should~ not~ be~ used~ on~ surfaces~ liable~ to~ be~ + chewed~ or~ sucked~ by~ children. + } +\prop_put:Nnn \l__ghsystem_euh_prop { 201A } + { Warning!~ contains~ lead. } +\prop_put:Nnn \l__ghsystem_euh_prop { 202 } + { + \iupac { Cyano\|acrylate } . ~ Danger.~ Bonds~ skin~ and~ eyes~ in~ + seconds.~ Keep~ out~ of~ the~ reach~ of~ children. + } +\prop_put:Nnn \l__ghsystem_euh_prop { 203 } + { + Contains ~ chromium \, (VI) .~ May~ produce~ an~ allergic~ + reaction. + } +\prop_put:Nnn \l__ghsystem_euh_prop { 204 } + { + Contains ~ \iupac { iso\|cyanates } . ~ May~ produce~ an~ allergic~ + reaction. + } +\prop_put:Nnn \l__ghsystem_euh_prop { 205 } + { Contains~ epoxy~ constituents.~ May~ produce~ an~ allergic~ reaction. } +\prop_put:Nnn \l__ghsystem_euh_prop { 206 } + { + Warning!~ Do~ not~ use~ together~ with~ other~ products.~ May~ release~ + dangerous~ gases ~(chlorine). + } +\prop_put:Nnn \l__ghsystem_euh_prop { 207 } + { + Warning!~ Contains ~ \iupac { cadmium } .~ Dangerous~ fumes~ are~ formed~ + during~ use.~ See~ information~ supplied~ by~ the~ manufacturer.~ Comply~ + with~ the~ safety~ instructions. + } +\prop_put:Nnn \l__ghsystem_euh_prop { 208 } + { Contains \ghsystem_substance: .~ May~ produce~ an~ allergic~ reaction. } +\prop_put:Nnn \l__ghsystem_euh_prop { 209 } + { Can~ become~ highly~ flammable~ in~ use. } +\prop_put:Nnn \l__ghsystem_euh_prop { 209A } + { Can~ become~ flammable~ in~ use. } +\prop_put:Nnn \l__ghsystem_euh_prop { 210 } + { Safety~ data~ sheet~ available~ on~ request. } +\prop_put:Nnn \l__ghsystem_euh_prop { 401 } + { + To~ avoid~ risks~ to~ human~ health~ and~ the~ environment,~ comply~ with~ + the~ instructions~ for~ use. + } % PRECAUTIONARY STATEMENTS (Annex 4 page 19ff) % 3 Precautionary Statements % 3.1 General -\prop_put:Nnn \l__ghsystem_p_prop { 101 } { If~me\-di\-cal~ad\-vice~is~needed,~have~pro\-duct~con\-tainer~or~la\-bel~at~hand. } -\prop_put:Nnn \l__ghsystem_p_prop { 102 } { Keep~out~of~reach~of~child\-ren. } -\prop_put:Nnn \l__ghsystem_p_prop { 103 } { Read~label~be\-fore~use. } +\prop_put:Nnn \l__ghsystem_p_prop { 101 } + { + If~ medical~ advice~ is~ needed,~ have~ product~ container~ or~ label~ at~ + hand. + } +\prop_put:Nnn \l__ghsystem_p_prop { 102 } + { Keep~ out~ of~ reach~ of~ children. } +\prop_put:Nnn \l__ghsystem_p_prop { 103 } + { Read~ label~ before~ use. } % 3.2 Precautionary Statements — Prevention -\prop_put:Nnn \l__ghsystem_p_prop { 201 } { Ob\-tain~spe\-cial~in\-struc\-tions~be\-fore~use. } -\prop_put:Nnn \l__ghsystem_p_prop { 202 } { Do~not~handle~un\-til~all~safe\-ty~pre\-cau\-tions~have~been~read~and~un\-der\-stood. } -\prop_put:Nnn \l__ghsystem_p_prop { 210 } { Keep~away~from~heat/sparks/open~flames/hot~sur\-faces.~\textemdash\ No~smo\-king. } -\prop_put:Nnn \l__ghsystem_p_prop { 211 } { Do~not~spray~on~an~open~flame~or~other~ig\-ni\-tion~source. } -\prop_put:Nnn \l__ghsystem_p_prop { 220 } { Keep/Store~away~from~clothing/ \l__ghsystem_dots_tl /com\-bus\-tible~ma\-te\-rials. } -\prop_put:Nnn \l__ghsystem_p_prop { 221 } { Take~any~pre\-cau\-tion~to~avoid~mi\-xing~with~com\-bus\-tibles ~ \l__ghsystem_dots_tl } -\prop_put:Nnn \l__ghsystem_p_prop { 222 } { Do~not~allow~con\-tact~with~air. } -\prop_put:Nnn \l__ghsystem_p_prop { 223 } { Keep~away~from~any~possible~con\-tact~with~wa\-ter,~be\-cause~of~vio\-lent~reac\-tion~and~possible~flash~fire. } -\prop_put:Nnn \l__ghsystem_p_prop { 230 } { Keep~wetted~with ~ \l__ghsystem_dots_tl } -\prop_put:Nnn \l__ghsystem_p_prop { 231 } { Handle~un\-der~inert~gas. } -\prop_put:Nnn \l__ghsystem_p_prop { 232 } { Pro\-tect~from~mois\-ture. } -\prop_put:Nnn \l__ghsystem_p_prop { 233 } { Keep~con\-tainer~tight\-ly~closed. } -\prop_put:Nnn \l__ghsystem_p_prop { 234 } { Keep~only~in~ori\-gi\-nal~con\-tai\-ner. } -\prop_put:Nnn \l__ghsystem_p_prop { 235 } { Keep~cool. } -\prop_put:Nnn \l__ghsystem_p_prop { 240 } { Ground/bond~con\-tai\-ner~and~re\-cei\-ving~equip\-ment. } -\prop_put:Nnn \l__ghsystem_p_prop { 241 } { Use~ex\-plo\-sion-proof~elec\-tri\-cal/ven\-ti\-la\-ting/ligh\-ting / \l__ghsystem_dots_tl\ e\-quip\-ment. } -\prop_put:Nnn \l__ghsystem_p_prop { 242 } { Use~on\-ly~non-spar\-king~tools. } -\prop_put:Nnn \l__ghsystem_p_prop { 243 } { Take~pre\-cau\-tionary~mea\-sures~against~sta\-tic~dis\-charge. } -\prop_put:Nnn \l__ghsystem_p_prop { 244 } { Keep~re\-duc\-tion~valves~free~from~grease~and~oil. } -\prop_put:Nnn \l__ghsystem_p_prop { 250 } { Do~not~sub\-ject~to~grin\-ding/shock / \l__ghsystem_dots_tl / fric\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 251 } { Pressu\-rized~con\-tai\-ner : ~ Do~not~pierce~or~burn,~even~after~use. } -\prop_put:Nnn \l__ghsystem_p_prop { 260 } { Do~not~breathe~dust/fume/gas/mist/va\-pours/spray. } -\prop_put:Nnn \l__ghsystem_p_prop { 261 } { Avoid~brea\-thing~dust/fume/gas/mist/va\-pours/spray. } -\prop_put:Nnn \l__ghsystem_p_prop { 262 } { Do~not~get~in~eyes,~on~skin,~or~on~clothing. } -\prop_put:Nnn \l__ghsystem_p_prop { 263 } { Avoid~con\-tact~du\-ring~preg\-nan\-cy/while~nur\-sing. } -\prop_put:Nnn \l__ghsystem_p_prop { 264 } { Wash ~ \l__ghsystem_dots_tl\ tho\-rough\-ly~after~hand\-ling. } -\prop_put:Nnn \l__ghsystem_p_prop { 270 } { Do~not~eat,~drink~or~smoke~when~using~this~pro\-duct. } -\prop_put:Nnn \l__ghsystem_p_prop { 271 } { Use~on\-ly~out\-doors~or~in~a~well-ven\-ti\-la\-ted~area. } -\prop_put:Nnn \l__ghsystem_p_prop { 272 } { Con\-ta\-mi\-na\-ted~work~clo\-thing~should~not~be~allowed~out~of~the~work\-place. } -\prop_put:Nnn \l__ghsystem_p_prop { 273 } { Avoid~re\-lease~to~the~en\-vi\-ron\-ment. } -\prop_put:Nnn \l__ghsystem_p_prop { 280 } { Wear~pro\-tec\-tive~gloves/pro\-tec\-tive~clo\-thing/eye~pro\-tec\-tion/face~pro\-tec\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 281 } { Use~per\-so\-nal~pro\-tec\-tive~equip\-ment~as~re\-quired. } -\prop_put:Nnn \l__ghsystem_p_prop { 282 } { Wear~cold~in\-su\-la\-ting~gloves/face~shield/eye~pro\-tec\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 283 } { Wear~fire/flame~re\-sis\-tant/re\-tar\-dant~clo\-thing. } -\prop_put:Nnn \l__ghsystem_p_prop { 284 } { Wear~res\-pi\-ra\-to\-ry~pro\-tec\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 285 } { In~case~of~in\-ade\-quate~ven\-ti\-la\-tion~wear~res\-pi\-ra\-to\-ry~pro\-tec\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 231 + 232 } { Handle~un\-der~inert~gas.~Pro\-tect~from~mois\-ture. } -\prop_put:Nnn \l__ghsystem_p_prop { 235 + 410 } { Keep~cool.~Pro\-tect~from~sun\-light. } +\prop_put:Nnn \l__ghsystem_p_prop { 201 } + { Obtain~ special~ instructions~ before~ use. } +\prop_put:Nnn \l__ghsystem_p_prop { 202 } + { + Do~ not~ handle~ until~ all~ safety~ precautions~ have~ been~ read~ and~ + understood. + } +\prop_put:Nnn \l__ghsystem_p_prop { 210 } + { + Keep~ away~ from~ heat\slash sparks\slash open~ flames\slash hot~ + surfaces.~ \textemdash\ No~ smoking. + } +\prop_put:Nnn \l__ghsystem_p_prop { 211 } + { Do~ not~ spray~ on~ an~ open~ flame~ or~ other~ ignition~ source. } +\prop_put:Nnn \l__ghsystem_p_prop { 220 } + { + Keep\slash Store~ away~ from~ clothing\slash \l__ghsystem_dots_tl \slash + combustible~ materials. + } +\prop_put:Nnn \l__ghsystem_p_prop { 221 } + { + Take~ any~ precaution~ to~ avoid~ mixing~ with~ combustibles~ + \l__ghsystem_dots_tl + } +\prop_put:Nnn \l__ghsystem_p_prop { 222 } + { Do~ not~ allow~ contact~ with~ air. } +\prop_put:Nnn \l__ghsystem_p_prop { 223 } + { + Keep~ away~ from~ any~ possible~ contact~ with~ water,~ because~ of~ + violent~ reaction~ and~ possible~ flash~ fire. + } +\prop_put:Nnn \l__ghsystem_p_prop { 230 } + { Keep~ wetted~ with~ \l__ghsystem_dots_tl } +\prop_put:Nnn \l__ghsystem_p_prop { 231 } + { Handle~ under~ inert~ gas. } +\prop_put:Nnn \l__ghsystem_p_prop { 232 } + { Protect~ from~ moisture. } +\prop_put:Nnn \l__ghsystem_p_prop { 233 } + { Keep~ container~ tightly~ closed. } +\prop_put:Nnn \l__ghsystem_p_prop { 234 } + { Keep~ only~ in~ original~ container. } +\prop_put:Nnn \l__ghsystem_p_prop { 235 } + { Keep~ cool. } +\prop_put:Nnn \l__ghsystem_p_prop { 240 } + { Ground\slash bond~ container~ and~ receiving~ equipment. } +\prop_put:Nnn \l__ghsystem_p_prop { 241 } + { + Use~ explosion-proof~ electrical\slash ventilating\slash lighting \slash + \l__ghsystem_dots_tl\ equipment. + } +\prop_put:Nnn \l__ghsystem_p_prop { 242 } + { Use~ only~ non-sparking~ tools. } +\prop_put:Nnn \l__ghsystem_p_prop { 243 } + { Take~ precautionary~ measures~ against~ static~ discharge. } +\prop_put:Nnn \l__ghsystem_p_prop { 244 } + { Keep~ reduction~ valves~ free~ from~ grease~ and~ oil. } +\prop_put:Nnn \l__ghsystem_p_prop { 250 } + { + Do~ not~ subject~ to~ grinding\slash shock \slash \l__ghsystem_dots_tl + \slash friction. + } +\prop_put:Nnn \l__ghsystem_p_prop { 251 } + { Pressurized~ container:~ Do~ not~ pierce~ or~ burn,~ even~ after~ use. } +\prop_put:Nnn \l__ghsystem_p_prop { 260 } + { + Do~ not~ breathe~ dust\slash fume\slash gas\slash mist\slash vapours\slash + spray. + } +\prop_put:Nnn \l__ghsystem_p_prop { 261 } + { + Avoid~ breathing~ dust\slash fume\slash gas\slash mist\slash vapours\slash + spray. + } +\prop_put:Nnn \l__ghsystem_p_prop { 262 } + { Do~ not~ get~ in~ eyes,~ on~ skin,~ or~ on~ clothing. } +\prop_put:Nnn \l__ghsystem_p_prop { 263 } + { Avoid~ contact~ during~ pregnancy\slash while~ nursing. } +\prop_put:Nnn \l__ghsystem_p_prop { 264 } + { Wash~ \l__ghsystem_dots_tl\ thoroughly~ after~ handling. } +\prop_put:Nnn \l__ghsystem_p_prop { 270 } + { Do~ not~ eat,~ drink~ or~ smoke~ when~ using~ this~ product. } +\prop_put:Nnn \l__ghsystem_p_prop { 271 } + { Use~ only~ outdoors~ or~ in~ a~ well-ventilated~ area. } +\prop_put:Nnn \l__ghsystem_p_prop { 272 } + { + Contaminated~ work~ clothing~ should~ not~ be~ allowed~ out~ of~ the~ + workplace. + } +\prop_put:Nnn \l__ghsystem_p_prop { 273 } + { Avoid~ release~ to~ the~ environment. } +\prop_put:Nnn \l__ghsystem_p_prop { 280 } + { + Wear~ protective~ gloves\slash protective~ clothing\slash eye~ + protection\slash face~ protection. + } +\prop_put:Nnn \l__ghsystem_p_prop { 281 } + { Use~ personal~ protective~ equipment~ as~ required. } +\prop_put:Nnn \l__ghsystem_p_prop { 282 } + { Wear~ cold~ insulating~ gloves\slash face~ shield\slash eye~ protection. } +\prop_put:Nnn \l__ghsystem_p_prop { 283 } + { Wear~ fire\slash flame~ resistant\slash retardant~ clothing. } +\prop_put:Nnn \l__ghsystem_p_prop { 284 } + { Wear~ respiratory~ protection. } +\prop_put:Nnn \l__ghsystem_p_prop { 285 } + { In~ case~ of~ inadequate~ ventilation~ wear~ respiratory~ protection. } +\prop_put:Nnn \l__ghsystem_p_prop { 231 + 232 } + { Handle~ under~ inert~ gas.~ Protect~ from~ moisture. } +\prop_put:Nnn \l__ghsystem_p_prop { 235 + 410 } + { Keep~ cool.~ Protect~ from~ sunlight. } % 3.3 Precautionary Statements — Response -\prop_put:Nnn \l__ghsystem_p_prop { 301 } { IF~SWALLOWED : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 302 } { IF~ON~SKIN : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 303 } { IF~ON~SKIN~(or~hair) : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 304 } { IF~IN\-HALED : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 305 } { IF~IN~EYES : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 306 } { IF~ON~CLO\-THING : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 307 } { IF~ex\-po\-sed : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 308 } { IF~ex\-po\-sed~or~con\-cerned : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 309 } { IF~ex\-po\-sed~or~if~you~feel~un\-well : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 310 } { Imme\-diate\-ly~call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 311 } { Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 312 } { Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian~if~you~feel~un\-well. } -\prop_put:Nnn \l__ghsystem_p_prop { 313 } { Get~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 314 } { Get~me\-di\-cal~ad\-vice/atten\-tion~if~you~feel~un\-well. } -\prop_put:Nnn \l__ghsystem_p_prop { 315 } { Get~imme\-diate~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 320 } { Spe~ci\-fic~treat\-ment~is~ur\-gent~(see ~ \l__ghsystem_dots_tl\ on~this~la\-bel). } -\prop_put:Nnn \l__ghsystem_p_prop { 321 } { Spe~ci\-fic~treat\-ment~(see ~ \l__ghsystem_dots_tl\ on~this~la\-bel). } -\prop_put:Nnn \l__ghsystem_p_prop { 322 } { Spe~ci\-fic~mea\-sures~(see ~ \l__ghsystem_dots_tl\ on~this~la\-bel). } -\prop_put:Nnn \l__ghsystem_p_prop { 330 } { Rinse~mouth. } -\prop_put:Nnn \l__ghsystem_p_prop { 331 } { Do~NOT~in\-duce~vo\-mitting. } -\prop_put:Nnn \l__ghsystem_p_prop { 332 } { If~skin~irri\-tation~occurs : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 333 } { If~skin~irri\-tation~or~rash~occurs : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 334 } { Immerse~in~cool~wa\-ter/wrap~in~wet~ban\-da\-ges. } -\prop_put:Nnn \l__ghsystem_p_prop { 335 } { Brush~off~loose~par\-ticles~from~skin. } -\prop_put:Nnn \l__ghsystem_p_prop { 336 } { Thaw~frosted~parts~with~luke\-warm~wa\-ter.~Do~not~rub~affec\-ted~area. } -\prop_put:Nnn \l__ghsystem_p_prop { 337 } { If~eye~irri\-ta\-tion~per\-sists : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 338 } { Re\-move~con\-tact~lenses,~if~present~and~easy~to~do.~Con\-tinue~rin\-sing. } -\prop_put:Nnn \l__ghsystem_p_prop { 340 } { Re\-move~vic\-tim~to~fresh~air~and~keep~at~rest~in~a~po\-si\-tion~com\-for\-table~for~breathing. } -\prop_put:Nnn \l__ghsystem_p_prop { 341 } { If~brea\-thing~is~diffi\-cult,~re\-move~vic\-tim~to~fresh~air~and~keep~at~rest~in~a~po\-si\-tion~com\-for\-table~for~brea\-thing. } -\prop_put:Nnn \l__ghsystem_p_prop { 342 } { If~ex\-pe\-rien\-cing~res\-pi\-ra\-to\-ry~symp\-toms : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 350 } { Gently~wash~with~plen\-ty~of~soap~and~wa\-ter. } -\prop_put:Nnn \l__ghsystem_p_prop { 351 } { Rinse~cau\-tious\-ly~with~water~for~se\-ve\-ral~mi\-nutes. } -\prop_put:Nnn \l__ghsystem_p_prop { 352 } { Wash~with~plen\-ty~of~soap~and~wa\-ter. } -\prop_put:Nnn \l__ghsystem_p_prop { 353 } { Rinse~skin~with~wa\-ter/shower. } -\prop_put:Nnn \l__ghsystem_p_prop { 360 } { Rinse~imme\-diate\-ly~con\-ta\-mi\-na\-ted~clo\-thing~and~skin~with~plen\-ty~of~wa\-ter~be\-fore~re\-moving~clothes. } -\prop_put:Nnn \l__ghsystem_p_prop { 361 } { Re\-move/Take~off~imme\-diate\-ly~all~con\-ta\-mi\-na\-ted~clo\-thing. } -\prop_put:Nnn \l__ghsystem_p_prop { 362 } { Take~off~con\-ta\-mi\-na\-ted~clo\-thing~and~wash~be\-fore~r\-euse. } -\prop_put:Nnn \l__ghsystem_p_prop { 363 } { Wash~con\-ta\-mi\-na\-ted~clo\-thing~be\-fore~re\-use. } -\prop_put:Nnn \l__ghsystem_p_prop { 370 } { In~case~of~fire : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 371 } { In~case~of~ma\-jor~fire~and~large~quan\-ti\-ties : \ghsystem_text: } -\prop_put:Nnn \l__ghsystem_p_prop { 372 } { Ex\-plo\-sion~risk~in~case~of~fire. } -\prop_put:Nnn \l__ghsystem_p_prop { 373 } { DO~NOT~fight~fire~when~fire~reaches~ex\-plo\-sives. } -\prop_put:Nnn \l__ghsystem_p_prop { 374 } { Fight~fire~with~nor\-mal~pre\-cau\-tions~from~a~reasonable~dis\-tance. } -\prop_put:Nnn \l__ghsystem_p_prop { 375 } { Fight~fire~re\-mote\-ly~due~to~the~risk~of~ex\-plo\-sion. } -\prop_put:Nnn \l__ghsystem_p_prop { 376 } { Stop~leak~if~safe~to~do~so. } -\prop_put:Nnn \l__ghsystem_p_prop { 377 } { Lea\-king~gas~fire : \ghsystem_text:\ Do~not~ex\-tin\-guish,~un\-less~leak~can~be~stopped~safe\-ly. } -\prop_put:Nnn \l__ghsystem_p_prop { 378 } { Use ~ \l__ghsystem_dots_tl\ for~ex\-tinc\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 380 } { Eva\-cu\-ate~area. } -\prop_put:Nnn \l__ghsystem_p_prop { 381 } { Eli\-mi\-nate~all~igni\-tion~sources~if~safe~to~do~so. } -\prop_put:Nnn \l__ghsystem_p_prop { 390 } { Ab\-sorb~spillage~to~pre\-vent~ma\-te\-rial~da\-mage. } -\prop_put:Nnn \l__ghsystem_p_prop { 391 } { Collect~spillage. } -\prop_put:Nnn \l__ghsystem_p_prop { 301 + 310 } { IF~SWALLOWED : ~ Imme\-diate\-ly~call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 301 + 312 } { IF~SWALLOWED : ~ Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian~if~you~feel~un\-well. } -\prop_put:Nnn \l__ghsystem_p_prop { 301 + 330 + 331 } { IF~SWALLOWED : ~ rinse~mouth.~Do~NOT~in\-duce~vo\-mitting. } -\prop_put:Nnn \l__ghsystem_p_prop { 302 + 334 } { IF~ON~SKIN : ~ Immerse~in~cool~wa\-ter/wrap~in~wet~ban\-dages. } -\prop_put:Nnn \l__ghsystem_p_prop { 302 + 350 } { IF~ON~SKIN : ~ Gent\-ly~wash~with~plen\-ty~of~soap~and~wa\-ter. } -\prop_put:Nnn \l__ghsystem_p_prop { 302 + 352 } { IF~ON~SKIN : ~ Wash~with~plen\-ty~of~soap~and~wa\-ter. } -\prop_put:Nnn \l__ghsystem_p_prop { 303 + 361 + 353 } { IF~ON~SKIN~(or~hair) : ~ Re\-move/Take~off~imme\-diate\-ly~all~con\-ta\-mi\-na\-ted~clo\-thing.~Rinse~skin~with~wa\-ter/shower. } -\prop_put:Nnn \l__ghsystem_p_prop { 304 + 340 } { IF~IN\-HALED : ~ Re\-move~vic\-tim~to~fresh~air~and~keep~at~rest~in~a~po\-si\-tion~com\-for\-table~for~brea\-thing. } -\prop_put:Nnn \l__ghsystem_p_prop { 304 + 341 } { IF~IN\-HALED : ~ If~brea\-thing~is~diffi\-cult,~re\-move~vic\-tim~to~fresh~air~and~keep~at~rest~in~a~po\-si\-tion~com\-for\-table~for~brea\-thing. } -\prop_put:Nnn \l__ghsystem_p_prop { 305 + 351 + 338 } { IF~IN~EYES : ~ Rinse~cau\-tious\-ly~with~water~for~se\-ve\-ral~mi\-nutes.~Re\-move~con\-tact~lenses,~if~pre\-sent~and~easy~to~do.~Con\-tinue~rin\-sing. } -\prop_put:Nnn \l__ghsystem_p_prop { 306 + 360 } { IF~ON~CLO\-THING : ~ Rinse~imme\-diate\-ly~con\-ta\-mi\-na\-ted~clo\-thing~and~skin~with~plen\-ty~of~wa\-ter~be\-fore~re\-moving~clothes. } -\prop_put:Nnn \l__ghsystem_p_prop { 307 + 311 } { IF~ex\-po\-sed : ~ Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 308 + 313 } { IF~ex\-po\-sed~or~con\-cerned : ~ Get~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 309 + 311 } { IF~ex\-po\-sed~or~if~you~feel~un\-well : ~ Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 332 + 313 } { If~skin~irri\-ta\-tion~occurs : ~ Get~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 333 + 313 } { If~skin~irri\-ta\-tion~or~rash~occurs : ~ Get~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 335 + 334 } { Brush~off~loose~par\-ticles~from~skin.~Immerse~in~cool~wa\-ter/wrap~in~wet~ban\-dages. } -\prop_put:Nnn \l__ghsystem_p_prop { 337 + 313 } { If~eye~irri\-ta\-tion~per\-sists : ~ Get~me\-di\-cal~ad\-vice/atten\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 342 + 311 } { If~ex\-pe\-rien\-cing~res\-pi\-ra\-to\-ry~symp\-toms : ~ Call~a~POI\-SON~CEN\-TER~or~doc\-tor/phy\-si\-cian. } -\prop_put:Nnn \l__ghsystem_p_prop { 370 + 376 } { In~case~of~fire : ~ Stop~leak~if~safe~to~do~so. } -\prop_put:Nnn \l__ghsystem_p_prop { 370 + 378 } { In~case~of~fire : ~ Use ~ \l__ghsystem_dots_tl\ for~ex\-tinc\-tion. } -\prop_put:Nnn \l__ghsystem_p_prop { 370 + 380 } { In~case~of~fire : ~ Eva\-cuate~area. } -\prop_put:Nnn \l__ghsystem_p_prop { 370 + 380 + 375 } { In~case~of~fire : ~ Eva\-cuate~area.~Fight~fire~re\-mote\-ly~due~to~the~risk~of~ex\-plo\-sion. } -\prop_put:Nnn \l__ghsystem_p_prop { 371 + 380 + 375 } { In~case~of~ma\-jor~fire~and~large~quan\-ti\-ties : ~ Eva\-cuate~area.~Fight~fire~re\-mote\-ly~due~to~the~risk~of~ex\-plo\-sion. } +\prop_put:Nnn \l__ghsystem_p_prop { 301 } + { IF~ SWALLOWED: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 302 } + { IF~ ON~ SKIN: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 303 } + { IF~ ON~ SKIN~ (or~ hair): \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 304 } + { IF~ INHALED: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 305 } + { IF~ IN~ EYES: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 306 } + { IF~ ON~ CLOTHING: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 307 } + { IF~ exposed: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 308 } + { IF~ exposed~ or~ concerned: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 309 } + { IF~ exposed~ or~ if~ you~ feel~ unwell : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 310 } + { Immediately~ call~ a~ POISON~ CENTER~ or~ doctor\slash physician. } +\prop_put:Nnn \l__ghsystem_p_prop { 311 } + { Call~ a~ POISON~ CENTER~ or~ doctor\slash physician. } +\prop_put:Nnn \l__ghsystem_p_prop { 312 } + { + Call~ a~ POISON~ CENTER~ or~ doctor\slash physician~ if~ you~ feel~ + unwell. + } +\prop_put:Nnn \l__ghsystem_p_prop { 313 } + { Get~ medical~ advice\slash attention. } +\prop_put:Nnn \l__ghsystem_p_prop { 314 } + { Get~ medical~ advice\slash attention~ if~ you~ feel~ unwell. } +\prop_put:Nnn \l__ghsystem_p_prop { 315 } + { Get~ immediate~ medical~ advice\slash attention. } +\prop_put:Nnn \l__ghsystem_p_prop { 320 } + { + Specific~ treatment~ is~ urgent~ (see~ \l__ghsystem_dots_tl\ on~ this~ + label). + } +\prop_put:Nnn \l__ghsystem_p_prop { 321 } + { Specific~ treatment~ (see~ \l__ghsystem_dots_tl\ on~ this~ label). } +\prop_put:Nnn \l__ghsystem_p_prop { 322 } + { Specific~ measures~ (see~ \l__ghsystem_dots_tl\ on~ this~ label). } +\prop_put:Nnn \l__ghsystem_p_prop { 330 } + { Rinse~ mouth. } +\prop_put:Nnn \l__ghsystem_p_prop { 331 } + { Do~ NOT~ induce~ vomitting. } +\prop_put:Nnn \l__ghsystem_p_prop { 332 } + { If~ skin~ irritation~ occurs : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 333 } + { If~ skin~ irritation~ or~ rash~ occurs : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 334 } + { Immerse~ in~ cool~ water\slash wrap~ in~ wet~ bandages. } +\prop_put:Nnn \l__ghsystem_p_prop { 335 } + { Brush~ off~ loose~ particles~ from~ skin. } +\prop_put:Nnn \l__ghsystem_p_prop { 336 } + { + Thaw~ frosted~ parts~ with~ lukewarm~ water.~ Do~ not~ rub~ affected~ + area. + } +\prop_put:Nnn \l__ghsystem_p_prop { 337 } + { If~ eye~ irritation~ persists: \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 338 } + { + Remove~ contact~ lenses,~ if~ present~ and~ easy~ to~ do.~ Continue~ + rinsing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 340 } + { + Remove~ victim~ to~ fresh~ air~ and~ keep~ at~ rest~ in~ a~ position~ + comfortable~ for~ breathing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 341 } + { + If~ breathing~ is~ difficult,~ remove~ victim~ to~ fresh~ air~ and~ keep~ + at~ rest~ in~ a~ position~ comfortable~ for~ breathing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 342 } + { If~ experiencing~ respiratory~ symptoms : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 350 } + { Gently~ wash~ with~ plenty~ of~ soap~ and~ water. } +\prop_put:Nnn \l__ghsystem_p_prop { 351 } + { Rinse~ cautiously~ with~ water~ for~ several~ minutes. } +\prop_put:Nnn \l__ghsystem_p_prop { 352 } + { Wash~ with~ plenty~ of~ soap~ and~ water. } +\prop_put:Nnn \l__ghsystem_p_prop { 353 } + { Rinse~ skin~ with~ water\slash shower. } +\prop_put:Nnn \l__ghsystem_p_prop { 360 } + { + Rinse~ immediately~ contaminated~ clothing~ and~ skin~ with~ plenty~ of~ + water~ before~ removing~ clothes. + } +\prop_put:Nnn \l__ghsystem_p_prop { 361 } + { Remove\slash Take~ off~ immediately~ all~ contaminated~ clothing. } +\prop_put:Nnn \l__ghsystem_p_prop { 362 } + { Take~ off~ contaminated~ clothing~ and~ wash~ before~ reuse. } +\prop_put:Nnn \l__ghsystem_p_prop { 363 } + { Wash~ contaminated~ clothing~ before~ reuse. } +\prop_put:Nnn \l__ghsystem_p_prop { 370 } + { In~ case~ of~ fire : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 371 } + { In~ case~ of~ major~ fire~ and~ large~ quantities : \ghsystem_text: } +\prop_put:Nnn \l__ghsystem_p_prop { 372 } + { Explosion~ risk~ in~ case~ of~ fire. } +\prop_put:Nnn \l__ghsystem_p_prop { 373 } + { DO~ NOT~ fight~ fire~ when~ fire~ reaches~ explosives. } +\prop_put:Nnn \l__ghsystem_p_prop { 374 } + { Fight~ fire~ with~ normal~ precautions~ from~ a~ reasonable~ distance. } +\prop_put:Nnn \l__ghsystem_p_prop { 375 } + { Fight~ fire~ remotely~ due~ to~ the~ risk~ of~ explosion. } +\prop_put:Nnn \l__ghsystem_p_prop { 376 } + { Stop~ leak~ if~ safe~ to~ do~ so. } +\prop_put:Nnn \l__ghsystem_p_prop { 377 } + { + Leaking~ gas~ fire: \ghsystem_text:\ Do~ not~ extinguish,~ unless~ leak~ + can~ be~ stopped~ safely. + } +\prop_put:Nnn \l__ghsystem_p_prop { 378 } + { Use~ \l__ghsystem_dots_tl\ for~ extinction. } +\prop_put:Nnn \l__ghsystem_p_prop { 380 } + { Evacuate~ area. } +\prop_put:Nnn \l__ghsystem_p_prop { 381 } + { Eliminate~ all~ ignition~ sources~ if~ safe~ to~ do~ so. } +\prop_put:Nnn \l__ghsystem_p_prop { 390 } + { Absorb~ spillage~ to~ prevent~ material~ damage. } +\prop_put:Nnn \l__ghsystem_p_prop { 391 } + { Collect~ spillage. } +\prop_put:Nnn \l__ghsystem_p_prop { 301 + 310 } + { + IF~ SWALLOWED:~ Immediately~ call~ a~ POISON~ CENTER~ or~ doctor\slash + physician. + } +\prop_put:Nnn \l__ghsystem_p_prop { 301 + 312 } + { + IF~ SWALLOWED:~ Call~ a~ POISON~ CENTER~ or~ doctor\slash physician~ if~ + you~ feel~ unwell. + } +\prop_put:Nnn \l__ghsystem_p_prop { 301 + 330 + 331 } + { IF~ SWALLOWED:~ rinse~ mouth.~ Do~ NOT~ induce~ vomitting. } +\prop_put:Nnn \l__ghsystem_p_prop { 302 + 334 } + { IF~ ON~ SKIN:~ Immerse~ in~ cool~ water\slash wrap~ in~ wet~ bandages. } +\prop_put:Nnn \l__ghsystem_p_prop { 302 + 350 } + { IF~ ON~ SKIN:~ Gently~ wash~ with~ plenty~ of~ soap~ and~ water. } +\prop_put:Nnn \l__ghsystem_p_prop { 302 + 352 } + { IF~ ON~ SKIN:~ Wash~ with~ plenty~ of~ soap~ and~ water. } +\prop_put:Nnn \l__ghsystem_p_prop { 303 + 361 + 353 } + { + IF~ ON~ SKIN~ (or~ hair):~ Remove\slash Take~ off~ immediately~ all~ + contaminated~ clothing.~ Rinse~ skin~ with~ water\slash shower. + } +\prop_put:Nnn \l__ghsystem_p_prop { 304 + 340 } + { + IF~ INHALED:~ Remove~ victim~ to~ fresh~ air~ and~ keep~ at~ rest~ in~ a~ + position~ comfortable~ for~ breathing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 304 + 341 } + { + IF~ INHALED:~ If~ breathing~ is~ difficult,~ remove~ victim~ to~ fresh~ + air~ and~ keep~ at~ rest~ in~ a~ position~ comfortable~ for~ breathing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 305 + 351 + 338 } + { + IF~ IN~ EYES:~ Rinse~ cautiously~ with~ water~ for~ several~ minutes.~ + Remove~ contact~ lenses,~ if~ present~ and~ easy~ to~ do.~ Continue~ + rinsing. + } +\prop_put:Nnn \l__ghsystem_p_prop { 306 + 360 } + { + IF~ ON~ CLOTHING:~ Rinse~ immediately~ contaminated~ clothing~ and~ skin~ + with~ plenty~ of~ water~ before~ removing~ clothes. + } +\prop_put:Nnn \l__ghsystem_p_prop { 307 + 311 } + { IF~ exposed:~ Call~ a~ POISON~ CENTER~ or~ doctor\slash physician. } +\prop_put:Nnn \l__ghsystem_p_prop { 308 + 313 } + { IF~ exposed~ or~ concerned:~ Get~ medical~ advice\slash attention. } +\prop_put:Nnn \l__ghsystem_p_prop { 309 + 311 } + { + IF~ exposed~ or~ if~ you~ feel~ unwell:~ Call~ a~ POISON~ CENTER~ or~ + doctor\slash physician. + } +\prop_put:Nnn \l__ghsystem_p_prop { 332 + 313 } + { If~ skin~ irritation~ occurs:~ Get~ medical~ advice\slash attention. } +\prop_put:Nnn \l__ghsystem_p_prop { 333 + 313 } + { + If~ skin~ irritation~ or~ rash~ occurs:~ Get~ medical~ advice\slash + attention. + } +\prop_put:Nnn \l__ghsystem_p_prop { 335 + 334 } + { + Brush~ off~ loose~ particles~ from~ skin.~ Immerse~ in~ cool~ water\slash + wrap~ in~ wet~ bandages. + } +\prop_put:Nnn \l__ghsystem_p_prop { 337 + 313 } + { If~ eye~ irritation~ persists:~ Get~ medical~ advice\slash attention. } +\prop_put:Nnn \l__ghsystem_p_prop { 342 + 311 } + { + If~ experiencing~ respiratory~ symptoms:~ Call~ a~ POISON~ CENTER~ or~ + doctor\slash physician. + } +\prop_put:Nnn \l__ghsystem_p_prop { 370 + 376 } + { In~ case~ of~ fire:~ Stop~ leak~ if~ safe~ to~ do~ so. } +\prop_put:Nnn \l__ghsystem_p_prop { 370 + 378 } + { In~ case~ of~ fire:~ Use~ \l__ghsystem_dots_tl\ for~ extinction. } +\prop_put:Nnn \l__ghsystem_p_prop { 370 + 380 } + { In~ case~ of~ fire:~ Evacuate~ area. } +\prop_put:Nnn \l__ghsystem_p_prop { 370 + 380 + 375 } + { + In~ case~ of~ fire:~ Evacuate~ area.~ Fight~ fire~ remotely~ due~ to~ the~ + risk~ of~ explosion. + } +\prop_put:Nnn \l__ghsystem_p_prop { 371 + 380 + 375 } + { + In~ case~ of~ major~ fire~ and~ large~ quantities:~ Evacuate~ area.~ + Fight~ fire~ remotely~ due~ to~ the~ risk~ of~ explosion. + } % 3.4 Precautionary Statements — Storage -\prop_put:Nnn \l__ghsystem_p_prop { 401 } { Store ~ \l__ghsystem_dots_tl } -\prop_put:Nnn \l__ghsystem_p_prop { 402 } { Store~in~a~dry~place. } -\prop_put:Nnn \l__ghsystem_p_prop { 403 } { Store~in~a~well-ven\-ti\-lated~place. } -\prop_put:Nnn \l__ghsystem_p_prop { 404 } { Store~in~a~closed~con\-tainer. } -\prop_put:Nnn \l__ghsystem_p_prop { 405 } { Store~locked~up. } -\prop_put:Nnn \l__ghsystem_p_prop { 406 } { Store~in~cor\-ro\-sive~re\-sis\-tant / \l__ghsystem_dots_tl\ con\-tai\-ner~with~a~re\-sis\-tant~in\-ner~liner. } -\prop_put:Nnn \l__ghsystem_p_prop { 407 } { Main\-tain~air~gap~bet\-ween~stacks/pallets. } -\prop_put:Nnn \l__ghsystem_p_prop { 410 } { Pro\-tect~from~sun\-light. } -\prop_put:Nnn \l__ghsystem_p_prop { 411 } { Store~at~tem\-pera\-tures~not~ex\-cee\-ding ~ \exp_args:No \SI { \l__ghsystem_celsius_temperature_tl }{ \GHScelsius } / \exp_args:No \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } . } -\prop_put:Nnn \l__ghsystem_p_prop { 412 } { Store~at~tem\-pera\-tures~not~ex\-cee\-ding ~ \SI { 50 } { \GHScelsius } / \SI { 122 } { \GHSfahrenheit } . } -\prop_put:Nnn \l__ghsystem_p_prop { 413 } { Store~bulk~masses~greater~than ~ \exp_args:No \SI { \l__ghsystem_kg_mass_tl } { \GHSkilogram } / \exp_args:No \SI { \l__ghsystem_lbs_mass_tl } { \GHSpounds } ~ at~tem\-pera\-tures~not~ex\-cee\-ding ~ \exp_args:No \SI { \l__ghsystem_celsius_temperature_tl } { \GHScelsius } / \exp_args:No \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } . } -\prop_put:Nnn \l__ghsystem_p_prop { 420 } { Store~away~from~other~ma\-te\-rials. } -\prop_put:Nnn \l__ghsystem_p_prop { 422 } { Store~con\-tents~un\-der ~ \l__ghsystem_dots_tl } -\prop_put:Nnn \l__ghsystem_p_prop { 402 + 404 } { Store~in~a~dry~place.~Store~in~a~closed~con\-tai\-ner. } -\prop_put:Nnn \l__ghsystem_p_prop { 403 + 233 } { Store~in~a~well-ven\-ti\-la\-ted~place.~Keep~con\-tainer~tight\-ly~closed. } -\prop_put:Nnn \l__ghsystem_p_prop { 403 + 235 } { Store~in~a~well-ven\-ti\-la\-ted~place.~Keep~cool. } -\prop_put:Nnn \l__ghsystem_p_prop { 410 + 403 } { Pro\-tect~from~sun\-light.~Store~in~a~well-ven\-ti\-la\-ted~place. } -\prop_put:Nnn \l__ghsystem_p_prop { 410 + 412 } { Pro\-tect~from~sun\-light.~Do~not~ex\-pose~to~tem\-pera\-tures~ex\-cee\-ding ~ \SI { 50 } { \GHScelsius } / \SI { 122 } { \GHSfahrenheit } . } -\prop_put:Nnn \l__ghsystem_p_prop { 411 + 235 } { Store~at~tem\-pera\-tures~not~ex\-cee\-ding ~ \exp_args:No \SI { \l__ghsystem_celsius_temperature_tl }{ \GHScelsius } / \exp_args:No \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } ~ . ~ Keep~cool. } +\prop_put:Nnn \l__ghsystem_p_prop { 401 } + { Store~ \l__ghsystem_dots_tl } +\prop_put:Nnn \l__ghsystem_p_prop { 402 } + { Store~ in~ a~ dry~ place. } +\prop_put:Nnn \l__ghsystem_p_prop { 403 } + { Store~ in~ a~ well-ventilated~ place. } +\prop_put:Nnn \l__ghsystem_p_prop { 404 } + { Store~ in~ a~ closed~ container. } +\prop_put:Nnn \l__ghsystem_p_prop { 405 } + { Store~ locked~ up. } +\prop_put:Nnn \l__ghsystem_p_prop { 406 } + { + Store~ in~ corrosive~ resistant\slash \l__ghsystem_dots_tl\ container~ + with~ a~ resistant~ inner~ liner. + } +\prop_put:Nnn \l__ghsystem_p_prop { 407 } + { Maintain~ air~ gap~ between~ stacks\slash pallets. } +\prop_put:Nnn \l__ghsystem_p_prop { 410 } + { Protect~ from~ sunlight. } +\prop_put:Nnn \l__ghsystem_p_prop { 411 } + { + Store~ at~ temperatures~ not~ exceeding~ + \exp_args:No + \SI { \l__ghsystem_celsius_temperature_tl }{ \GHScelsius } + \slash + \exp_args:No + \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } . + } +\prop_put:Nnn \l__ghsystem_p_prop { 412 } + { + Store~at~temperatures~not~exceeding ~ \SI { 50 } { \GHScelsius } \slash + \SI { 122 } { \GHSfahrenheit } . + } +\prop_put:Nnn \l__ghsystem_p_prop { 413 } + { + Store~bulk~masses~greater~than ~ + \exp_args:No \SI { \l__ghsystem_kg_mass_tl } { \GHSkilogram } \slash + \exp_args:No \SI { \l__ghsystem_lbs_mass_tl } { \GHSpounds } ~ + at~ temperatures~ not~ exceeding ~ + \exp_args:No \SI { \l__ghsystem_celsius_temperature_tl } { \GHScelsius } \slash + \exp_args:No \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } . + } +\prop_put:Nnn \l__ghsystem_p_prop { 420 } + { Store~ away~ from~ other~ materials. } +\prop_put:Nnn \l__ghsystem_p_prop { 422 } + { Store~ contents~ under~ \l__ghsystem_dots_tl } +\prop_put:Nnn \l__ghsystem_p_prop { 402 + 404 } + { Store~ in~ a~ dry~ place.~ Store~ in~ a~ closed~ container. } +\prop_put:Nnn \l__ghsystem_p_prop { 403 + 233 } + { Store~ in~ a~ well-ventilated~ place.~ Keep~ container~ tightly~ closed. } +\prop_put:Nnn \l__ghsystem_p_prop { 403 + 235 } + { Store~ in~ a~ well-ventilated~ place.~ Keep~ cool. } +\prop_put:Nnn \l__ghsystem_p_prop { 410 + 403 } + { Protect~ from~ sunlight.~ Store~ in~ a~ well-ventilated~ place. } +\prop_put:Nnn \l__ghsystem_p_prop { 410 + 412 } + { + Protect~ from~ sunlight.~ Do~ not~ expose~ to~ temperatures~ exceeding~ + \SI { 50 } { \GHScelsius } \slash \SI { 122 } { \GHSfahrenheit } . + } +\prop_put:Nnn \l__ghsystem_p_prop { 411 + 235 } + { + Store~at~temperatures~not~exceeding ~ + \exp_args:No \SI { \l__ghsystem_celsius_temperature_tl }{ \GHScelsius } \slash + \exp_args:No \SI { \l__ghsystem_fahrenheit_temperature_tl } { \GHSfahrenheit } + ~ . ~ Keep~ cool. + } % 3.5 Precautionary Statements — Disposal -\prop_put:Nnn \l__ghsystem_p_prop { 501 } { Dis\-pose~of~con\-tents/con\-tainer~to ~ \l__ghsystem_dots_tl } +\prop_put:Nnn \l__ghsystem_p_prop { 501 } + { Dispose~ of~ contents\slash container~ to~ \l__ghsystem_dots_tl } % 4 Hazard Statement Codes (Annex 6 page 4f) -\prop_put:Nnn \l__ghsystem_h_prop { 350i } { May~cause~can\-cer~by~in\-ha\-la\-tion. } -\prop_put:Nnn \l__ghsystem_h_prop { 360F } { May~da\-mage~fer\-ti\-li\-ty. } -\prop_put:Nnn \l__ghsystem_h_prop { 360D } { May~da\-mage~the~un\-born~child. } -\prop_put:Nnn \l__ghsystem_h_prop { 361f } { Sus\-pec\-ted~of~da\-ma\-ging~fer\-ti\-li\-ty. } -\prop_put:Nnn \l__ghsystem_h_prop { 361d } { Sus\-pec\-ted~of~da\-ma\-ging~the~un\-born~child. } -\prop_put:Nnn \l__ghsystem_h_prop { 360FD } { May~da\-mage~fer\-ti\-li\-ty.~May~da\-mage~the~un\-born~child. } -\prop_put:Nnn \l__ghsystem_h_prop { 361fd } { Suspected~of~damaging~fer\-ti\-li\-ty.~Sus\-pec\-ted~of~da\-ma\-ging~the~un\-born~child. } -\prop_put:Nnn \l__ghsystem_h_prop { 360Fd } { May~da\-mage~fer\-ti\-li\-ty.~Sus\-pec\-ted~of~da\-ma\-ging~the~un\-born~child. } -\prop_put:Nnn \l__ghsystem_h_prop { 360Df } { May~da\-mage~the~un\-born~child.~Sus\-pec\-ted~of~da\-ma\-ging~fer\-ti\-li\-ty. } +\prop_put:Nnn \l__ghsystem_h_prop { 350i } + { May~ cause~ cancer~ by~ inhalation. } +\prop_put:Nnn \l__ghsystem_h_prop { 360F } + { May~ damage~ fertility. } +\prop_put:Nnn \l__ghsystem_h_prop { 360D } + { May~ damage~ the~ unborn~ child. } +\prop_put:Nnn \l__ghsystem_h_prop { 361f } + { Suspected~ of~ damaging~ fertility. } +\prop_put:Nnn \l__ghsystem_h_prop { 361d } + { Suspected~ of~ damaging~ the~ unborn~ child. } +\prop_put:Nnn \l__ghsystem_h_prop { 360FD } + { May~ damage~ fertility.~ May~ damage~ the~ unborn~ child. } +\prop_put:Nnn \l__ghsystem_h_prop { 361fd } + { + Suspected~ of~ damaging~ fertility.~ Suspected~ of~ damaging~ the~ unborn~ + child. + } +\prop_put:Nnn \l__ghsystem_h_prop { 360Fd } + { May~ damage~ fertility.~ Suspected~ of~ damaging~ the~ unborn~ child. } +\prop_put:Nnn \l__ghsystem_h_prop { 360Df } + { May~ damage~ the~ unborn~ child.~ Suspected~ of~ damaging~ fertility. } -\ExplSyntaxOff
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_german.def b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_german.def index 07c2491bf17..50ac02c3a6e 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_german.def +++ b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_german.def @@ -27,7 +27,6 @@ % - - % % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ExplSyntaxOn % GERMAN DEFINITIONS \prop_clear:N \l__ghsystem_h_prop \prop_clear:N \l__ghsystem_euh_prop @@ -189,7 +188,7 @@ \prop_put:Nnn \l__ghsystem_euh_prop { 201 } { Ent\-h\"alt~Blei.~Nicht~f\"ur~den~An\-strich~von~Ge\-gen\-st\"an\-den~ver\-wen\-den,~die~von~Kin\-dern~ge\-kaut~oder~ge\-lutscht~wer\-den~k\"onn\-ten. } \prop_put:Nnn \l__ghsystem_euh_prop { 201A } { Ach\-tung!~Ent\-h\"alt~Blei. } \prop_put:Nnn \l__ghsystem_euh_prop { 202 } { \iupac{Cyan\|acryl\|at}.~Ge\-fahr.~Klebt~inner\-halb~von~Se\-kun\-den~Haut~und~Au\-gen\-li\-der~zu\-sam\-men.~Darf~nicht~in~die~H\"an\-de~von~Kin\-dern~ge\-lan\-gen. } -\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { Ent\-h\"alt~\ox[pos=side]{6,Chrom}.~Kann~aller\-gi\-sche~Re\-ak\-tio\-nen~her\-vor\-ru\-fen. } +\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { Ent\-h\"alt~Chrom\,(VI).~Kann~aller\-gi\-sche~Re\-ak\-tio\-nen~her\-vor\-ru\-fen. } \prop_put:Nnn \l__ghsystem_euh_prop { 204 } { Ent\-h\"alt~\iupac{Iso\|cyan\|ate}.~Kann~aller\-gi\-sche~Re\-ak\-tio\-nen~her\-vor\-ru\-fen. } \prop_put:Nnn \l__ghsystem_euh_prop { 205 } { Ent\-h\"alt~epoxid\-halti\-ge~Ver\-bin\-dun\-gen.~Kann~aller\-gi\-sche~Re\-ak\-tio\-nen~her\-vor\-ru\-fen. } \prop_put:Nnn \l__ghsystem_euh_prop { 206 } { Ach\-tung!~Nicht~zu\-sam\-men~mit~an\-de\-ren~Pro\-duk\-ten~ver\-wen\-den,~da~ge\-f\"ahr\-liche~Ga\-se~(Chlor)~frei\-ge\-setzt~wer\-den~k\"on\-nen. } @@ -359,4 +358,3 @@ \prop_put:Nnn \l__ghsystem_h_prop { 360Fd } { Kann~die~Frucht\-bar\-keit~be\-ein\-tr\"ach\-ti\-gen.~Kann~ver\-mut\-lich~das~Kind~im~Mut\-ter\-leib~sch\"a\-di\-gen. } \prop_put:Nnn \l__ghsystem_h_prop { 360Df } { Kann~das~Kind~im~Mut\-ter\-leib~sch\"a\-di\-gen.~Kann~ver\-mut\-lich~die~Frucht\-bar\-keit~be\-ein\-tr\"ach\-ti\-gen. } -\ExplSyntaxOff
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_italian.def b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_italian.def index 55fa18aba7e..7780caa36ab 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_italian.def +++ b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_italian.def @@ -29,7 +29,6 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - the Italian translation was kindly provided by Jonas Rivetti. Many thanks! -\ExplSyntaxOn % ITALIAN DEFINITIONS \prop_clear:N \l__ghsystem_h_prop \prop_clear:N \l__ghsystem_euh_prop @@ -191,7 +190,7 @@ \prop_put:Nnn \l__ghsystem_euh_prop { 201 } { Con\-tie\-ne~piom\-bo.~Non~u\-ti\-liz\-za\-re~su~og\-get\-ti~che~pos\-so\-no~es\-se\-re~ma\-sti\-ca\-ti~o~suc\-chia\-ti~dai~bam\-bi\-ni. } \prop_put:Nnn \l__ghsystem_euh_prop { 201A } { At\-ten\-zio\-ne!~Con\-tie\-ne~piom\-bo. } \prop_put:Nnn \l__ghsystem_euh_prop { 202 } { Ciano\-acrilato.~Pe\-ri\-co\-lo.~In\-col\-la~la~pel\-le~e~gli~oc\-chi~in~po\-chi~se\-con\-di.~Te\-ne\-re~fuo\-ri~dal\-la~por\-ta\-ta~dei~bam\-bi\-ni. } -\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { Con\-tie\-ne~\ox[pos=side]{6,cromo}.~Pu\`o~pro\-vo\-ca\-re~u\-na~re\-a\-zio\-ne~al\-ler\-gi\-ca. } +\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { Con\-tie\-ne~cromo\,(VI).~Pu\`o~pro\-vo\-ca\-re~u\-na~re\-a\-zio\-ne~al\-ler\-gi\-ca. } \prop_put:Nnn \l__ghsystem_euh_prop { 204 } { Con\-tie\-ne~iso\-cianati.~Pu\`o~pro\-vo\-ca\-re~u\-na~re\-a\-zio\-ne~al\-ler\-gi\-ca. } \prop_put:Nnn \l__ghsystem_euh_prop { 205 } { Con\-tie\-ne~com\-po\-nen\-ti~epossi\-di\-ci.~Pu\`o~pro\-vo\-ca\-re~u\-na~re\-a\-zio\-ne~al\-ler\-gi\-ca. } \prop_put:Nnn \l__ghsystem_euh_prop { 206 } { At\-ten\-zio\-ne!~Non~u\-ti\-liz\-za\-re~in~com\-bi\-na\-zio\-ne~con~al\-tri~pro\-dot\-ti.~Pos\-so\-no~li\-be\-rar\-si~gas~pe\-ri\-co\-lo\-si~(cloro). } @@ -361,4 +360,3 @@ \prop_put:Nnn \l__ghsystem_h_prop { 360Fd } { Pu\`o~nuo\-ce\-re~al\-la~fer\-ti\-li\-t\`a.~So\-spet\-ta\-to~di~nuo\-ce\-re~al~fe\-to. } \prop_put:Nnn \l__ghsystem_h_prop { 360Df } { Pu\`o~nuo\-ce\-re~al~fe\-to.~So\-spet\-ta\-to~di~nuo\-ce\-re~al\-la~fer\-ti\-li\-t\`a. } -\ExplSyntaxOff
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_langtemplate.def b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_langtemplate.def index 28863950bca..a7455f844d5 100644 --- a/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_langtemplate.def +++ b/Master/texmf-dist/tex/latex/chemmacros/language/ghsystem_langtemplate.def @@ -28,7 +28,7 @@ % - The Current Maintainer of this work is Clemens Niederberger. - % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% A few informations how to use this template: +% Some information how to use this template: % % The H, EUH, and P statements are stored in a property list, respectively. % The commands for adding a respective entry are pre-typed so you only have to @@ -72,7 +72,6 @@ % \end{document} % ----------------------------------------------------------------------------- % -\ExplSyntaxOn % <LANGUAGE> DEFINITIONS \prop_clear:N \l__ghsystem_h_prop \prop_clear:N \l__ghsystem_euh_prop @@ -214,7 +213,7 @@ \prop_put:Nnn \l__ghsystem_euh_prop { 201 } { ... } \prop_put:Nnn \l__ghsystem_euh_prop { 201A } { ... } \prop_put:Nnn \l__ghsystem_euh_prop { 202 } { \iupac { ... } . ~ ... } -\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { ... ~ \ox[pos=side]{ 6 , ... } . ~ ... } +\prop_put:Nnn \l__ghsystem_euh_prop { 203 } { ... ~ ... \,(VI) . ~ ... } \prop_put:Nnn \l__ghsystem_euh_prop { 204 } { ... ~ \iupac { ... } . ~ ... } \prop_put:Nnn \l__ghsystem_euh_prop { 205 } { ... } \prop_put:Nnn \l__ghsystem_euh_prop { 206 } { ... } @@ -384,4 +383,3 @@ \prop_put:Nnn \l__ghsystem_h_prop { 360Fd } { ... } \prop_put:Nnn \l__ghsystem_h_prop { 360Df } { ... } -\ExplSyntaxOff
\ No newline at end of file |