diff options
author | Karl Berry <karl@freefriends.org> | 2013-06-24 23:45:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-06-24 23:45:09 +0000 |
commit | cbcdf6683e607495b67f3ff5798ac79be73758a5 (patch) | |
tree | 1c0c485421ead5cca7dd0de66afdf39f416ed200 /Master/texmf-dist/tex/latex/mhchem | |
parent | 1aeba500ea40082474f38f3ec6d3fee4fd69de5e (diff) |
mhchem (24jun13)
git-svn-id: svn://tug.org/texlive/trunk@30910 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mhchem')
-rw-r--r-- | Master/texmf-dist/tex/latex/mhchem/hpstatement.sty | 547 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mhchem/mhchem.sty | 1815 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/mhchem/rsphrase.sty | 78 |
3 files changed, 1484 insertions, 956 deletions
diff --git a/Master/texmf-dist/tex/latex/mhchem/hpstatement.sty b/Master/texmf-dist/tex/latex/mhchem/hpstatement.sty new file mode 100644 index 00000000000..b800b17782b --- /dev/null +++ b/Master/texmf-dist/tex/latex/mhchem/hpstatement.sty @@ -0,0 +1,547 @@ +%% hpstatement.sty +%% Copyright 2004-2013 Martin Hensel +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c +% which is included as lppl-1-3c.txt. +% +% This work has the LPPL maintenance status "maintained". +% The Current Maintainer of this work is Martin Hensel. +% +% ( In order to fight spam, the maintainer's contact ) +% ( information is "encrypted" with ROT13. ) +% ( If you do not know ROT13 yet and have no tool for ) +% ( decryption, simply do an Internet search for "ROT13". ) +% +% ,---[ ROT 13 ]--- +% | Gur Pheerag Znvagnvare bs guvf jbex vf Znegva Urafry +% | jub pna or pbagnpgrq ivn +% | zupurz@ZnegvaUrafry.qr +% | be ivn znvy +% | Znegva Urafry +% | Cbfgfge. 20 +% | 09232 Unegznaafqbes +% | Treznal +% `---------- +% +% This work consists of all files listed in manifest.txt. +% +% +% Sources for the H and P statements are: +% +% - Regulation (EC) No 1272/2008 of the European Parliament and of the +% Council of 16 December 2008 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 +% http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2008:353:0001:1355:EN:PDF +% +% - a database with the extracted phrases, kindly provided by the author +% of http://schoolscout24.de/cgi-bin/hpp/hppinput.cgi +% +% - Commission Regulation (EU) No 286/2011 of 10 March 2011 amending, +% for the purposes of its adaptation to technical and scientific +% progress, Regulation (EC) No 1272/2008 of the European Parliament +% and of the Council on classification, labelling and packaging of +% substances and mixtures +% http://new.eur-lex.europa.eu/legal-content/EN/TXT/?qid=1369907325497\&uri=CELEX:32011R0286 +% +% The statements themselves therefore are not subject to the LPPL. +% +% +\ProvidesPackage{hpstatement}[2013/06/17 v1.00 H and P statements (mhchem bundle)] +\RequirePackage{twoopt} +\RequirePackage{ifthen} +\RequirePackage{textcomp} + +\def\mhchem@hp@number{\PackageError{hpstatement}{% + You have to specify an H or P statement number\MessageBreak% + when you use \string\hpnumber\space for the first time\MessageBreak% + (e.g. \string\hpnumber{H200})}{}} +\def\mhchem@hp@statement{\PackageError{hpstatement}{% + You have to specify an H or P statement number\MessageBreak% + when you use \string\hpstatement\space for the first time\MessageBreak% + (e.g. \string\hpstatement{H200})}{}} + +\newcommand*\mhchem@hp@iflanguagename[1]{%- from Heiko Oberdiek and Markus Kohm in de.comp.text.tex + \begingroup + \edef\x{#1}% + \ifnum\language=0 + \def\y{english}% + \else + \edef\y{\languagename}% + \fi + \@onelevel@sanitize\x + \@onelevel@sanitize\y + \expandafter\endgroup + \ifx\x\y + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} + +\newcommandtwoopt*\hpnumber[3][][]{% #1,#2 optional statement parameters, #3 statement number + \ifthenelse{\equal{#3}{}}{% + }{% + \mhchem@hp@main[{#1}][{#2}]{#3}% + }% + \mhchem@hp@number% +} + +\newcommandtwoopt*\hpstatement[3][][]{% #1,#2 optional statement parameters, #3 statement number + \ifthenelse{\equal{#3}{}}{% + }{% + \mhchem@hp@main[{#1}][{#2}]{#3}% + }% + \mhchem@hp@statement% +} + +% populates hp@statement and hp@number +\newcommandtwoopt*\mhchem@hp@main[3][][]{% #1,#2 optional statement parameters, #3 statement number + \def\mhchem@hp@arguments{error}% + \ifthenelse{\equal{#1}{}}{% + \def\mhchem@hp@arguments{0}% + }{% + \ifthenelse{\equal{#2}{}}{% + \def\mhchem@hp@arguments{1}% + }{% + \def\mhchem@hp@arguments{2}% + }% + }% + % + \let\mhchem@hp@statement\relax% + \mhchem@hp@main@i{#1}{#2}{#3-\mhchem@hp@arguments}% + \ifx\relax\mhchem@hp@statement% + \mhchem@hp@main@i{#1}{#2}{#3-error}% + \ifx\relax\mhchem@hp@statement% + \gdef\mhchem@hp@statement{% + \PackageError{hpstatement}{H or P statement "#3"\MessageBreak% + is not defined}{}% + }% + \fi% + \fi% + \ifthenelse{\equal{\mhchem@hp@statement}{}}{% + \gdef\mhchem@hp@statement{% + \PackageError{hpstatement}{H or P statement "#3"\MessageBreak% + is not defined for your language}{}% + }% + }{}% +} +\newcommand*\mhchem@hp@main@i[3]{% + \mhchem@hp@iflanguagename{english}{\mhchem@hp@data@english{#1}{#2}{#3}}{% + \mhchem@hp@iflanguagename{USenglish}{\mhchem@hp@data@english{#1}{#2}{#3}}{% + \mhchem@hp@iflanguagename{american}{\mhchem@hp@data@english{#1}{#2}{#3}}{% + \mhchem@hp@iflanguagename{UKenglish}{\mhchem@hp@data@english{#1}{#2}{#3}}{% + \mhchem@hp@iflanguagename{british}{\mhchem@hp@data@english{#1}{#2}{#3}}{% + }}}}}% +} + +\newcommand*\mhchem@hp@ii[4]{% +% #1 number to look for, entered by USER + arguments +% #2 number to compare to, e.g. P230.1-1 +% #3 formatted number to output +% #4 text (or error message) + \ifthenelse{\equal{#1}{#2}}{% if input number corresponds to entry + \gdef\mhchem@hp@number{#3}% set number + \gdef\mhchem@hp@statement{#4}% set statement + }{}% +} + +\newcommand*\mhchem@hp@data@english[3]{% +\mhchem@hp@ii{#3}{EUH001-0}{EUH001}{Explosive when dry.}% +\mhchem@hp@ii{#3}{EUH006-0}{EUH006}{Explosive with or without contact with air.}% +\mhchem@hp@ii{#3}{EUH014-0}{EUH014}{Reacts violently with water.}% +\mhchem@hp@ii{#3}{EUH018.0-0}{EUH018}{In use may form flammable/explosive vapour-air mixture.}% +\mhchem@hp@ii{#3}{EUH018-error}{EUH018}{\PackageError{hpstatement}{Selection missing.\MessageBreak This statement requires a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{EUH018.1-0}{EUH018}{In use may form flammable vapour-air mixture.}% +\mhchem@hp@ii{#3}{EUH018.2-0}{EUH018}{In use may form explosive vapour-air mixture.}% +\mhchem@hp@ii{#3}{EUH019-0}{EUH019}{May form explosive peroxides.}% +\mhchem@hp@ii{#3}{EUH029-0}{EUH029}{Contact with water liberates toxic gas.}% +\mhchem@hp@ii{#3}{EUH031-0}{EUH031}{Contact with acids liberates toxic gas.}% +\mhchem@hp@ii{#3}{EUH032-0}{EUH032}{Contact with acids liberates very toxic gas.}% +\mhchem@hp@ii{#3}{EUH044-0}{EUH044}{Risk of explosion if heated under confinement.}% +\mhchem@hp@ii{#3}{EUH059-0}{EUH059}{Hazardous to the ozone layer.}% +\mhchem@hp@ii{#3}{EUH066-0}{EUH066}{Repeated exposure may cause skin dryness or cracking.}% +\mhchem@hp@ii{#3}{EUH070-0}{EUH070}{Toxic by eye contact.}% +\mhchem@hp@ii{#3}{EUH071-0}{EUH071}{Corrosive to the respiratory tract.}% +\mhchem@hp@ii{#3}{EUH201-0}{EUH201}{Contains lead. Should not be used on surfaces liable to be chewed or sucked by children.}% +\mhchem@hp@ii{#3}{EUH201A-0}{EUH201A}{Warning! Contains lead.}% +\mhchem@hp@ii{#3}{EUH202-0}{EUH202}{Cyanoacrylate. Danger. Bonds skin and eyes in seconds. Keep out of the reach of children.}% +\mhchem@hp@ii{#3}{EUH203-0}{EUH203}{Contains chromium (VI). May produce an allergic reaction.}% +\mhchem@hp@ii{#3}{EUH204-0}{EUH204}{Contains isocyanates. May produce an allergic reaction.}% +\mhchem@hp@ii{#3}{EUH205-0}{EUH205}{Contains epoxy constituents. May produce an allergic reaction.}% +\mhchem@hp@ii{#3}{EUH206-0}{EUH206}{Warning! Do not use together with other products. May release dangerous gases (chlorine).}% +\mhchem@hp@ii{#3}{EUH207-0}{EUH207}{Warning! Contains cadmium. Dangerous fumes are formed during use. See information supplied by the manufacturer. Comply with the safety instructions.}% +\mhchem@hp@ii{#3}{EUH208.0-0}{EUH208}{Contains \textless{}name of sensitising substance\textgreater{}. May produce an allergic reaction.}% +\mhchem@hp@ii{#3}{EUH208-error}{EUH208}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{EUH208-1}{EUH208}{Contains #1. May produce an allergic reaction.}% +\mhchem@hp@ii{#3}{EUH209-0}{EUH209}{Can become highly flammable in use.}% +\mhchem@hp@ii{#3}{EUH209A-0}{EUH209A}{Can become flammable in use.}% +\mhchem@hp@ii{#3}{EUH210-0}{EUH210}{Safety data sheet available on request.}% +\mhchem@hp@ii{#3}{EUH401-0}{EUH401}{To avoid risks to human health and the environment, comply with the instructions for use.}% +\mhchem@hp@ii{#3}{H200-0}{H200}{Unstable explosives.}% +\mhchem@hp@ii{#3}{H201-0}{H201}{Explosive; mass explosion hazard.}% +\mhchem@hp@ii{#3}{H202-0}{H202}{Explosive, severe projection hazard.}% +\mhchem@hp@ii{#3}{H203-0}{H203}{Explosive; fire, blast or projection hazard.}% +\mhchem@hp@ii{#3}{H204-0}{H204}{Fire or projection hazard.}% +\mhchem@hp@ii{#3}{H205-0}{H205}{May mass explode in fire.}% +\mhchem@hp@ii{#3}{H220-0}{H220}{Extremely flammable gas.}% +\mhchem@hp@ii{#3}{H221-0}{H221}{Flammable gas.}% +\mhchem@hp@ii{#3}{H222-0}{H222}{Extremely flammable aerosol.}% +\mhchem@hp@ii{#3}{H223-0}{H223}{Flammable aerosol.}% +\mhchem@hp@ii{#3}{H224-0}{H224}{Extremely flammable liquid and vapour.}% +\mhchem@hp@ii{#3}{H225-0}{H225}{Highly flammable liquid and vapour.}% +\mhchem@hp@ii{#3}{H226-0}{H226}{Flammable liquid and vapour.}% +\mhchem@hp@ii{#3}{H228-0}{H228}{Flammable solid.}% +\mhchem@hp@ii{#3}{H240-0}{H240}{Heating may cause an explosion.}% +\mhchem@hp@ii{#3}{H241-0}{H241}{Heating may cause a fire or explosion.}% +\mhchem@hp@ii{#3}{H242-0}{H242}{Heating may cause a fire.}% +\mhchem@hp@ii{#3}{H250-0}{H250}{Catches fire spontaneously if exposed to air.}% +\mhchem@hp@ii{#3}{H251-0}{H251}{Self-heating: may catch fire.}% +\mhchem@hp@ii{#3}{H252-0}{H252}{Self-heating in large quantities; may catch fire.}% +\mhchem@hp@ii{#3}{H260-0}{H260}{In contact with water releases flammable gases which may ignite spontaneously.}% +\mhchem@hp@ii{#3}{H261-0}{H261}{In contact with water releases flammable gases.}% +\mhchem@hp@ii{#3}{H270-0}{H270}{May cause or intensify fire; oxidiser.}% +\mhchem@hp@ii{#3}{H271-0}{H271}{May cause fire or explosion; strong oxidiser.}% +\mhchem@hp@ii{#3}{H272-0}{H272}{May intensify fire; oxidiser.}% +\mhchem@hp@ii{#3}{H280-0}{H280}{Contains gas under pressure; may explode if heated.}% +\mhchem@hp@ii{#3}{H281-0}{H281}{Contains refrigerated gas; may cause cryogenic burns or injury.}% +\mhchem@hp@ii{#3}{H290-0}{H290}{May be corrosive to metals.}% +\mhchem@hp@ii{#3}{H300-0}{H300}{Fatal if swallowed.}% +\mhchem@hp@ii{#3}{H301-0}{H301}{Toxic if swallowed.}% +\mhchem@hp@ii{#3}{H302-0}{H302}{Harmful if swallowed.}% +\mhchem@hp@ii{#3}{H304-0}{H304}{May be fatal if swallowed and enters airways.}% +\mhchem@hp@ii{#3}{H310-0}{H310}{Fatal in contact with skin.}% +\mhchem@hp@ii{#3}{H311-0}{H311}{Toxic in contact with skin.}% +\mhchem@hp@ii{#3}{H312-0}{H312}{Harmful in contact with skin.}% +\mhchem@hp@ii{#3}{H314-0}{H314}{Causes severe skin burns and eye damage.}% +\mhchem@hp@ii{#3}{H315-0}{H315}{Causes skin irritation.}% +\mhchem@hp@ii{#3}{H317-0}{H317}{May cause an allergic skin reaction.}% +\mhchem@hp@ii{#3}{H318-0}{H318}{Causes serious eye damage.}% +\mhchem@hp@ii{#3}{H319-0}{H319}{Causes serious eye irritation.}% +\mhchem@hp@ii{#3}{H330-0}{H330}{Fatal if inhaled.}% +\mhchem@hp@ii{#3}{H331-0}{H331}{Toxic if inhaled.}% +\mhchem@hp@ii{#3}{H332-0}{H332}{Harmful if inhaled.}% +\mhchem@hp@ii{#3}{H334-0}{H334}{May cause allergy or asthma symptoms or breathing difficulties if inhaled.}% +\mhchem@hp@ii{#3}{H335-0}{H335}{May cause respiratory irritation.}% +\mhchem@hp@ii{#3}{H336-0}{H336}{May cause drowsiness or dizziness.}% +\mhchem@hp@ii{#3}{H340.0-0}{H340}{May cause genetic defects \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H340-error}{H340}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H340-0}{H340}{May cause genetic defects.}% +\mhchem@hp@ii{#3}{H340-1}{H340}{May cause genetic defects #1.}% +\mhchem@hp@ii{#3}{H341.0-0}{H341}{Suspected of causing genetic defects \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H341-error}{H341}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H341-0}{H341}{Suspected of causing genetic defects.}% +\mhchem@hp@ii{#3}{H341-1}{H341}{Suspected of causing genetic defects #1.}% +\mhchem@hp@ii{#3}{H350.0-0}{H350}{May cause cancer \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H350-error}{H350}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H350-0}{H350}{May cause cancer.}% +\mhchem@hp@ii{#3}{H350-1}{H350}{May cause cancer #1.}% +\mhchem@hp@ii{#3}{H350i-0}{H350i}{May cause cancer by inhalation.}% +\mhchem@hp@ii{#3}{H351.0-0}{H351}{Suspected of causing cancer \textless{}state route of exposure if it is conclusively proven that no other routs of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H351-error}{H351}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H351-0}{H351}{Suspected of causing cancer.}% +\mhchem@hp@ii{#3}{H351-1}{H351}{Suspected of causing cancer #1.}% +\mhchem@hp@ii{#3}{H360.0-0}{H360}{May damage fertility or the unborn child \textless{}state specific effect if known \textgreater{} \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H360-error}{H360}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H360-0}{H360}{May damage fertility or the unborn child.}% +\mhchem@hp@ii{#3}{H360-1}{H360}{May damage fertility or the unborn child #1.}% +\mhchem@hp@ii{#3}{H360F-0}{H360F}{May damage fertility.}% +\mhchem@hp@ii{#3}{H360D-0}{H360D}{May damage the unborn child.}% +\mhchem@hp@ii{#3}{H360f-0}{H360f}{Suspected of damaging fertility.}% +\mhchem@hp@ii{#3}{H360d-0}{H360d}{Suspected of damaging the unborn child.}% +\mhchem@hp@ii{#3}{H360FD-0}{H360FD}{May damage fertility. May damage the unborn child.}% +\mhchem@hp@ii{#3}{H360fd-0}{H360fd}{Suspected of damaging fertility. Suspected of damaging the unborn child.}% +\mhchem@hp@ii{#3}{H360Fd-0}{H360Fd}{May damage fertility. Suspected of damaging the unborn child.}% +\mhchem@hp@ii{#3}{H360Df-0}{H360Df}{May damage the unborn child. Suspected of damaging fertility.}% +\mhchem@hp@ii{#3}{H361.0-0}{H361}{Suspected of damaging fertility or the unborn child \textless{}state specific effect if known\textgreater{} \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H361-error}{H361}{\PackageError{hpstatement}{Too many arguments.\MessageBreak This statement has an optional text argument.\MessageBreak Please use no argument or exactly one with [].\MessageBreak Or use <number>.0 for the original form}{}}% +\mhchem@hp@ii{#3}{H361-0}{H361}{Suspected of damaging fertility or the unborn child.}% +\mhchem@hp@ii{#3}{H361-1}{H361}{Suspected of damaging fertility or the unborn child #1.}% +\mhchem@hp@ii{#3}{H362-0}{H362}{May cause harm to breast-fed children.}% +\mhchem@hp@ii{#3}{H370.0-0}{H370}{Causes damage to organs \textless{}or state all organs affected, if known\textgreater{} \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H370-error}{H370}{\PackageError{hpstatement}{This statement has two optional text arguments.\MessageBreak Please specify them with [][]. Or append .0\MessageBreak to the number for the original form}{}}% +\mhchem@hp@ii{#3}{H370-0}{H370}{Causes damage to organs.}% +\mhchem@hp@ii{#3}{H370-1}{H370}{Causes damage to #1.}% +\mhchem@hp@ii{#3}{H370-2}{H370}{Causes damage to #1 #2.}% +\mhchem@hp@ii{#3}{H371.0-0}{H371}{May cause damage to organs \textless{}or state all organs affected, if known\textgreater{} \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H371-error}{H371}{\PackageError{hpstatement}{This statement has two optional text arguments.\MessageBreak Please specify them with [][]. Or append .0\MessageBreak to the number for the original form}{}}% +\mhchem@hp@ii{#3}{H371-0}{H371}{May cause damage to organs.}% +\mhchem@hp@ii{#3}{H371-1}{H371}{May cause damage to #1.}% +\mhchem@hp@ii{#3}{H371-2}{H371}{May cause damage to #1 #2.}% +\mhchem@hp@ii{#3}{H372.0-0}{H372}{Causes damage to organs \textless{}or state all organs affected, if known\textgreater{} through prolonged or repeated exposure \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H372-error}{H372}{\PackageError{hpstatement}{This statement has two optional text arguments.\MessageBreak Please specify them with [][]. Or append .0\MessageBreak to the number for the original form}{}}% +\mhchem@hp@ii{#3}{H372-0}{H372}{Causes damage to organs through prolonged or repeated exposure.}% +\mhchem@hp@ii{#3}{H372-1}{H372}{Causes damage to #1 through prolonged or repeated exposure.}% +\mhchem@hp@ii{#3}{H372-2}{H372}{Causes damage to #1 through prolonged or repeated exposure #2.}% +\mhchem@hp@ii{#3}{H373.0-0}{H373}{May cause damage to organs \textless{}or state all organs affected, if known\textgreater{} through prolonged or repeated exposure \textless{}state route of exposure if it is conclusively proven that no other routes of exposure cause the hazard\textgreater{}.}% +\mhchem@hp@ii{#3}{H373-error}{H373}{\PackageError{hpstatement}{This statement has two optional text arguments.\MessageBreak Please specify them with [][]. Or append .0\MessageBreak to the number for the original form}{}}% +\mhchem@hp@ii{#3}{H373-0}{H373}{May cause damage to organs through prolonged or repeated exposure.}% +\mhchem@hp@ii{#3}{H373-1}{H373}{May cause damage to #1 through prolonged or repeated exposure.}% +\mhchem@hp@ii{#3}{H373-2}{H373}{May cause damage to #1 through prolonged or repeated exposure #2.}% +\mhchem@hp@ii{#3}{H300+H310-0}{H300\,+\,H310}{Fatal if swallowed or in contact with skin}% +\mhchem@hp@ii{#3}{H300+H330-0}{H300\,+\,H330}{Fatal if swallowed or if inhaled}% +\mhchem@hp@ii{#3}{H310+H330-0}{H310\,+\,H330}{Fatal in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H300+H310+H330-0}{H300\,+\,H310\,+\,H330}{Fatal if swallowed, in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H301+H311-0}{H301\,+\,H311}{Toxic if swallowed or in contact with skin}% +\mhchem@hp@ii{#3}{H301+H331-0}{H301\,+\,H331}{Toxic if swallowed or if inhaled}% +\mhchem@hp@ii{#3}{H311+H331-0}{H311\,+\,H331}{Toxic in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H301+H311+H331-0}{H301\,+\,H311\,+\,H331}{Toxic if swallowed, in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H302+H312-0}{H302\,+\,H312}{Harmful if swallowed or in contact with skin}% +\mhchem@hp@ii{#3}{H302+H332-0}{H302\,+\,H332}{Harmful if swallowed or if inhaled}% +\mhchem@hp@ii{#3}{H312+H332-0}{H312\,+\,H332}{Harmful in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H301+H312+H332-0}{H301\,+\,H312\,+\,H332}{Harmful if swallowed, in contact with skin or if inhaled}% +\mhchem@hp@ii{#3}{H400-0}{H400}{Very toxic to aquatic life.}% +\mhchem@hp@ii{#3}{H410-0}{H410}{Very toxic to aquatic life with long lasting effects.}% +\mhchem@hp@ii{#3}{H411-0}{H411}{Toxic to aquatic life with long lasting effects.}% +\mhchem@hp@ii{#3}{H412-0}{H412}{Harmful to aquatic life with long lasting effects.}% +\mhchem@hp@ii{#3}{H413-0}{H413}{May cause long lasting harmful effects to aquatic life.}% +\mhchem@hp@ii{#3}{H420-0}{H420}{+++}% +\mhchem@hp@ii{#3}{P101-0}{P101}{If medical advice is needed, have product container or label at hand.}% +\mhchem@hp@ii{#3}{P101.nolabel-error}{P101}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P101.nolabel-1}{P101}{If medical advice is needed, have product container or #1 at hand.}% +\mhchem@hp@ii{#3}{P102-0}{P102}{Keep out of reach of children.}% +\mhchem@hp@ii{#3}{P103-0}{P103}{Read label before use.}% +\mhchem@hp@ii{#3}{P103.nolabel-error}{P103}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P103.nolabel-1}{P103}{Read #1 before use.}% +\mhchem@hp@ii{#3}{P201-0}{P201}{Obtain special instructions before use.}% +\mhchem@hp@ii{#3}{P202-0}{P202}{Do not handle until all safety precautions have been read and understood.}% +\mhchem@hp@ii{#3}{P210.0-0}{P210}{Keep away from heat/sparks/open flames/hot surfaces. -- No smoking.}% +\mhchem@hp@ii{#3}{P210-error}{P210}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P210-1}{P210}{Keep away from #1. -- No smoking.}% +\mhchem@hp@ii{#3}{P210.1-0}{P210}{Keep away from heat. -- No smoking.}% +\mhchem@hp@ii{#3}{P210.2-0}{P210}{Keep away from sparks. -- No smoking.}% +\mhchem@hp@ii{#3}{P210.3-0}{P210}{Keep away from open flames. -- No smoking.}% +\mhchem@hp@ii{#3}{P210.4-0}{P210}{Keep away from hot surfaces. -- No smoking.}% +\mhchem@hp@ii{#3}{P211-0}{P211}{Do not spray on an open flame or other ignition source.}% +\mhchem@hp@ii{#3}{P220.0-0}{P220}{Keep/Store away from clothing/\textellipsis/combustible materials.}% +\mhchem@hp@ii{#3}{P220-error}{P220}{\PackageError{hpstatement}{Selection and selection/argument missing.\MessageBreak This statement has 1) a mandatory selection\MessageBreak and 2) a selection or text-argument.\MessageBreak Please append .1.1, ... to the number to make a\MessageBreak selection. Or append .1 or .2 with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P220.1.0-0}{P220}{Keep away from clothing/\textellipsis/combustible materials.}% +\mhchem@hp@ii{#3}{P220.1-error}{P220}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P220.1-1}{P220}{Keep away from #1.}% +\mhchem@hp@ii{#3}{P220.1.1-0}{P220}{Keep away from clothing.}% +\mhchem@hp@ii{#3}{P220.1.2-0}{P220}{Keep away from combustible materials.}% +\mhchem@hp@ii{#3}{P220.2.0-0}{P220}{Store away from clothing/\textellipsis/combustible materials.}% +\mhchem@hp@ii{#3}{P220.2-error}{P220}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P220.2-1}{P220}{Store away from #1.}% +\mhchem@hp@ii{#3}{P220.2.1-0}{P220}{Store away from clothing.}% +\mhchem@hp@ii{#3}{P220.2.2-0}{P220}{Store away from combustible materials.}% +\mhchem@hp@ii{#3}{P221.0-0}{P221}{Take any precaution to avoid mixing with combustibles\textellipsis}% +\mhchem@hp@ii{#3}{P221-error}{P221}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P221-1}{P221}{Take any precaution to avoid mixing with #1.}% +\mhchem@hp@ii{#3}{P221.1-0}{P221}{Take any precaution to avoid mixing with combustibles.}% +\mhchem@hp@ii{#3}{P222-0}{P222}{Do not allow contact with air.}% +\mhchem@hp@ii{#3}{P223-0}{P223}{Keep away from any possible contact with water, because of violent reaction and possible flash fire.}% +\mhchem@hp@ii{#3}{P230.0-0}{P230}{Keep wetted with\textellipsis}% +\mhchem@hp@ii{#3}{P230-error}{P230}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P230-1}{P230}{Keep wetted with #1.}% +\mhchem@hp@ii{#3}{P231-0}{P231}{Handle under inert gas.}% +\mhchem@hp@ii{#3}{P231+P232-0}{P231\,+\,P232}{Handle under inert gas. Protect from moisture.}% +\mhchem@hp@ii{#3}{P232-0}{P232}{Protect from moisture.}% +\mhchem@hp@ii{#3}{P233-0}{P233}{Keep container tightly closed.}% +\mhchem@hp@ii{#3}{P234-0}{P234}{Keep only in original container.}% +\mhchem@hp@ii{#3}{P235-0}{P235}{Keep cool.}% +\mhchem@hp@ii{#3}{P235+P410-0}{P235\,+\,P410}{Keep cool. Protect from sunlight.}% +\mhchem@hp@ii{#3}{P240-0}{P240}{Ground/bond container and receiving equipment.}% +\mhchem@hp@ii{#3}{P241.0-0}{P241}{Use explosion-proof electrical/ventilating/lighting/\textellipsis/equipment.}% +\mhchem@hp@ii{#3}{P241-error}{P241}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P241-1}{P241}{Use explosion-proof #1.}% +\mhchem@hp@ii{#3}{P241.1-0}{P241}{Use explosion-proof electrical equipment.}% +\mhchem@hp@ii{#3}{P241.2-0}{P241}{Use explosion-proof ventilating equipment.}% +\mhchem@hp@ii{#3}{P241.3-0}{P241}{Use explosion-proof lighting equipment.}% +\mhchem@hp@ii{#3}{P242-0}{P242}{Use only non-sparking tools.}% +\mhchem@hp@ii{#3}{P243-0}{P243}{Take precautionary measures against static discharge.}% +\mhchem@hp@ii{#3}{P244-0}{P244}{Keep reduction valves free from grease and oil.}% +\mhchem@hp@ii{#3}{P250.0-0}{P250}{Do not subject to grinding/shock/\textellipsis/friction.}% +\mhchem@hp@ii{#3}{P250-error}{P250}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P250-1}{P250}{Do not subject to #1.}% +\mhchem@hp@ii{#3}{P250.1-0}{P250}{Do not subject to grinding.}% +\mhchem@hp@ii{#3}{P250.2-0}{P250}{Do not subject to shock.}% +\mhchem@hp@ii{#3}{P250.3-0}{P250}{Do not subject to friction.}% +\mhchem@hp@ii{#3}{P251-0}{P251}{Pressurized container: Do not pierce or burn, even after use.}% +\mhchem@hp@ii{#3}{P260.0-0}{P260}{Do not breathe dust/fume/gas/mist/vapours/spray.}% +\mhchem@hp@ii{#3}{P260-error}{P260}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P260-1}{P260}{Do not breathe #1.}% +\mhchem@hp@ii{#3}{P260.1-0}{P260}{Do not breathe dust.}% +\mhchem@hp@ii{#3}{P260.2-0}{P260}{Do not breathe fume.}% +\mhchem@hp@ii{#3}{P260.3-0}{P260}{Do not breathe gas.}% +\mhchem@hp@ii{#3}{P260.4-0}{P260}{Do not breathe mist.}% +\mhchem@hp@ii{#3}{P260.5-0}{P260}{Do not breathe vapours.}% +\mhchem@hp@ii{#3}{P260.6-0}{P260}{Do not breathe spray.}% +\mhchem@hp@ii{#3}{P261-0}{P261}{Avoid breathing dust/fume/gas/mist/vapours/spray.}% +\mhchem@hp@ii{#3}{P262-0}{P262}{Do not get in eyes, on skin, or on clothing.}% +\mhchem@hp@ii{#3}{P263.0-0}{P263}{Avoid contact during pregnancy/while nursing.}% +\mhchem@hp@ii{#3}{P263-error}{P263}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P263-1}{P263}{Avoid contact #1.}% +\mhchem@hp@ii{#3}{P263.1-0}{P263}{Avoid contact during pregnancy.}% +\mhchem@hp@ii{#3}{P263.2-0}{P263}{Avoid contact while nursing.}% +\mhchem@hp@ii{#3}{P264.0-0}{P264}{Wash \textellipsis thoroughly after handling.}% +\mhchem@hp@ii{#3}{P264-error}{P264}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P264-1}{P264}{Wash #1 thoroughly after handling.}% +\mhchem@hp@ii{#3}{P270-0}{P270}{Do no eat, drink or smoke when using this product.}% +\mhchem@hp@ii{#3}{P271-0}{P271}{Use only outdoors or in a well-ventilated area.}% +\mhchem@hp@ii{#3}{P272-0}{P272}{Contaminated work clothing should not be allowed out of the workplace.}% +\mhchem@hp@ii{#3}{P273-0}{P273}{Avoid release to the environment.}% +\mhchem@hp@ii{#3}{P280.0-0}{P280}{Wear protective gloves/protective clothing/eye protection/face protection.}% +\mhchem@hp@ii{#3}{P280-error}{P280}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P280-1}{P280}{Wear #1.}% +\mhchem@hp@ii{#3}{P280.1-0}{P280}{Wear protective gloves.}% +\mhchem@hp@ii{#3}{P280.2-0}{P280}{Wear protective clothing.}% +\mhchem@hp@ii{#3}{P280.3-0}{P280}{Wear eye protection.}% +\mhchem@hp@ii{#3}{P280.4-0}{P280}{Wear face protection.}% +\mhchem@hp@ii{#3}{P281-0}{P281}{Use personal protective equipment as required.}% +\mhchem@hp@ii{#3}{P282.0-0}{P282}{Wear cold insulating gloves/face shield/eye protection.}% +\mhchem@hp@ii{#3}{P282-error}{P282}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P282-1}{P282}{Wear #1.}% +\mhchem@hp@ii{#3}{P282.1-0}{P282}{Wear cold insulating gloves.}% +\mhchem@hp@ii{#3}{P282.2-0}{P282}{Wear face shield.}% +\mhchem@hp@ii{#3}{P282.3-0}{P282}{Wear eye protection.}% +\mhchem@hp@ii{#3}{P283.0-0}{P283}{Wear fire/flame resistant/retardant clothing.}% +\mhchem@hp@ii{#3}{P283-error}{P283}{\PackageError{hpstatement}{Language-dependent argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak However, translations differ so much that you\MessageBreak have to state your selection as text argument [].\MessageBreak Read the manual for possible values.\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P283-1}{P283}{Wear #1 clothing.}% +\mhchem@hp@ii{#3}{P284-0}{P284}{Wear respiratory protection.}% +\mhchem@hp@ii{#3}{P285-0}{P285}{In case of inadequate ventilation wear respiratory protection.}% +\mhchem@hp@ii{#3}{P301-0}{P301}{IF SWALLOWED:}% +\mhchem@hp@ii{#3}{P301+P310-0}{P301\,+\,P310}{IF SWALLOWED: Immediately call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P301+P312-0}{P301\,+\,P312}{IF SWALLOWED: Call a POISON CENTER or doctor/physician if you feel unwell.}% +\mhchem@hp@ii{#3}{P301+P330+P331-0}{P301\,+\,P330\,+\,P331}{IF SWALLOWED: rinse mouth. Do NOT induce vomiting.}% +\mhchem@hp@ii{#3}{P302-0}{P302}{IF ON SKIN:}% +\mhchem@hp@ii{#3}{P302+P334.0-0}{P302\,+\,P334}{IF ON SKIN: Immerse in cool water/wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P302+P334-error}{P302\,+\,P334}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P302+P334-1}{P302\,+\,P334}{IF ON SKIN: #1.}% +\mhchem@hp@ii{#3}{P302+P334.1-0}{P302\,+\,P334}{IF ON SKIN: Immerse in cool water.}% +\mhchem@hp@ii{#3}{P302+P334.2-0}{P302\,+\,P334}{IF ON SKIN: Wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P302+P350-0}{P302\,+\,P350}{IF ON SKIN: Gently wash with plenty of soap and water.}% +\mhchem@hp@ii{#3}{P302+P352-0}{P302\,+\,P352}{IF ON SKIN: Wash with plenty of soap and water.}% +\mhchem@hp@ii{#3}{P303-0}{P303}{IF ON SKIN (or hair):}% +\mhchem@hp@ii{#3}{P303+P361+P353-0}{P303\,+\,P361\,+\,P353}{IF ON SKIN (or hair): Remove/Take off immediately all contaminated clothing. Rinse skin with water/shower.}% +\mhchem@hp@ii{#3}{P304-0}{P304}{IF INHALED:}% +\mhchem@hp@ii{#3}{P304+P340-0}{P304\,+\,P340}{IF INHALED: Remove victim to fresh air and keep at rest in a position comfortable for breathing.}% +\mhchem@hp@ii{#3}{P304+P341-0}{P304\,+\,P341}{IF INHALED: If breathing is difficult, remove victim to fresh air and keep at rest in a position comfortable for breathing.}% +\mhchem@hp@ii{#3}{P305-0}{P305}{IF IN EYES:}% +\mhchem@hp@ii{#3}{P305+P351+P338-0}{P305\,+\,P351\,+\,P338}{IF IN EYES: Rinse cautiously with water for several minutes. Remove contact lenses, if present and easy to do. Continue rinsing.}% +\mhchem@hp@ii{#3}{P306-0}{P306}{IF ON CLOTHING:}% +\mhchem@hp@ii{#3}{P306+P360-0}{P306\,+\,P360}{IF ON CLOTHING: rinse immediately contaminated clothing and skin with plenty of water before removing clothes.}% +\mhchem@hp@ii{#3}{P307-0}{P307}{IF exposed:}% +\mhchem@hp@ii{#3}{P307+P311-0}{P307\,+\,P311}{IF exposed: Call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P308-0}{P308}{IF exposed or concerned:}% +\mhchem@hp@ii{#3}{P308+P313-0}{P308\,+\,P313}{IF exposed or concerned: Get medical advice/attention.}% +\mhchem@hp@ii{#3}{P309-0}{P309}{IF exposed or if you feel unwell:}% +\mhchem@hp@ii{#3}{P309+P311-0}{P309\,+\,P311}{IF exposed or if you feel unwell: Call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P310-0}{P310}{Immediately call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P311-0}{P311}{Call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P312-0}{P312}{Call a POISON CENTER or doctor/physician if you feel unwell.}% +\mhchem@hp@ii{#3}{P313-0}{P313}{Get medical advice/attention.}% +\mhchem@hp@ii{#3}{P314-0}{P314}{Get medical advice/attention if you feel unwell.}% +\mhchem@hp@ii{#3}{P315-0}{P315}{Get immediate medical advice/attention.}% +\mhchem@hp@ii{#3}{P320.0-0}{P320}{Specific treatment is urgent (see \textellipsis on this label).}% +\mhchem@hp@ii{#3}{P320-error}{P320}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P320-1}{P320}{Specific treatment is urgent (see #1 on this label).}% +\mhchem@hp@ii{#3}{P320.nolabel-error}{P320}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P320.nolabel-1}{P320}{Specific treatment is urgent (see #1).}% +\mhchem@hp@ii{#3}{P321.0-0}{P321}{Specific treatment (see \textellipsis on this label).}% +\mhchem@hp@ii{#3}{P321-error}{P321}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P321-1}{P321}{Specific treatment (see #1 on this label).}% +\mhchem@hp@ii{#3}{P321.nolabel-error}{P321}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P321.nolabel-1}{P321}{Specific treatment (see #1).}% +\mhchem@hp@ii{#3}{P322.0-0}{P322}{Specific measures (see \textellipsis on this label).}% +\mhchem@hp@ii{#3}{P322-error}{P322}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P322-1}{P322}{Specific measures (see #1 on this label).}% +\mhchem@hp@ii{#3}{P322.nolabel-error}{P322}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P322.nolabel-1}{P322}{Specific measures (see #1).}% +\mhchem@hp@ii{#3}{P330-0}{P330}{Rinse mouth.}% +\mhchem@hp@ii{#3}{P331-0}{P331}{Do NOT induce vomiting.}% +\mhchem@hp@ii{#3}{P332-0}{P332}{If skin irritation occurs:}% +\mhchem@hp@ii{#3}{P332+P313-0}{P332\,+\,P313}{If skin irritation occurs: Get medical advice/attention.}% +\mhchem@hp@ii{#3}{P333-0}{P333}{If skin irritation or rash occurs:}% +\mhchem@hp@ii{#3}{P333+P313-0}{P333\,+\,P313}{If skin irritation or rash occurs: Get medical advice/attention.}% +\mhchem@hp@ii{#3}{P334.0-0}{P334}{Immerse in cool water/wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P334-error}{P334}{\PackageError{hpstatement}{Selection missing.\MessageBreak This statement requires a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P334.1-0}{P334}{Immerse in cool water.}% +\mhchem@hp@ii{#3}{P334.2-0}{P334}{Wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P335-0}{P335}{Brush off loose particles from skin.}% +\mhchem@hp@ii{#3}{P335+P334.0-0}{P335\,+\,P334}{Brush off loose particles from skin. Immerse in cool water/wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P335+P334-error}{P335\,+\,P334}{\PackageError{hpstatement}{Selection missing.\MessageBreak This statement requires a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P335+P334.1-0}{P335\,+\,P334}{Brush off loose particles from skin. Immerse in cool water.}% +\mhchem@hp@ii{#3}{P335+P334.2-0}{P335\,+\,P334}{Brush off loose particles from skin. Wrap in wet bandages.}% +\mhchem@hp@ii{#3}{P336-0}{P336}{Thaw frosted parts with lukewarm water. Do no rub affected area.}% +\mhchem@hp@ii{#3}{P337-0}{P337}{If eye irritation persists:}% +\mhchem@hp@ii{#3}{P337+P313-0}{P337\,+\,P313}{If eye irritation persists: Get medical advice/attention.}% +\mhchem@hp@ii{#3}{P338-0}{P338}{Remove contact lenses, if present and easy to do. Continue rinsing.}% +\mhchem@hp@ii{#3}{P340-0}{P340}{Remove victim to fresh air and keep at rest in a position comfortable for breathing.}% +\mhchem@hp@ii{#3}{P341-0}{P341}{If breathing is difficult, remove victim to fresh air and keep at rest in a position comfortable for breathing.}% +\mhchem@hp@ii{#3}{P342-0}{P342}{If experiencing respiratory symptoms:}% +\mhchem@hp@ii{#3}{P342+P311-0}{P342\,+\,P311}{If experiencing respiratory symptoms: Call a POISON CENTER or doctor/physician.}% +\mhchem@hp@ii{#3}{P350-0}{P350}{Gently wash with plenty of soap and water.}% +\mhchem@hp@ii{#3}{P351-0}{P351}{Rinse cautiously with water for several minutes.}% +\mhchem@hp@ii{#3}{P352-0}{P352}{Wash with plenty of soap and water.}% +\mhchem@hp@ii{#3}{P353-0}{P353}{Rinse skin with water/shower.}% +\mhchem@hp@ii{#3}{P360-0}{P360}{Rinse immediately contaminated clothing and skin with plenty of water before removing clothes.}% +\mhchem@hp@ii{#3}{P361-0}{P361}{Remove/Take off immediately all contaminated clothing.}% +\mhchem@hp@ii{#3}{P362-0}{P362}{Take off contaminated clothing and wash before reuse.}% +\mhchem@hp@ii{#3}{P363-0}{P363}{Wash contaminated clothing before reuse.}% +\mhchem@hp@ii{#3}{P370-0}{P370}{In case of fire:}% +\mhchem@hp@ii{#3}{P370+P376-0}{P370\,+\,P376}{In case of fire: Stop leak if safe to do so.}% +\mhchem@hp@ii{#3}{P370+P378.0-0}{P370\,+\,P378}{In case of fire: Use \textellipsis for extinction.}% +\mhchem@hp@ii{#3}{P370+P378-error}{P370\,+\,P378}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P370+P378-1}{P370\,+\,P378}{In case of fire: Use #1 for extinction.}% +\mhchem@hp@ii{#3}{P370+P380-0}{P370\,+\,P380}{In case of fire: Evacuate area.}% +\mhchem@hp@ii{#3}{P370+P380+P375-0}{P370\,+\,P380\,+\,P375}{In case of fire: Evacuate area. Fight fire remotely due to the risk of explosion.}% +\mhchem@hp@ii{#3}{P371-0}{P371}{In case of major fire and large quantities:}% +\mhchem@hp@ii{#3}{P371+P380+P375-0}{P371\,+\,P380\,+\,P375}{In case of major fire and large quantities: Evacuate area. Fight fire remotely due to the risk of explosion.}% +\mhchem@hp@ii{#3}{P372-0}{P372}{Explosion risk in case of fire.}% +\mhchem@hp@ii{#3}{P373-0}{P373}{DO NOT fight fire when fire reaches explosives.}% +\mhchem@hp@ii{#3}{P374-0}{P374}{Fight fire with normal precautions from a reasonable distance.}% +\mhchem@hp@ii{#3}{P375-0}{P375}{Fight fire remotely due to the risk of explosion.}% +\mhchem@hp@ii{#3}{P376-0}{P376}{Stop leak if safe to do so.}% +\mhchem@hp@ii{#3}{P377-0}{P377}{Leaking gas fire: Do not extinguish, unless leak can be stopped safely.}% +\mhchem@hp@ii{#3}{P378.0-0}{P378}{Use \textellipsis for extinction.}% +\mhchem@hp@ii{#3}{P378-error}{P378}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P378-1}{P378}{Use #1 for extinction.}% +\mhchem@hp@ii{#3}{P380-0}{P380}{Evacuate area.}% +\mhchem@hp@ii{#3}{P381-0}{P381}{Eliminate all ignition sources if safe to do so.}% +\mhchem@hp@ii{#3}{P390-0}{P390}{Absorb spillage to prevent material damage.}% +\mhchem@hp@ii{#3}{P391-0}{P391}{Collect spillage.}% +\mhchem@hp@ii{#3}{P401.0-0}{P401}{Store \textellipsis}% +\mhchem@hp@ii{#3}{P401-error}{P401}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P401-1}{P401}{Store #1.}% +\mhchem@hp@ii{#3}{P402-0}{P402}{Store in a dry place.}% +\mhchem@hp@ii{#3}{P402+P404-0}{P402\,+\,P404}{Store in a dry place. Store in a closed container.}% +\mhchem@hp@ii{#3}{P403-0}{P403}{Store in a well-ventilated place.}% +\mhchem@hp@ii{#3}{P403+P233-0}{P403\,+\,P233}{Store in a well-ventilated place. Keep container tightly closed.}% +\mhchem@hp@ii{#3}{P403+P235-0}{P403\,+\,P235}{Store in a well-ventilated place. Keep cool.}% +\mhchem@hp@ii{#3}{P404-0}{P404}{Store in a closed container.}% +\mhchem@hp@ii{#3}{P405-0}{P405}{Store locked up.}% +\mhchem@hp@ii{#3}{P406.0-0}{P406}{Store in corrosive resistant/\textellipsis container with a resistant inner liner.}% +\mhchem@hp@ii{#3}{P406-error}{P406}{\PackageError{hpstatement}{Selection or argument missing.\MessageBreak This statement has a mandatory selection.\MessageBreak Please append .1, .2, ... to the number to make a\MessageBreak selection. Or supply a text as argument with [].\MessageBreak Or use .0 for the original form}{}}% +\mhchem@hp@ii{#3}{P406-1}{P406}{Store in #1 container with a resistant inner liner.}% +\mhchem@hp@ii{#3}{P406.1-0}{P406}{Store in corrosive resistant container with a resistant inner liner.}% +\mhchem@hp@ii{#3}{P407-0}{P407}{Maintain air gap between stacks/pallets.}% +\mhchem@hp@ii{#3}{P410-0}{P410}{Protect from sunlight.}% +\mhchem@hp@ii{#3}{P410+P403-0}{P410\,+\,P403}{Protect from sunlight. Store in a well-ventilated place.}% +\mhchem@hp@ii{#3}{P410+P412-0}{P410\,+\,P412}{Protect from sunlight. Do no expose to temperatures exceeding 50\textdegree{}C/122\textdegree{}F.}% +\mhchem@hp@ii{#3}{P411-0}{P411}{Store at temperatures not exceeding \textellipsis\textdegree{}C/\textellipsis\textdegree{}F.}% +\mhchem@hp@ii{#3}{P411+P235-0}{P411\,+\,P235}{Store at temperatures not exceeding \textellipsis\textdegree{}C/\textellipsis\textdegree{}F. Keep cool.}% +\mhchem@hp@ii{#3}{P412-0}{P412}{Do not expose to temperatures exceeding 50\textdegree{}C/122\textdegree{}F.}% +\mhchem@hp@ii{#3}{P413.0-0}{P413}{Store bulk masses greater than \textellipsis\,kg/\textellipsis\,lbs at temperatures not exceeding \textellipsis\textdegree{}C/\textellipsis\textdegree{}F.}% +\mhchem@hp@ii{#3}{P413-error}{P413}{\PackageError{hpstatement}{Selection and mandatory arguments missing.\MessageBreak This statement has a mandatory selection. Please\MessageBreak append .1 or .2 to the number (or use .0 for the\MessageBreak original form). Also, supply two arguments with\MessageBreak [][]}{}}% +\mhchem@hp@ii{#3}{P413.1-error}{P413}{\PackageError{hpstatement}{This statement has two mandatory text arguments.\MessageBreak Please specify them with [][]}{}}% +\mhchem@hp@ii{#3}{P413.1-2}{P413}{Store bulk masses greater than #1\,kg at temperatures not exceeding #2\textdegree{}C.}% +\mhchem@hp@ii{#3}{P413.2-error}{P413}{\PackageError{hpstatement}{This statement has two mandatory text arguments.\MessageBreak Please specify them with [][]}{}}% +\mhchem@hp@ii{#3}{P413.2-2}{P413}{Store bulk masses greater than #1\,lbs at temperatures not exceeding #2\textdegree{}F.}% +\mhchem@hp@ii{#3}{P420-0}{P420}{Store away from other materials.}% +\mhchem@hp@ii{#3}{P422.0-0}{P422}{Store contents under \textellipsis}% +\mhchem@hp@ii{#3}{P422-error}{P422}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P422-1}{P422}{Store contents under #1.}% +\mhchem@hp@ii{#3}{P501.0.0-0}{P501}{Dispose of contents/container to \textellipsis}% +\mhchem@hp@ii{#3}{P501.0-error}{P501}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P501.0-1}{P501}{Dispose of contents/container to #1.}% +\mhchem@hp@ii{#3}{P501-error}{P501}{\PackageError{hpstatement}{Selection and mandatory argument missing.\MessageBreak This statement has a mandatory selection. Please\MessageBreak append .1 or .2 to the number (or use .0 for the\MessageBreak original form). Also, supply an argument with []\MessageBreak (or use an additional .0 for the original\MessageBreak form)}{}}% +\mhchem@hp@ii{#3}{P501.1.0-0}{P501}{Dispose of contents to \textellipsis}% +\mhchem@hp@ii{#3}{P501.1-error}{P501}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P501.1-1}{P501}{Dispose of contents to #1.}% +\mhchem@hp@ii{#3}{P501.2.0-0}{P501}{Dispose of container to \textellipsis}% +\mhchem@hp@ii{#3}{P501.2-error}{P501}{\PackageError{hpstatement}{One argument required.\MessageBreak This statement has a mandatory text argument.\MessageBreak Please specify one with []. Or use .0 for the\MessageBreak original form}{}}% +\mhchem@hp@ii{#3}{P501.2-1}{P501}{Dispose of container to #1.}% +} diff --git a/Master/texmf-dist/tex/latex/mhchem/mhchem.sty b/Master/texmf-dist/tex/latex/mhchem/mhchem.sty index 831a8cf29a6..9f8d8f2fc34 100644 --- a/Master/texmf-dist/tex/latex/mhchem/mhchem.sty +++ b/Master/texmf-dist/tex/latex/mhchem/mhchem.sty @@ -1,13 +1,12 @@ %% mhchem.sty -%% Copyright 2004-2011 M.a-r.t-i.n H.e-n.s-e.l +%% Copyright 2004-2013 Martin Hensel % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License version 1.3c -% which can be found at -% http://www.latex-project.org/lppl/lppl-1-3c.txt +% which is included as lppl-1-3c.txt. % % This work has the LPPL maintenance status "maintained". -% The Current Maintainer of this work is M.a-r.t-i.n H.e-n.s-e.l. +% The Current Maintainer of this work is Martin Hensel. % % ( In order to fight spam, the maintainer's contact ) % ( information is "encrypted" with ROT13. ) @@ -25,319 +24,636 @@ % | Treznal % `---------- % -% This work consists of the files mhchem.sty, rsphrase.sty, -% mhchem.pdf and legal.txt. +% This work consists of all files listed in manifest.txt. % % -\ProvidesPackage{mhchem}[2011/06/03 v3.11 for typesetting chemical formulae] +\ProvidesPackage{mhchem}[2013/06/17 v3.12 for typesetting chemical formulae] \RequirePackage{ifthen} \RequirePackage{calc}[1998/07/07] \RequirePackage{twoopt} \RequirePackage{amsmath} \RequirePackage{keyval} \RequirePackage{graphics} +\RequirePackage{pdftexcmds} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% misc %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareMathSymbol{\mhchem@hyphen}{0}{operators}{45} +\def\mhchem@END{\mhchem@END} +\def\mhchem@macro{} +\def\mhchem@empty{} +\def\mhchem@gobble#1{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \cee %%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand*{\cee}[1]{% - \ifnum 1<\mhchem@option@version% - \def\mhchem@ce@out{}% - {\mhchem@ce@v#1\mhchem@empty\\\mhchem@END\mhchem@ENDEND}% - \ensuremath{% - \mhchem@ce@out% - }% - \else% - \PackageWarningNoLine{mhchem}{% - The \string\cee{} command of mhchem is only available\MessageBreak - when you secify [version=2] or greater}% - \fi% + \def\mhchem@ce@out{}% + {\mhchem@cee@i#1\mhchem@empty\\\mhchem@END\mhchem@ENDEND}% + \ensuremath{% + \mhchem@ce@out% + }% }% -\def\mhchem@ce@v#1\\#2#3\mhchem@ENDEND{% +\def\mhchem@cee@i#1\\#2#3\mhchem@ENDEND{% \ifx\mhchem@END#2% - \mhchem@ce@vii#1&\mhchem@END\mhchem@ENDEND% + \mhchem@cee@ii#1&\mhchem@END\mhchem@ENDEND% \else% - \mhchem@ce@vii#1&\mhchem@END\mhchem@ENDEND% + \mhchem@cee@ii#1&\mhchem@END\mhchem@ENDEND% \g@addto@macro\mhchem@ce@out{\\}% - \mhchem@ce@v#2#3\mhchem@ENDEND% + \mhchem@cee@i#2#3\mhchem@ENDEND% \fi% } -\long\def\mhchem@ce@vii#1#3\mhchem@ENDEND{% +\long\def\mhchem@cee@ii#1#3\mhchem@ENDEND{% \ifx\mhchem@END#2% - \g@addto@macro\mhchem@ce@out{\ce@main{#1}}% + \g@addto@macro\mhchem@ce@out{\ce{#1}}% \else% - \g@addto@macro\mhchem@ce@out{\ce@main{#1}}% + \g@addto@macro\mhchem@ce@out{\ce{#1}}% \g@addto@macro\mhchem@ce@out{&}% - \mhchem@ce@vii#2#3\mhchem@ENDEND% - \fi% + \mhchem@cee@ii#2#3\mhchem@ENDEND% + \fi% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% global helpers %%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\mhchem@appendToks#1#2{% + #1=\expandafter{\the#1#2}% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% \ce %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% - -\def\mhchem@protect{\protect\noexpand\protect}% - -\newcommand\ce[1]{\mhchem@ce@xiii{\mhchem@ce@viii#1 \mhchem@END\mhchem@ENDEND}}% -% -% -\def\mhchem@ce@viii#1 #2\mhchem@ENDEND{% - \ifx\mhchem@END#2% - \ifx\@empty#1\@empty - \else - \mhchem@ce@x#1\mhchem@END\mhchem@ENDEND% - \fi - \else% - \mhchem@ce@x#1\mhchem@END\mhchem@ENDEND% - \space\mhchem@ce@viii#2\mhchem@ENDEND% - \fi -} -\def\mhchem@ce@x#1#2\mhchem@ENDEND{% - \ifx\@empty#1\@empty% - \mhchem@ce@xi{}\mhchem@END\mhchem@ENDEND% - \else%\ifx\mhchem@END#1\else - \mhchem@ce@xi#1\mhchem@END\mhchem@ENDEND% - \fi%\fi% - \ifx\mhchem@END#2% +\DeclareRobustCommand\ce[1]{\mhchem@ce{#1}} + +\edef\mhchem@char@lbrace{\string{} %} +\begingroup% + \catcode`\-=12% + \gdef\mhchem@char@hyphen@other{-}% + \catcode`\-=\active% + \gdef\mhchem@char@hyphen@active{-}% + \catcode`\<=12% + \gdef\mhchem@char@lt@other{<}% + \catcode`\<=\active% + \gdef\mhchem@char@lt@active{<}% + \catcode`\>=12% + \gdef\mhchem@char@gt@other{>}% + \catcode`\>=\active% + \gdef\mhchem@char@gt@active{>}% + \catcode`\^=7% + \gdef\mhchem@char@caret@super{^}% + \catcode`\^=\active% + \gdef\mhchem@char@caret@active{^}% + \catcode`\==12% + \gdef\mhchem@char@equal@other{=}% + \catcode`\==\active% + \gdef\mhchem@char@equal@active{=}% +\endgroup% + +\newtoks\mhchem@ce@result% +\newtoks\mhchem@ce@part% +\newcommand*\mhchem@ce[1]{% + \bgroup% + \def\mhchem@ce@state{s}% + \chardef\mhchem@ce@substate=0\relax% + \mhchem@ce@result={}% + \mhchem@ce@part={}% + \mhchem@ce@continue#1\mhchem@END% + \ifnum 1<\mhchem@option@version% + \the\mhchem@ce@result% \else% - \mhchem@ce@x#2\mhchem@ENDEND% + \ensuremath{\the\mhchem@ce@result}% \fi% + \egroup% } -\def\mhchem@ce@xi#1#2\mhchem@ENDEND{% - \ifx\mhchem@END#2% - \ifx\@empty#1\@empty% - {}% - \else\if\noexpand#1##% - \mhchem@protect\tbond% +\def\mhchem@ce@i{% + \ifx\mhchem@END\mhchem@ce@lookahead% + \mhchem@ce@output% + \let\mhchem@ce@action\mhchem@gobble% + \else\if\space\noexpand\mhchem@ce@lookahead% + \if s\mhchem@ce@state% \else% - \mhchem@protect#1% - \fi\fi% + \mhchem@ce@output% + \mhchem@ce@part={}% + \def\mhchem@ce@state{s}% + \fi% + \let\mhchem@ce@action\mhchem@ce@gobbleNextSpace% + \else\if\mhchem@char@lbrace\noexpand\mhchem@ce@lookahead% + \if s\mhchem@ce@state% + \def\mhchem@ce@state{c}% + \fi% + \def\mhchem@ce@action{\mhchem@ce@appendNextGroup{\mhchem@ce@part}}% \else% - {\mhchem@ce@xii#1#2}% - \fi% + \if s\mhchem@ce@state% + \expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=1\relax% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=1\relax% + \else\expandafter\ifx\mhchem@char@lt@other\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=7\relax% + \else\expandafter\ifx\mhchem@char@lt@active\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=7\relax% + \else\if +\noexpand\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=50\relax% + \else\if (\noexpand\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=101\relax% + \else\if v\noexpand\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=106\relax% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=107\relax% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@ce@lookahead% + \def\mhchem@ce@state{a}% + \chardef\mhchem@ce@substate=107\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi% + \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% + \else\if c\mhchem@ce@state% + \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% + \else\if a\mhchem@ce@state% + \def\mhchem@ce@action{\mhchem@ce@appendNextToken{\mhchem@ce@part}}% + \ifnum 1=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=2\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=2\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi% + \else\ifnum 2=\mhchem@ce@substate\relax% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=3\relax% + \else\ifnum 7=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=8\relax% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=8\relax% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=19\relax% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=19\relax% + \else\expandafter\ifx\mhchem@char@lt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=24\relax% + \else\expandafter\ifx\mhchem@char@lt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=24\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi\fi\fi\fi\fi% + \else\ifnum 8=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=10\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=10\relax% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=12\relax% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=12\relax% + \else% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=9\relax% + \fi\fi\fi\fi% + \else\ifnum 10=\mhchem@ce@substate\relax% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=11\relax% + \else\ifnum 12=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=13\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=13\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi% + \else\ifnum 13=\mhchem@ce@substate\relax% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=14\relax% + \else\ifnum 19=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=20\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=20\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi% + \else\ifnum 20=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=22\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=22\relax% + \else% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=21\relax% + \fi\fi% + \else\ifnum 22=\mhchem@ce@substate\relax% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=23\relax% + \else\ifnum 24=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=25\relax% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=25\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi% + \else\ifnum 25=\mhchem@ce@substate\relax% + \expandafter\ifx\mhchem@char@gt@other\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=26\relax% + \else\expandafter\ifx\mhchem@char@gt@active\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=26\relax% + \else% + \def\mhchem@ce@state{c}% + \fi\fi% + \else\ifnum 26=\mhchem@ce@substate\relax% + \mhchem@ce@part={}% + \chardef\mhchem@ce@substate=27\relax% + \else\ifnum 50=\mhchem@ce@substate\relax% + \mhchem@ce@output% + \mhchem@ce@part={}% + \def\mhchem@ce@state{c}% + \else\ifnum 101=\mhchem@ce@substate\relax% + \if v\noexpand\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=102\relax% + \else% + \def\mhchem@ce@state{c}% + \fi% + \else\ifnum 102=\mhchem@ce@substate\relax% + \if )\noexpand\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=103\relax% + \else% + \def\mhchem@ce@state{c}% + \fi% + \else\ifnum 103=\mhchem@ce@substate\relax% + \def\mhchem@ce@state{c}% + \else\ifnum 104=\mhchem@ce@substate\relax% + \if )\noexpand\mhchem@ce@lookahead% + \chardef\mhchem@ce@substate=105\relax% + \else% + \def\mhchem@ce@state{c}% + \fi% + \else\ifnum 105=\mhchem@ce@substate\relax% + \def\mhchem@ce@state{c}% + \else\ifnum 106=\mhchem@ce@substate\relax% + \def\mhchem@ce@state{c}% + \else\ifnum 107=\mhchem@ce@substate\relax% + \def\mhchem@ce@state{c}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi% + \fi\fi\fi% + \mhchem@ce@action% } -\def\mhchem@ce@xii#1\mhchem@END{\mhchem@ce@viii#1 \mhchem@END\mhchem@ENDEND}% -\DeclareRobustCommand\mhchem@ce@xiii[1]{% - \bgroup% - \ifnum 4>\mhchem@option@version% - \def\hyphen{\mhchem@hyphen}% +\def\mhchem@ce@continue{% + \futurelet\mhchem@ce@lookahead\mhchem@ce@i% +}% +\def\mhchem@ce@gobbleNextToken#1{% + \mhchem@ce@continue% +}% +\def\mhchem@ce@gobbleNextSpace{% + % thanks to de.comp.text.tex + \def\mhchem@ce@gobbleNextSpace@i{% + \mhchem@ce@continue}% + \afterassignment\mhchem@ce@gobbleNextSpace@i% + \let\mhchem@ce@gobbleNextSpace@ii= % The space is the trick! +} +\def\mhchem@ce@appendNextToken#1#2{% + \mhchem@appendToks{#1}{#2}% + \mhchem@ce@continue% +} +\def\mhchem@ce@appendNextGroup#1#2{% + \mhchem@appendToks{#1}{{#2}}% + \mhchem@ce@continue% +} +\def\mhchem@ce@output{% + \if a\mhchem@ce@state% + \ifnum 2=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yields[][]}% + \else\ifnum 3=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yields\the\mhchem@ce@part}% + \else\ifnum 8=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yieldsLeft[][]}% + \else\ifnum 9=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yieldsLeft\the\mhchem@ce@part}% + \else\ifnum 10=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@mesomerism[][]}% + \else\ifnum 11=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@mesomerism\the\mhchem@ce@part}% + \else\ifnum 13=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@yieldsLeftRight[][]}% + \else\ifnum 14=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@yieldsLeftRight\the\mhchem@ce@part}% + \else\ifnum 20=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibrium[][]}% + \else\ifnum 21=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibrium\the\mhchem@ce@part}% + \else\ifnum 22=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibriumRight[][]}% + \else\ifnum 23=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibriumRight\the\mhchem@ce@part}% + \else\ifnum 26=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\mhchem@arrow@equilibriumLeft[][]}% + \else\ifnum 27=\mhchem@ce@substate\relax% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@arrow@equilibriumLeft\the\mhchem@ce@part}% + \else\ifnum 50=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}+{}}}% + \else\ifnum 103=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\downarrow}{}}}% + \else\ifnum 105=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\uparrow}{}}}% + \else\ifnum 106=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\downarrow}{}}}% + \else\ifnum 107=\mhchem@ce@substate\relax% + \mhchem@appendToks{\mhchem@ce@result}{\ensuremath{{}\mathop{\uparrow}{}}}% + \else% + \def\mhchem@ce@state{c}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi% + \if c\mhchem@ce@state% + \expandafter\mhchem@appendToks\expandafter{\expandafter\mhchem@ce@result\expandafter}\expandafter{\expandafter\mhchem@cf\expandafter{\the\mhchem@ce@part}}% \fi% - \def\mhchem@protect{\noexpand}% - \edef\mhchem@tmp{#1}% - % - \expandafter\ce@main\expandafter{\mhchem@tmp}% - \egroup } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% arrows %%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% - -\DeclareRobustCommand*{\ce@main}[1]{% - \bgroup% - \ifnum 1<\mhchem@option@version% - \ifmmode\else\def\mhchem@option@alwaystextmode{1}\fi% - \fi% - \def\bond{}\def\sbond{}\def\dbond{}\def\tbond{}% - \ifx\@empty#1\@empty\else% - \ifmmode\else\mhchem@option@textFont\fi% - \ensuremath{% - \mhchem@ce@xx#1 \mhchem@END\mhchem@ENDEND% - }% - \fi% - \egroup% -}% +\def\mhchem@arrow@minlength{{2em}}% -\def\mhchem@ce@xx#1 #2\mhchem@ENDEND{% - \mhchem@ce@i#1\mhchem@empty\mhchem@ENDEND% - \ifx\mhchem@END#2% - \else% - \mhchem@ce@xx#2 \mhchem@ENDEND% - \fi% -} -\def\mhchem@ce@i#1#2\mhchem@ENDEND{% - \ifcat a#1 {\mhchem@ce@ii{#1#2}}% - \else\ifx 1#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 2#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 3#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 4#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 5#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 6#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 7#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 8#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 9#1{\mhchem@ce@ii{#1#2}}% - \else\ifx 0#1{\mhchem@ce@ii{#1#2}}% - \else\ifx (#1{\mhchem@ce@ii{#1#2}}% - \else\ifx [#1{\mhchem@ce@ii{#1#2}}% - \else\ifx \{#1{\mhchem@ce@ii{#1#2}}% - \else\ifx ^#1{\mhchem@ce@ii{#1#2}}% - \else\if ^#1{\mhchem@ce@ii{#1#2}}% - \else\ifx _#1{\mhchem@ce@ii{#1#2}}% - \else\ifx $#1{\mhchem@ce@ii{#1#2}}% - \else\ifx -#1{\ifx\@empty#2\@empty#1\else\mhchem@ce@dash#2\mhchem@END\fi}% - \else\if\noexpand#1<{\ifx\@empty#2\@empty#1\else\mhchem@ce@lt#2\mhchem@END\fi}% - \else\ifx +#1+ \mhchem@ce@ii{#2}% - \else\ifx \protect#1{\mhchem@ce@ii{#1#2}}% - % - \else\ifx\ce#1 \mhchem@ce@i #2 \mhchem@END% - \else\ifx\cf#1 \mhchem@cf{#2}% - \else\ifx\cmath#1 \mhchem@ce@cmath#2\mhchem@END% - \else\ifx\bond#1{\mhchem@ce@ii{#1#2}}% - \else\ifx\sbond#1{\mhchem@ce@ii{#1#2}}% - \else\ifx\dbond#1{\mhchem@ce@ii{#1#2}}% - \else\ifx\tond#1{\mhchem@ce@ii{#1#2}}% - \else\ifx\label#1 \mhchem@ce@label#2\mhchem@END% - \else\ifx\tag#1 \mhchem@ce@tag#2\mhchem@END% - % - \else #1#2% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% -} - -% -\def\mhchem@ce@dash#1#2\mhchem@END{% - \if\noexpand#1>% - {}\ifx\@empty#2\@empty\mhchem@gives#2% - \else\mhchem@ce@deploycommand{mhchem@gives}#2{}\mhchem@END\fi{}% - \else% - -#1#2% - \fi% -}% -\def\mhchem@ce@lt#1#2\mhchem@END{% - \ifx =#1\mhchem@ce@equal#2\mhchem@END% - \else\if\noexpand#1<\mhchem@ce@equiL#2\mhchem@END% - \else\ifx-#1% - \ifx\@empty#2\@empty% - {}\mhchem@givesleft#2{}% +%%% Deployment of arrow macros +\newtoks\mhchem@arrow@deployType +\def\mhchem@arrow@deploy#1{% + \if [#1% + \ifnum 3<\mhchem@option@version% + \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType T\endcsname[}% \else% - \mhchem@ce@dashtwo#2\mhchem@END% + \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType M\endcsname[}% \fi% + \else\if T#1% + \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType T\endcsname}% + \else\if C#1% + \edef\mhchem@arrow@deploy@action{\noexpand\csname mhchem@arrow@\the\mhchem@arrow@deployType C\endcsname}% \else% - <#1#2% + \def\mhchem@arrow@deploy@action{}% + \PackageError{mhchem}{Arrow type not supported}% \fi\fi\fi% + \mhchem@arrow@deploy@action% } -\def\mhchem@ce@equal#1#2\mhchem@END{% - \if\noexpand#1>% (<=)>... - \ifx\@empty#2\@empty{}\mhchem@equilibrium#2{}% - \else% - \mhchem@ce@equi#2\mhchem@END% - \fi% - \else% - <=#1#2% - \fi% +\def\mhchem@arrow@yields{% + \mhchem@arrow@deployType={yields}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\def\mhchem@ce@equi#1#2\mhchem@END{% - \if\noexpand#1>% - {}\ifx\@empty#2\@empty\mhchem@equilibriumRight#2% - \else\mhchem@ce@deploycommand{mhchem@equilibriumRight}#2{}\mhchem@END\fi{}% - \else% - {}\mhchem@ce@deploycommand{mhchem@equilibrium}#1#2{}\mhchem@END{}% - \fi% +\def\mhchem@arrow@yieldsLeft{% + \mhchem@arrow@deployType={yieldsLeft}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\def\mhchem@ce@equiL#1#2\mhchem@END{% - \ifx =#1\mhchem@ce@equiLi#2\mhchem@END% - \else<=#1#2% - \fi% +\def\mhchem@arrow@yieldsLeftRight{% + \mhchem@arrow@deployType={yieldsLeftRight}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\def\mhchem@ce@equiLi#1#2\mhchem@END{% - \if\noexpand#1>% (<<=)> - {}\ifx\@empty#2\@empty\mhchem@equilibriumLeft#2% - \else\mhchem@ce@deploycommand{mhchem@equilibriumLeft}#2{}\mhchem@END\fi{}% - \else% - <<=#1#2% - \fi% +\def\mhchem@arrow@mesomerism{% + \mhchem@arrow@deployType={mesomerism}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\def\mhchem@ce@dashtwo#1#2\mhchem@END{% - \if\noexpand#1>% - {}\ifx\@empty#2\@empty\mhchem@mesomeric#2% - \else\mhchem@ce@deploycommand{mhchem@mesomeric}#2{}\mhchem@END\fi{}% - \else% - {}\mhchem@ce@deploycommand{mhchem@givesleft}#1#2{}\mhchem@END{}% - \fi% +\def\mhchem@arrow@equilibrium{% + \mhchem@arrow@deployType={equilibrium}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\def\mhchem@ce@deploycommand#1#2#3\mhchem@END{% - \ifx T#2\csname#1T\endcsname#3% - \else\ifx C#2\csname#1C\endcsname#3% - \else\csname#1\endcsname#2#3\fi\fi% +\def\mhchem@arrow@equilibriumRight{% + \mhchem@arrow@deployType={equilibriumRight}% + \futurelet\lookahead\mhchem@arrow@deploy% } - -\def\mhchem@ce@ii#1{% - \mhchem@ce@iii#1% +\def\mhchem@arrow@equilibriumLeft{% + \mhchem@arrow@deployType={equilibriumLeft}% + \futurelet\lookahead\mhchem@arrow@deploy% } -\newtoks\tok@mhchem@ce@iii% -\def\mhchem@ce@iii@tmp@i{}% -\def\mhchem@ce@iii@tmp@ii{}% -\def\mhchem@ce@iii#1\mhchem@empty{% - \tok@mhchem@ce@iii{#1}% - \edef\mhchem@ce@iii@tmp@i{\the\tok@mhchem@ce@iii}% - % - \def\mhchem@ce@iii@tmp@ii{(^)}% - \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% - {}\mathop{\uparrow}{}% - \else\def\mhchem@ce@iii@tmp@ii{^}% - \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% - {}\mathop{\uparrow}{}% - \else\def\mhchem@ce@iii@tmp@ii{(v)}% - \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% - {}\mathop{\downarrow}{}% - \else\def\mhchem@ce@iii@tmp@ii{v}% - \ifx\mhchem@ce@iii@tmp@i\mhchem@ce@iii@tmp@ii% - {}\mathop{\downarrow}{}% - \else% - \mhchem@cf{#1}% - \fi\fi\fi\fi% -}% - -\def\mhchem@ce@cmath#1#2\mhchem@END{\mhchem@cmath{#1}\mhchem@cf{#2}} -\def\mhchem@ce@label#1#2\mhchem@END{\label{#1}\mhchem@cf{#2}} -\def\mhchem@ce@tag#1#2\mhchem@END{\tag{#1}\mhchem@cf{#2}} -%%%%%%%%%%%%% -%%% arrows - -\newlength{\mhchem@arrowminlength} -\setlength{\mhchem@arrowminlength}{1em} -%TODO: adapt min length to each of the math modes +%%% Definition of arrows (with math text) for font/pgf/pgf-filled +\newcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{} +\newcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{} +\newcommand\mhchem@definearrows[1]{% + %%% font + \ifthenelse{\equal{#1}{font}}{% + \renewcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow{5}{9}{##1}{5}{9}{##2}{\mhchem@arrow@minlength}{\rightarrowfill@}{}}}% + \renewcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow{9}{5}{##1}{9}{5}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}{}}}% + \renewcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}% + {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\rightarrowfill@}$}}}% + {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{\hphantom{##2}}{\mhchem@arrow@minlength}{\rightarrowfill@}$}}}% + \@ifempty{##1}% + {\raisebox{-.44ex}{$\mhchem@ext@arrow{9}{9}{}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}$}}% + {\raisebox{-.44ex}{$\mhchem@ext@arrow{9}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftarrowfill@}$}}% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow{9}{9}{##1}{9}{9}{##2}{\mhchem@arrow@minlength}{\leftrightarrowfill@}{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}% + {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow{5}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}}% + {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{5}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{9}{9}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{5}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##1}{% if only above, center optically; if above AND below, center exactly to avoid misalignment + \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondownfill@}$}}% + \@ifempty{##2}% + {\raisebox{.22ex}{$\mhchem@ext@arrow{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% + {\raisebox{.22ex}{$\mhchem@ext@arrow{0}{0}{}{9}{5}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% + }{% + \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow{5}{9}{\hphantom{##1}\kern-1em}{9}{9}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondownfill@}$}}% + \@ifempty{##2}% + {\raisebox{.22ex}{$\mhchem@ext@arrow{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% + {\raisebox{.22ex}{$\mhchem@ext@arrow{9}{9}{##1}{9}{9}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonupfill@}$}}% + }% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}{% + \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonupfill@}$}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{5}{9}{\hphantom{##1}\kern1em}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + }{% + \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow{9}{9}{##1}{5}{9}{\hphantom{##2}\kern-1em}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonupfill@}$}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow{9}{9}{\hphantom{##1}\kern1em}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondownfill@}$}}% + }% + }{}}}% + %%% pgf + }{\ifthenelse{\equal{#1}{pgf} \or \equal{#1}{pgf-filled}}{% + \renewcommandtwoopt*\mhchem@arrow@yieldsM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow@pgf{5}{9}{##1}{5}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}{}}}% + \renewcommandtwoopt*\mhchem@arrow@yieldsLeftM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow@pgf{9}{5}{##1}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}{}}}% + \renewcommandtwoopt*\mhchem@arrow@yieldsLeftRightM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}% + {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}$}}}% + {\rlap{\raisebox{.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightarrow@pgf}$}}}% + \@ifempty{##1}% + {\raisebox{-.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}$}}% + {\raisebox{-.44ex}{$\mhchem@ext@arrow@pgf{9}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftarrow@pgf}$}}% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@mesomerismM[2][][]{% + \ensuremath{{}\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftrightarrow@pgf}{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}% + {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{##1}{9}{9}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}}% + {\rlap{\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{5}{\hphantom{##2}}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumRightM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##1}{% if only above, center optically; if above AND below, center exactly to avoid misalignment + \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondown@pgf}$}}% + \@ifempty{##2}% + {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% + {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% + }{% + \rlap{\raisebox{-.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}\kern-1em}{9}{9}{##2}{\mhchem@arrow@minlength-1em}{\mhchem@leftharpoondown@pgf}$}}% + \@ifempty{##2}% + {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% + {\raisebox{.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{##1}{9}{9}{\hphantom{##2}\kern1em}{\mhchem@arrow@minlength}{\mhchem@rightharpoonup@pgf}$}}% + }% + }{}}}% + \renewcommandtwoopt*\mhchem@arrow@equilibriumLeftM[2][][]{% + \ensuremath{{}\mathrel{% + \@ifempty{##2}{% + \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{5}{9}{##1}{0}{0}{}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonup@pgf}$}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{5}{9}{\hphantom{##1}\kern1em}{0}{0}{}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + }{% + \rlap{\raisebox{.22ex}{$\kern0.5em\mhchem@ext@arrow@pgf{9}{9}{##1}{5}{9}{\hphantom{##2}\kern-1em}{\mhchem@arrow@minlength-1em}{\mhchem@rightharpoonup@pgf}$}}% + \@ifempty{##1}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{0}{0}{}{9}{5}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + {\raisebox{-.22ex}{$\mhchem@ext@arrow@pgf{9}{9}{\hphantom{##1}\kern1em}{9}{9}{##2}{\mhchem@arrow@minlength}{\mhchem@leftharpoondown@pgf}$}}% + }% + }{}}}% + \ifthenelse{\equal{#1}{pgf}}{% + \let\mhchem@rightarrow@pgf\mhchem@rightarrow@pgfopen% + \let\mhchem@leftarrow@pgf\mhchem@leftarrow@pgfopen% + \let\mhchem@leftrightarrow@pgf\mhchem@leftrightarrow@pgfopen% + \let\mhchem@rightharpoonup@pgf\mhchem@rightharpoonup@pgfopen% + \let\mhchem@leftharpoondown@pgf\mhchem@leftharpoondown@pgfopen% + }{% + \let\mhchem@rightarrow@pgf\mhchem@rightarrow@pgffilled% + \let\mhchem@leftarrow@pgf\mhchem@leftarrow@pgffilled% + \let\mhchem@leftrightarrow@pgf\mhchem@leftrightarrow@pgffilled% + \let\mhchem@rightharpoonup@pgf\mhchem@rightharpoonup@pgffilled% + \let\mhchem@leftharpoondown@pgf\mhchem@leftharpoondown@pgffilled% + }% + }{% + \PackageError{mhchem}{The option font=#1 is not supported}% + }}% +} -%%% for font arrows -%%%%% idea taken from http://www.texnik.de/misc/harpoon.phtml +%%% Arrow compositions with text or chemistry +\newtoks\mhchem@arrow@params% +\def\mhchem@arrow@setParamsT#1#2{% + \mhchem@arrow@params={}% + \@ifnotempty{#1}{\mhchem@appendToks{\mhchem@arrow@params}{[\text{#1}]}}% + \@ifnotempty{#2}{\mhchem@appendToks{\mhchem@arrow@params}{[\text{#2}]}}% +}% +\def\mhchem@arrow@setParamsC#1#2{% + \mhchem@arrow@params={}% + \@ifnotempty{#1}{\mhchem@appendToks{\mhchem@arrow@params}{[\ce{#1}]}}% + \@ifnotempty{#2}{\mhchem@appendToks{\mhchem@arrow@params}{[\ce{#2}]}}% +}% +\newcommandtwoopt*\mhchem@arrow@yieldsT[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@yieldsM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@yieldsC[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@yieldsM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@yieldsLeftT[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@yieldsLeftM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@yieldsLeftC[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@yieldsLeftM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@yieldsLeftRightT[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@yieldsLeftRightM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@yieldsLeftRightC[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@yieldsLeftRightM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@mesomerismT[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@mesomerismM\the\mhchem@arrow@params}% +\newcommandtwoopt*\mhchem@arrow@mesomerismC[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@mesomerismM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumT}[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumC}[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumRightT}[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumRightM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumRightC}[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumRightM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumLeftT}[2][][]{% + \mhchem@arrow@setParamsT{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumLeftM\the\mhchem@arrow@params}% +\newcommandtwoopt*{\mhchem@arrow@equilibriumLeftC}[2][][]{% + \mhchem@arrow@setParamsC{#1}{#2}% + \expandafter\mhchem@arrow@equilibriumLeftM\the\mhchem@arrow@params}% + +%%% Font arrows +\def\mhchem@ext@arrow#1#2#3#4#5#6#7#8{% adaption of amsmath's ext@arrow + \mathrel{% + \mathop{\makebox[#7]{#8\displaystyle}}% + \limits% + \@ifnotempty{#3}{^{\mkern#1mu#3\mkern#2mu}}% + \@ifnotempty{#6}{_{\mkern#4mu#6\mkern#5mu}}% + }% +} \def\mhchem@rightharpoonupfill@{\arrowfill@\relbar\relbar\rightharpoonup} \def\mhchem@leftharpoondownfill@{\arrowfill@\leftharpoondown\relbar\relbar} -\newcommand*\mhchem@xrightleftharpoons[2][]{% + +%%% pgf arrows +\newlength{\mhchem@arrowlength@pgf} +\def\mhchem@ext@arrow@pgf#1#2#3#4#5#6#7#8{% + \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% + \mhchem@ext@arrow{#1}{#2}{#3}{#4}{#5}{#6}{#7}{\rightarrowfill@}% + }}}% \mathrel{% - \rlap{\protect\raisebox{.22ex}{$\ext@arrow 3399\mhchem@rightharpoonupfill@{}{\mhchem@mathbox[#1]{#2}}$}}% - \raisebox{-.22ex}{$\ext@arrow 3399\mhchem@leftharpoondownfill@{#1}{\hphantom{#2}}$}}}% -\newsavebox\mhchem@arrows@box% -\newcommand*\mhchem@xlongrightshortleftharpoons[2][]{\mathrel{% - \sbox{\mhchem@arrows@box}% - {$\mkern9mu\ext@arrow 3399\mhchem@leftharpoondownfill@% - {#1}{\hphantom{#2}\mkern-6mu\mkern-12mu}$}% - \rlap{\protect\raisebox{-.22ex}{\usebox{\mhchem@arrows@box}}}% - \protect\raisebox{.22ex}{$\ext@arrow 3399\mhchem@rightharpoonupfill@% - {\hphantom{\usebox{\mhchem@arrows@box}}\mkern-6mu}{#2}$}% - }} -\newcommand*\mhchem@xshortrightlongleftharpoons[2][]{\mathrel{% - \sbox{\mhchem@arrows@box}% - {$\mkern9mu\ext@arrow 3399\mhchem@rightharpoonupfill@% - {\hphantom{#1}\mkern-6mu\mkern-12mu}{#2}$}% - \rlap{\protect\raisebox{.22ex}{\usebox{\mhchem@arrows@box}}}% - \protect\raisebox{-.22ex}{$\ext@arrow 3399\mhchem@leftharpoondownfill@% - {#1}{\hphantom{\usebox{\mhchem@arrows@box}}\mkern-6mu}$}% - }} -%\newcommand*\mhchem@xleftrightarrow[2][]{\ext@arrow 3095\leftrightarrowfill@{#1}{#2}} - - -%%% for pgf arrows -\newcommand*\mhchem@rightarrow@pgf[1]{% + \mathop{\kern0.7pt#8{\mhchem@arrowlength@pgf-1.8pt}\kern0.7pt}% + \limits% + \@ifnotempty{#3}{^{\mkern#1mu#3\mkern#2mu}}% + \@ifnotempty{#6}{_{\mkern#4mu#6\mkern#5mu}}% + }% +}% +\newcommand*\mhchem@rightarrow@pgfopen[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] @@ -346,7 +662,7 @@ arc (110:162:0.6ex); \end{tikzpicture}% }% -\newcommand*\mhchem@leftarrow@pgf[1]{% +\newcommand*\mhchem@leftarrow@pgfopen[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] @@ -355,47 +671,34 @@ arc (-70:-18:0.6ex); \end{tikzpicture}% }% -\newcommand*\mhchem@leftrightarrow@pgf[1]{% +\newcommand*\mhchem@leftrightarrow@pgfopen[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] - (0cm,0.575ex) - arc (70:18:0.6ex) arc (18:70:0.6ex) - arc (-70:-18:0.6ex) arc (-18:-70:0.6ex) - -- ++(#1,0cm) - arc (250:198:0.6ex) arc (198:250:0.6ex) - arc (110:162:0.6ex); + (0cm,0.575ex) + arc (70:18:0.6ex) arc (18:70:0.6ex) + arc (-70:-18:0.6ex) arc (-18:-70:0.6ex) + -- ++(#1,0cm) + arc (250:198:0.6ex) arc (198:250:0.6ex) + arc (110:162:0.6ex); \end{tikzpicture}% }% -\newcommand*\mhchem@leftrightharpoon@pgf[1]{% +\newcommand*\mhchem@rightharpoonup@pgfopen[1]{% \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); - \draw[cap=round, join=round, line width=0.09ex] - (0cm,0.575ex+0.22ex) -- ++(#1,0cm) arc (250:198:0.9ex); - \draw[cap=round, join=round, line width=0.09ex] - (#1,0.575ex-0.22ex) -- ++(-#1,0cm) arc (70:18:0.9ex); - \end{tikzpicture}% -}% -\newcommand*\mhchem@longrightshortleftharpoons@pgf[1]{% - \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); - \draw[cap=round, join=round, line width=0.09ex] - (0.0cm,0.575ex+0.22ex) -- ++(#1,0cm) arc (250:198:0.9ex); + \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] - (#1+0.5em-1em,0.575ex-0.22ex) -- (0.5em,0.575ex-0.22ex) arc (70:18:0.9ex); + (0cm,0.575ex) -- ++(#1,0cm) arc (250:198:0.6ex); \end{tikzpicture}% -}% -\newcommand*\mhchem@shortrightlongleftharpoons@pgf[1]{% +}% +\newcommand*\mhchem@leftharpoondown@pgfopen[1]{% \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); - \draw[cap=round, join=round, line width=0.09ex] - (0.5em,0.575ex+0.22ex) -- ++(#1-1em,0cm) arc (250:198:0.9ex); + \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex] - (#1,0.575ex-0.22ex) -- ++(-#1,0cm) arc (70:18:0.9ex); + (0cm,0.575ex) arc (70:18:0.6ex) arc (18:70:0.6ex) + -- ++(#1,0cm); \end{tikzpicture}% }% -%%% for pgf-filled arrows \newcommand*\mhchem@rightarrow@pgffilled[1]{% \begin{tikzpicture}[baseline]% \draw[use as bounding box] (0,0) (#1,0.85ex); @@ -426,253 +729,45 @@ \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] - (#1,0.575ex) - -- ++(-0.6ex,0.2ex) -- ++(0.15ex,-0.2ex) - -- ++(-0.15ex,-0.2ex) - -- cycle; - \filldraw[cap=round, join=round, line width=0.09ex] (0cm,0.575ex) -- ++(0.6ex,0.2ex) -- ++(-0.15ex,-0.2ex) -- ++(+0.15ex,-0.2ex) - -- cycle; - \end{tikzpicture}% -}% -\newcommand*\mhchem@leftrightharpoon@pgffilled[1]{% - \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); - \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0cm,0.575ex+0.22ex) -- ++(#1,0cm); - \filldraw[cap=round, join=round, line width=0.09ex] - (#1,0.575ex+0.22ex) - -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) -- cycle; - \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0cm,0.575ex-0.22ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] - (0cm,0.575ex-0.22ex) - -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) + (#1,0.575ex) + -- ++(-0.6ex,0.2ex) -- ++(0.15ex,-0.2ex) + -- ++(-0.15ex,-0.2ex) -- cycle; \end{tikzpicture}% -}% -\newcommand*\mhchem@longrightshortleftharpoons@pgffilled[1]{% +}% +\newcommand*\mhchem@rightharpoonup@pgffilled[1]{% \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); + \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0cm,0.575ex+0.22ex) -- ++(#1,0cm); + (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] - (#1,0.575ex+0.22ex) + (#1,0.575ex) -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) -- cycle; - \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0.5em,0.575ex-0.22ex) -- ++(#1-1em,0cm); - \filldraw[cap=round, join=round, line width=0.09ex] - (0.5em,0.575ex-0.22ex) - -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) - -- cycle; \end{tikzpicture}% -}% -\newcommand*\mhchem@shortrightlongleftharpoons@pgffilled[1]{% +}% +\newcommand*\mhchem@leftharpoondown@pgffilled[1]{% \begin{tikzpicture}[baseline]% - \draw[use as bounding box] (0,0) (#1,1ex); - \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0.5em,0.575ex+0.22ex) -- ++(#1-1em,0cm); - \filldraw[cap=round, join=round, line width=0.09ex] - (#1-0.5em,0.575ex+0.22ex) - -- ++(-0.6ex,0.25ex) -- ++(0.15ex,-0.25ex) - -- cycle; + \draw[use as bounding box] (0,0) (#1,0.85ex); \draw[cap=round, join=round, line width=0.09ex, shorten >=0.01ex] - (0cm,0.575ex-0.22ex) -- ++(#1,0cm); + (0cm,0.575ex) -- ++(#1,0cm); \filldraw[cap=round, join=round, line width=0.09ex] - (0cm,0.575ex-0.22ex) + (0cm,0.575ex) -- ++(0.6ex,-0.25ex) -- ++(-0.15ex,0.25ex) -- cycle; \end{tikzpicture}% }% -\newlength{\mhchem@arrowlength@pgf} -\newlength{\mhchem@arrowminlength@pgf} -%TODO: use \mhchem@arrowminlength -\def\mhchem@labeledarrow@pgf#1#2#3#4#5#6#7{% 1-4 muskips 5 arrow 6 text above 7 below - \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% - \mkern#3mu% - \mathop{}% - \limits% - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }}}% - % - \setlength\mhchem@arrowminlength@pgf{10pt+0.5em}% - \ifthenelse{\equal{mhchem@longrightshortleftharpoons@pgf}{#5}}{ - \setlength\mhchem@arrowminlength@pgf{1.85em}% - \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% - \mkern#3mu% - \mathop{}% - \limits% - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - \hspace{1em}% %% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }}}% - }{}% - \ifthenelse{\equal{mhchem@shortrightlongleftharpoons@pgf}{#5}}{ - \setlength\mhchem@arrowminlength@pgf{1.85em}% - \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% - \mkern#3mu% - \mathop{}% - \limits% - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - \hspace{1em}% %% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }}}% - }{}% - \ifthenelse{\equal{mhchem@longrightshortleftharpoons@pgffilled}{#5}}{ - \setlength\mhchem@arrowminlength@pgf{1.85em}% - \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% - \mkern#3mu% - \mathop{}% - \limits% - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - \hspace{1em}% %% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }}}% - }{}% - \ifthenelse{\equal{mhchem@shortrightlongleftharpoons@pgffilled}{#5}}{ - \setlength\mhchem@arrowminlength@pgf{1.85em}% - \setlength\mhchem@arrowlength@pgf{\widthof{\ensuremath{% - \mkern#3mu% - \mathop{}% - \limits% - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - \hspace{1em}% %% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }}}% - }{}% - % - \ifdim\mhchem@arrowlength@pgf<\mhchem@arrowminlength@pgf% - \setlength\mhchem@arrowlength@pgf{\mhchem@arrowminlength@pgf}% - \fi% - \mathrel{\mkern#3mu\mathop{\csname#5\endcsname{\mhchem@arrowlength@pgf}% - }% - \limits - \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi% - #7\if0#2\else\mkern#2mu\fi}}% - \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi% - #6\if0#2\else\mkern#2mu\fi}}% - \mkern#4mu% - }%} -}% - -\newcommandtwoopt*\mhchem@gives[2][][]{} -\newcommandtwoopt*\mhchem@givesleft[2][][]{} -\newcommandtwoopt*\mhchem@mesomeric[2][][]{} -\newcommandtwoopt*\mhchem@equilibrium[2][][]{} -\newcommandtwoopt*\mhchem@equilibriumRight[2][][]{} -\newcommandtwoopt*\mhchem@equilibriumLeft[2][][]{} - -\newcommand\mhchem@definearrows[1]{% - %%% font - \ifthenelse{\equal{#1}{font}}{% - \renewcommandtwoopt*\mhchem@gives[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% - \xrightarrow% - [{##2}]% - {##1}}}% - \renewcommandtwoopt*\mhchem@givesleft[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% - \xleftarrow% - [{##2}]% - {##1}}}% - \renewcommandtwoopt*\mhchem@mesomeric[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% - \ext@arrow 3399\leftrightarrowfill@% - {##2}% - {##1}}}% - \renewcommandtwoopt*{\mhchem@equilibrium}[2][\hspace{\mhchem@arrowminlength}][]{\ensuremath{% - \mhchem@xrightleftharpoons% - [{##2}]% - {##1}}}% - \renewcommandtwoopt*{\mhchem@equilibriumRight}[2][\hphantom{\makebox[\mhchem@arrowminlength]{}}][]{\ensuremath{% - \mhchem@xlongrightshortleftharpoons% - [{##2}]% - {##1}}}% - \renewcommandtwoopt*{\mhchem@equilibriumLeft}[2][][\hspace{\mhchem@arrowminlength}]{\ensuremath{% - \mhchem@xshortrightlongleftharpoons% - [{##2}]% - {##1}}}% - }{%%% pgf - \ifthenelse{\equal{#1}{pgf}}{% - \renewcommandtwoopt*\mhchem@gives[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{1.5}{5}{1.5}{1}{mhchem@rightarrow@pgf}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@givesleft[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{5}{1.5}{1}{1.5}{mhchem@leftarrow@pgf}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@mesomeric[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{5}{5}{1}{1}{mhchem@leftrightarrow@pgf}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibrium[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@leftrightharpoon@pgf}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibriumRight[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@longrightshortleftharpoons@pgf}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibriumLeft[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{6}{6}{1}{1}{mhchem@shortrightlongleftharpoons@pgf}{##2}{##1}}}% - }{%%% pgf-filled - \ifthenelse{\equal{#1}{pgf-filled}}{% - \renewcommandtwoopt*\mhchem@gives[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{1.5}{7}{1.5}{1}{mhchem@rightarrow@pgffilled}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@givesleft[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{7}{1.5}{1}{1.5}{mhchem@leftarrow@pgffilled}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@mesomeric[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@leftrightarrow@pgffilled}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibrium[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@leftrightharpoon@pgffilled}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibriumRight[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@longrightshortleftharpoons@pgffilled}{##2}{##1}}}% - \renewcommandtwoopt*\mhchem@equilibriumLeft[2][][]% - {\ensuremath{\mhchem@labeledarrow@pgf{7}{7}{1}{1}{mhchem@shortrightlongleftharpoons@pgffilled}{##2}{##1}}}% - }{% - \PackageError{mhchem}{The option font=#1 is not supported}% - }% - }}% -} - -\newcommandtwoopt*\mhchem@givesT[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@gives[\text{#1}][\text{#2}]}% -\newcommandtwoopt*\mhchem@givesC[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@gives[\ce@main{#1}][\ce@main{#2}]}% -\newcommandtwoopt*\mhchem@givesleftT[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@givesleft[\text{#1}][\text{#2}]}% -\newcommandtwoopt*\mhchem@givesleftC[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@givesleft[\ce@main{#1}][\ce@main{#2}]}% -\newcommandtwoopt*\mhchem@mesomericT[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@mesomeric[\text{#1}][\text{#2}]}% -\newcommandtwoopt*\mhchem@mesomericC[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@mesomeric[\ce@main{#1}][\ce@main{#2}]}% -\newcommandtwoopt*{\mhchem@equilibriumT}[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@equilibrium[\text{#1}][\text{#2}]} -\newcommandtwoopt*{\mhchem@equilibriumC}[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@equilibrium[\ce@main{#1}][\ce@main{#2}]} -\newcommandtwoopt*{\mhchem@equilibriumRightT}[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@equilibriumRight[\text{#1}][\text{#2}]} -\newcommandtwoopt*{\mhchem@equilibriumRightC}[2][\hspace{\mhchem@arrowminlength}][]% - {\mhchem@equilibriumRight[\ce@main{#1}][\ce@main{#2}]} -\newcommandtwoopt*{\mhchem@equilibriumLeftT}[2][][\hspace{\mhchem@arrowminlength}]% - {\mhchem@equilibriumLeft[\text{#1}][\text{#2}]} -\newcommandtwoopt*{\mhchem@equilibriumLeftC}[2][][\hspace{\mhchem@arrowminlength}]% - {\mhchem@equilibriumLeft[\ce@main{#1}][\ce@main{#2}]} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% bonds %%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%% -%%% bonds %%% -% \newlength\mhchem@bondwidth% \newlength\mhchem@bondheight% \newlength\mhchem@smallbondwidth@tmpA% @@ -694,46 +789,47 @@ \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}\unskip% \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}% \resizebox{\mhchem@smallbondwidth}{\mhchem@bondheight}{\sbond}}% - \phantom{\sbond}} + \phantom{\sbond}}% \def\mhchem@bond#1{% - % - \if ##\noexpand#1% - \tbond% - \else\ifx \tbond#1% + \ifnum\pdf@strcmp{#1}{-}=0% + \sbond% + \else\ifnum\pdf@strcmp{#1}{=}=0% + \dbond% + \else\ifnum\pdf@strcmp{#1}{##}=0% \tbond% - \else% - \ifthenelse{\equal{#1}{-}}{\sbond}{% - \ifthenelse{\equal{#1}{=}}{\dbond}{% - \ifthenelse{\equal{#1}{~}}{% + \else\ifnum\pdf@strcmp{#1}{~}=0% \mhchem@setbondwidth% - \mhchem@halfbond}{% - \ifthenelse{\equal{#1}{~-}}{% + \mhchem@halfbond% + \else\ifnum\pdf@strcmp{#1}{~-}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.2ex}{\mhchem@halfbond}}% - \protect\raisebox{-.2ex}{\sbond}}{% - \ifthenelse{\equal{#1}{~--}}{% + \protect\raisebox{-.2ex}{\sbond}% + \else\ifnum\pdf@strcmp{#1}{~--}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% - \protect\raisebox{-.4ex}{\sbond}}{% - \ifthenelse{\equal{#1}{~=}}{% + \protect\raisebox{-.4ex}{\sbond}% + \else\ifnum\pdf@strcmp{#1}{~=}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\mhchem@halfbond}}% \rlap{\sbond}% - \protect\raisebox{-.4ex}{\sbond}}{% - \ifthenelse{\equal{#1}{-~-}}{% + \protect\raisebox{-.4ex}{\sbond}% + \else\ifnum\pdf@strcmp{#1}{-~-}=0% \mhchem@setbondwidth% \rlap{\protect\raisebox{.4ex}{\sbond}}% \rlap{\mhchem@halfbond}% - \protect\raisebox{-.4ex}{\sbond}}{% - \ifthenelse{\equal{#1}{...}}{{\cdot}{\cdot}{\cdot}}{% - \ifthenelse{\equal{#1}{....}}{{\cdot}{\cdot}{\cdot}{\cdot}}{% - \ifthenelse{\equal{#1}{->}}{{\rightarrow}}{% - \ifthenelse{\equal{#1}{<-}}{{\leftarrow}}{% - % - \PackageError{mhchem}{unknown bond type in \string\bond (#1)}% - }}}}}}}}}}}% - \fi\fi% + \protect\raisebox{-.4ex}{\sbond}% + \else\ifnum\pdf@strcmp{#1}{...}=0% + {\cdot}{\cdot}{\cdot}% + \else\ifnum\pdf@strcmp{#1}{....}=0% + {\cdot}{\cdot}{\cdot}{\cdot}% + \else\ifnum\pdf@strcmp{#1}{->}=0% + {\rightarrow}% + \else\ifnum\pdf@strcmp{#1}{<-}=0% + {\leftarrow}% + \else + \PackageError{mhchem}{Unknown bond type in \string\bond (#1)}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -742,7 +838,6 @@ \newtoks\mhchem@cf@result% \newcommand*\mhchem@cf[2][]{% \bgroup% - %%% \def\sbond{{\ensuremath{-}}}% \ifnum 2=\mhchem@option@version% \let\bond\sbond% @@ -753,7 +848,6 @@ \DeclareRobustCommand\tbond{\rlap{\protect\raisebox{.4ex}{\sbond}}% \rlap{\sbond}\protect\raisebox{-.4ex}{\sbond}}% \def\hyphen{\mhchem@hyphen}% - %%% \ifmmode\else\def\mhchem@option@alwaystextmode{1}\fi% \if 1\mhchem@option@alwaystextmode% \edef\mhchem@mathOrText##1{\noexpand\text{##1}}% @@ -768,70 +862,45 @@ \fi% \fi% \ifmmode\else\mhchem@option@textFont\fi% - %%% \def\mhchem@cf@state{s}% - % - % - % - % - % - % - % - % - % - % \def\mhchem@cf@startedWithBond{0}% - %%% \mhchem@cf@outputReset% \mhchem@cf@result={}% - %%% \mhchem@cf@continue#2\mhchem@END% - %%% - % - % \ifthenelse{\equal{#1}{}}% {% - \ensuremath{\the\mhchem@cf@result}% + \ensuremath{\the\mhchem@cf@result}% }{% \ensuremath{\overset{#1}{\the\mhchem@cf@result}}% }% - %TODO: insert kerning if full stop (or similar) follows superscript - %\@ifnextchar,{\kern-0.2em}{} ??% \egroup% }% \def\mhchem@cf@i{% - % - % - %%% \ifx\mhchem@END\mhchem@cf@lookahead% \if -\mhchem@cf@state% \ifnum 4>\mhchem@option@version% - \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup -}% + \mhchem@appendToks{\mhchem@cf@sup}{-}% \else% \if 0\mhchem@cf@startedWithBond% - \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup -}% + \mhchem@appendToks{\mhchem@cf@sup}{-}% \else% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\sbond}% + \mhchem@appendToks{\mhchem@cf@result}{\sbond}% \fi% \fi% - \fi% + \else\if 1\mhchem@cf@state% + \def\mhchem@cf@state{9}% + \fi\fi% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \let\mhchem@cf@action\mhchem@gobble% \else\ifx\relax\mhchem@cf@lookahead% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\ifx\protect\mhchem@cf@lookahead% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - %%% \else% -% -% -% -% \if -\mhchem@cf@state% - % \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\sbond}% + \mhchem@appendToks{\mhchem@cf@result}{\sbond}% \def\mhchem@cf@state{+}% \fi% \if s\mhchem@cf@state% @@ -841,25 +910,22 @@ \else\ifx \}\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\ifx\bond\mhchem@cf@lookahead% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% + \def\mhchem@cf@state{p}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% @@ -894,7 +960,16 @@ \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% - \else\if -\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@lookahead% + \ifnum 1<\mhchem@option@version% + \def\mhchem@cf@state{-}% + \def\mhchem@cf@startedWithBond{1}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else% + \def\mhchem@cf@state{+}% + \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% + \fi% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \def\mhchem@cf@startedWithBond{1}% @@ -920,13 +995,16 @@ \else\if *\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% @@ -943,16 +1021,16 @@ \fi% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if C\mhchem@cf@state% - \if\mhchem@lbracechar\mhchem@cf@lookahead% + \if\mhchem@char@lbrace\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \fi% \def\mhchem@cf@state{c}% \else\if c\mhchem@cf@state% - \if\mhchem@lbracechar\mhchem@cf@lookahead% + \if\mhchem@char@lbrace\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@result}}% \else% \def\mhchem@cf@state{s}% @@ -967,29 +1045,26 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\ifx\bond\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{p}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% @@ -1006,22 +1081,9 @@ \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \fi% \else\if ,\mhchem@cf@lookahead% - \ifnum 4>\mhchem@option@version% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{F}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else% - \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{{,}}}% - \fi% + \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@amount}{{,}}}% \else\if .\mhchem@cf@lookahead% - \ifnum 4>\mhchem@option@version% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{s}% - \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% - {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% - \else% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \fi% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% \else\if |\mhchem@cf@lookahead% \PackageWarning{mhchem}{The symbol | is not allowed here}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% @@ -1046,13 +1108,17 @@ \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% @@ -1066,38 +1132,37 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if a\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifx \}\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\ifx\bond\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% + \def\mhchem@cf@state{e}% + \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% + \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% - \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% + \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% @@ -1128,7 +1193,15 @@ \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% - \else\if -\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@lookahead% + \ifnum 1<\mhchem@option@version% + \def\mhchem@cf@state{-}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else% + \def\mhchem@cf@state{+}% + \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% + \fi% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% @@ -1152,12 +1225,16 @@ \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@state{2}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \def\mhchem@cf@action{\mhchem@cf@appendNextGroupAsMath{% \mhchem@cf@element}}% @@ -1170,7 +1247,7 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if 2\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% @@ -1180,32 +1257,31 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\ifx\bond\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% - \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% + \mhchem@appendToks{\mhchem@cf@sup}{,}% + \fi% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% + \def\mhchem@cf@state{e}% + \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% + \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% @@ -1237,7 +1313,15 @@ \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% - \else\if -\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@lookahead% + \ifnum 1<\mhchem@option@version% + \def\mhchem@cf@state{-}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else% + \def\mhchem@cf@state{+}% + \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% + \fi% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% @@ -1269,13 +1353,17 @@ \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% @@ -1293,7 +1381,7 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if e\mhchem@cf@state% \def\mhchem@cf@state{+}% \if $\mhchem@cf@lookahead% @@ -1347,32 +1435,31 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\ifx\bond\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% \def\mhchem@cf@state{e}% \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% - \mhchem@cf@sup=\expandafter{\the\mhchem@cf@sup ,}% + \mhchem@appendToks{\mhchem@cf@sup}{,}% + \fi% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% + \def\mhchem@cf@state{e}% + \expandafter\ifx\expandafter\@empty\the\mhchem@cf@sup\@empty\else% + \mhchem@appendToks{\mhchem@cf@sup}{,}% \fi% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% @@ -1410,7 +1497,15 @@ \else\if +\mhchem@cf@lookahead% \def\mhchem@cf@state{+}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@sup}}% - \else\if -\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@lookahead% + \ifnum 1<\mhchem@option@version% + \def\mhchem@cf@state{-}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else% + \def\mhchem@cf@state{+}% + \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@sup}{-}}% + \fi% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@cf@lookahead% \ifnum 1<\mhchem@option@version% \def\mhchem@cf@state{-}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% @@ -1442,16 +1537,19 @@ \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% - % \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \ifnum 4>\mhchem@option@version% \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% @@ -1469,7 +1567,7 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% . + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else\if *\mhchem@cf@state% \ifx \{\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% @@ -1479,29 +1577,25 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\ifx\bond\mhchem@cf@lookahead% + \else\expandafter\ifx\mhchem@char@equal@other\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \ifnum 2=\mhchem@option@version% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else% - \def\mhchem@cf@state{C}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi% - \else\if =\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\dbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\if ##\mhchem@cf@lookahead% - \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \mhchem@cf@result=\expandafter{\the\mhchem@cf@result\tbond}% - \def\mhchem@cf@state{+}% - \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% - \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@equal@active\mhchem@cf@lookahead% \mhchem@cf@outputAndReset{\mhchem@cf@result}% - \def\mhchem@cf@state{c}% - \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \else\if ^\mhchem@cf@lookahead% + \mhchem@appendToks{\mhchem@cf@result}{\dbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\if ##\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \mhchem@appendToks{\mhchem@cf@result}{\tbond}% + \def\mhchem@cf@state{+}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@super\mhchem@cf@lookahead% + \def\mhchem@cf@state{p}% + \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% + \else\expandafter\ifx\mhchem@char@caret@active\mhchem@cf@lookahead% \def\mhchem@cf@state{p}% \let\mhchem@cf@action\mhchem@cf@gobbleNextToken% \else\if _\mhchem@cf@lookahead% @@ -1557,15 +1651,18 @@ \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@append{\mhchem@cf@result}% {\mhchem@mathOrText@ii{{}\cdot{}}{\mhchem@option@textcdot}}}% + \else\ifcat\noexpand\mhchem@macro\noexpand\mhchem@cf@lookahead% + \mhchem@cf@outputAndReset{\mhchem@cf@result}% + \def\mhchem@cf@state{c}% + \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% \else\ifcat a\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@element}}% \else\ifcat 1\mhchem@cf@lookahead% - % \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{1}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@amount}}% - \else\if\mhchem@lbracechar\mhchem@cf@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@lookahead% \def\mhchem@cf@state{a}% \def\mhchem@cf@action{\mhchem@cf@appendNextGroup{\mhchem@cf@element}}% \else\if $\mhchem@cf@lookahead% @@ -1575,86 +1672,67 @@ \mhchem@cf@outputAndReset{\mhchem@cf@result}% \def\mhchem@cf@state{s}% \def\mhchem@cf@action{\mhchem@cf@appendNextToken{\mhchem@cf@result}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% . + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \else% \PackageWarning{mhchem}{Assertion failed: unknown internal state \mhchem@cf@state}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% \fi\fi\fi% \mhchem@cf@action% }% -%%% \def\mhchem@cf@continue{% \futurelet\mhchem@cf@lookahead\mhchem@cf@i% }% \def\mhchem@cf@gobbleNextToken#1{% \mhchem@cf@continue% }% -\def\mhchem@cf@append#1#2#3{% - %\showthe#1% - #1=\expandafter{\the#1#2}% - %\showthe#1% +\def\mhchem@cf@appendNextToken#1#2{% + \mhchem@appendToks{#1}{#2}% \mhchem@cf@continue% -}% -\def\mhchem@cf@appendExpand#1#2#3{% - \edef\mhchem@cf@appendExpand@i{\noexpand\mhchem@cf@append\noexpand{#1}{#2}}% - \mhchem@cf@appendExpand@i% -}% -\def\mhchem@cf@appendAndExecute#1#2#3#4{% - #1=\expandafter{\the#1#2}% - #3% +} +\def\mhchem@cf@appendNextTokenAsMathrm#1#2{% + \mhchem@appendToks{#1}{\ensuremath{\mathrm{#2}}}% \mhchem@cf@continue% -}% -\def\mhchem@cf@appendAndExecuteExpand#1#2#3#4{% - \edef\mhchem@cf@appendExpand@i{\noexpand\mhchem@cf@appendAndExecute\noexpand{#1}{#2}{#3}}% - \mhchem@cf@appendExpand@i% -}% +} \def\mhchem@cf@appendNextGroup#1#2{% - #1=\expandafter{\the#1{#2}}% + \mhchem@appendToks{#1}{{#2}}% \mhchem@cf@continue% } \def\mhchem@cf@appendNextGroupAsMath#1#2{% - #1=\expandafter{\the#1{\text{\ensuremath{#2}}}}% - \mhchem@cf@continue% -} -\def\mhchem@cf@appendNextToken#1#2{% - %\showthe#1% - #1=\expandafter{\the#1#2}% - %\showthe#1% + \mhchem@appendToks{#1}{\text{\ensuremath{#2}}}% \mhchem@cf@continue% } -\def\mhchem@cf@appendNextTokenAsMathrm#1#2{% - #1=\expandafter{\the#1{\ensuremath{\mathrm{#2}}}}% +\def\mhchem@cf@append#1#2#3{% + \mhchem@appendToks{#1}{#2}% \mhchem@cf@continue% -} +}% \def\mhchem@cf@appendMath#1#2#3${% - #1=\expandafter{\the#1\text{\ensuremath{#3}}}% + \mhchem@appendToks{#1}{\text{\ensuremath{#3}}}% \mhchem@cf@continue% }% \def\mhchem@cf@appendMathAsGroup#1#2#3${% - #1=\expandafter{\the#1{\text{\ensuremath{#3}}}}% + \mhchem@appendToks{#1}{{\text{\ensuremath{#3}}}}% \mhchem@cf@continue% }% \def\mhchem@cf@switchState#1#2|{% - \ifthenelse{\equal{1}{#2}}{% if 1 - \def\mhchem@cf@state{a}% switch to [a]element + \ifthenelse{\equal{1}{#2}}{% + \def\mhchem@cf@state{a}% }{% \PackageWarning{mhchem}{Command |#2| unknown}% }% \mhchem@cf@continue% }% -%%%%% \newtoks\mhchem@cf@element% \newtoks\mhchem@cf@amount% -%\newtoks\mhchem@cf@sub% \newtoks\mhchem@cf@sup% \newtoks\mhchem@cf@presub% \newtoks\mhchem@cf@presup% \def\mhchem@cf@output{% - % - \if\mhchem@cf@state s% - \else\if\mhchem@cf@state 1% - \noexpand\mhchem@mathOrText{\noexpand\mhchem@cf@frac\the\mhchem@cf@amount/\noexpand\mhchem@END}% + \if s\mhchem@cf@state% + \else\if 1\mhchem@cf@state% + \noexpand\mhchem@mathOrText{\noexpand\mhchem@cf@frac\the\mhchem@cf@amount/\noexpand\mhchem@END{\mhchem@option@skipAfterFracAmount}}% + \else\if 9\mhchem@cf@state% + \noexpand\mhchem@mathOrText{\noexpand\mhchem@cf@frac\the\mhchem@cf@amount/\noexpand\mhchem@END{}}% \else% \if\mhchem@option@usenonsimultaneoussubsuperscripts 0\relax% \noexpand\mhchem@chemfive% @@ -1673,12 +1751,9 @@ {}% {\noexpand\mhchem@cf@replaceMathMinusDot{\the\mhchem@cf@sup}}% \fi% - \fi\fi%\fi% + \fi\fi\fi% } \def\mhchem@cf@outputReset{% - %\showthe\mhchem@cf@element% - %\showthe\mhchem@cf@sup% - % \mhchem@cf@element={}% \mhchem@cf@amount={}% \mhchem@cf@sup={}% @@ -1688,23 +1763,22 @@ \def\mhchem@cf@outputAndReset#1{% \edef\mhchem@cf@outputAndReset@i{#1={\the#1\mhchem@cf@output}}% \mhchem@cf@outputAndReset@i% - %\showthe#1% \mhchem@cf@outputReset% } %%% frac -\def\mhchem@cf@frac#1/#2\mhchem@END{% +\def\mhchem@cf@frac#1/#2\mhchem@END#3{% \ifthenelse{\equal{#2}{}}{% - #1\mhchem@option@skipAfterAmount% + #1#3% }{% \ensuremath{\mathchoice% {\textstyle% - \frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% - {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% - {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% - {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}\mhchem@option@skipAfterFracAmount}% + \frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% + {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% + {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% + {\frac{\mhchem@mathOrText{#1}}{\mhchem@mathOrText{\mhchem@getfirstchar#2\mhchem@ENDgetfirstchar}}#3}% }% }% }% @@ -1712,20 +1786,16 @@ \def\mhchem@getlastchars#1#2\mhchem@ENDgetlastchars{#2} %%% replaceMath - % - % - % \newtoks\mhchem@cf@replaceMath@result \newcommand\mhchem@cf@replaceMath[1]{% \mhchem@cf@replaceMath@result={}% \mhchem@cf@replaceMath@continue#1\mhchem@END% - % \the\mhchem@cf@replaceMath@result% } \def\mhchem@cf@replaceMath@i{% \ifx\mhchem@END\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@gobble% - \else\if\mhchem@lbracechar\mhchem@cf@replaceMath@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@cf@replaceMath@appendNextGroup% \else\if $\mhchem@cf@replaceMath@lookahead% \let\mhchem@cf@replaceMath@action\mhchem@cf@replaceMath@appendMath% @@ -1734,69 +1804,63 @@ \fi\fi\fi% \mhchem@cf@replaceMath@action% } -%%% \def\mhchem@cf@replaceMath@continue{% \futurelet\mhchem@cf@replaceMath@lookahead\mhchem@cf@replaceMath@i% } \def\mhchem@cf@replaceMath@appendNextGroup#1{% - \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result{#1}}% + \mhchem@appendToks{\mhchem@cf@replaceMath@result}{{#1}}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendNextToken#1{% - \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result#1}% + \mhchem@appendToks{\mhchem@cf@replaceMath@result}{#1}% \mhchem@cf@replaceMath@continue% } \def\mhchem@cf@replaceMath@appendMath#1#2${% - \mhchem@cf@replaceMath@result=\expandafter{\the\mhchem@cf@replaceMath@result\text{\ensuremath{#2}}}% + \mhchem@appendToks{\mhchem@cf@replaceMath@result}{\text{\ensuremath{#2}}}% \mhchem@cf@replaceMath@continue% -}% +} %%% replaceMathMinusDot -%%% -%%% -%%% -%%% -%%% \newtoks\mhchem@cf@replaceMathMinusDot@result \newcommand\mhchem@cf@replaceMathMinusDot[1]{% \mhchem@cf@replaceMathMinusDot@result={}% \mhchem@cf@replaceMathMinusDot@continue#1\mhchem@END% - % \the\mhchem@cf@replaceMathMinusDot@result% } \def\mhchem@cf@replaceMathMinusDot@i{% \ifx\mhchem@END\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@gobble% - \else\if -\mhchem@cf@replaceMathMinusDot@lookahead\relax% + \else\expandafter\ifx\mhchem@char@hyphen@other\mhchem@cf@replaceMathMinusDot@lookahead\relax% + \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\mhchem@mathOrText@ii{-}{\mhchem@option@textminus}}}% + \else\expandafter\ifx\mhchem@char@hyphen@active\mhchem@cf@replaceMathMinusDot@lookahead\relax% \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\mhchem@mathOrText@ii{-}{\mhchem@option@textminus}}}% \else\if .\mhchem@cf@replaceMathMinusDot@lookahead\relax% \def\mhchem@cf@replaceMathMinusDot@action{\mhchem@cf@replaceMathMinusDot@append{\ensuremath{\textbf{\fontfamily{cmr}\selectfont\textperiodcentered}}}}% - \else\if\mhchem@lbracechar\mhchem@cf@replaceMathMinusDot@lookahead% + \else\if\mhchem@char@lbrace\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendNextGroup% \else\if $\mhchem@cf@replaceMathMinusDot@lookahead% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendMath% \else% \let\mhchem@cf@replaceMathMinusDot@action\mhchem@cf@replaceMathMinusDot@appendNextToken% - \fi\fi\fi\fi\fi% + \fi\fi\fi\fi\fi\fi% \mhchem@cf@replaceMathMinusDot@action% } -%%% \def\mhchem@cf@replaceMathMinusDot@continue{% \futurelet\mhchem@cf@replaceMathMinusDot@lookahead\mhchem@cf@replaceMathMinusDot@i% } \def\mhchem@cf@replaceMathMinusDot@append#1#2{% - \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result#1}% + \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextGroup#1{% - \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result{#1}}% + \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{{#1}}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendNextToken#1{% - \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result#1}% + \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{#1}% \mhchem@cf@replaceMathMinusDot@continue% } \def\mhchem@cf@replaceMathMinusDot@appendMath#1#2${% - \mhchem@cf@replaceMathMinusDot@result=\expandafter{\the\mhchem@cf@replaceMathMinusDot@result\text{\ensuremath{#2}}}% + \mhchem@appendToks{\mhchem@cf@replaceMathMinusDot@result}{\text{\ensuremath{#2}}}% \mhchem@cf@replaceMathMinusDot@continue% }% @@ -1804,13 +1868,6 @@ %%%%%%%%%%%%%%%%%%%%% %%% @chemfive %%% %%%%%%%%%%%%%%%%%%%%% -%%% -%%% -%%% -%%% -%%% -%%% -%%% \newcommand*\mhchem@chemfive[6]{% {% \mhchem@prepostscript% @@ -1825,13 +1882,6 @@ } %%% @prepostscript -%%% -%%% -%%% -%%% -%%% -%%% -%%% \newlength\mhchem@prepostscript@tmp@i% \newlength\mhchem@prepostscript@tmp@ii% \newcommand*\mhchem@prepostscript[7][]{% @@ -1839,64 +1889,55 @@ \ensuremath{% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#2#3$}}% \ifdim\mhchem@prepostscript@tmp@i>0pt% - \setlength{\mhchem@prepostscript@tmp@i}{\widthof{${}^{#2}$}}% [1] - \setlength{\mhchem@prepostscript@tmp@ii}{\widthof{${}_{#3}$}}% [1] + \setlength{\mhchem@prepostscript@tmp@i}{\widthof{${}^{#2}$}}% + \setlength{\mhchem@prepostscript@tmp@ii}{\widthof{${}_{#3}$}}% \ifdim\mhchem@prepostscript@tmp@i<\mhchem@prepostscript@tmp@ii% - \setlength{\mhchem@prepostscript@tmp@i}{\mhchem@prepostscript@tmp@ii}\fi% [1] - \vphantom{#4}% [2] + \setlength{\mhchem@prepostscript@tmp@i}{\mhchem@prepostscript@tmp@ii}\fi% + \vphantom{#4}% {}% ^{% - \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% [1] - \vphantom{#6#7}% [2] - \vphantom{#1}% [4] + \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% + \vphantom{#6#7}% + \vphantom{#1}% #2% - }% [1] + }% }% _{% - \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% [1] - \vphantom{#5}% [2] + \mhchem@mathboxright{\mhchem@prepostscript@tmp@i}{% + \vphantom{#5}% #3% - }% [1] + }% }% - \mhchem@minispace% [3] + \mhchem@minispace% \fi% #4% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#5#6$}}% - \ifdim\mhchem@prepostscript@tmp@i>0pt% + \ifdim\mhchem@prepostscript@tmp@i>0pt% _{% - \vphantom{#3}% [2] + \vphantom{#3}% #5% }% ^{% - \vphantom{#2#7}% [2] - \vphantom{#1}% [4] - #6 + \vphantom{#2#7}% + \vphantom{#1}% + #6% }% \fi% \setlength{\mhchem@prepostscript@tmp@i}{\widthof{$#7$}}% - \ifdim\mhchem@prepostscript@tmp@i>0pt% - \mhchem@minispace% [3] + \ifdim\mhchem@prepostscript@tmp@i>0pt% + \mhchem@minispace% {}% - _{\vphantom{#3#5}}% [2] + _{\vphantom{#3#5}}% ^{% - \vphantom{#2#6}% [2] - \vphantom{#1}% [4] + \vphantom{#2#6}% + \vphantom{#1}% #7% }% \fi% }% -% -% -% -% -% -% -% } %%% @mathbox -%%% -%%% \newcommand*\mhchem@mathbox[2][]{% \mathchoice% {\mhchem@mathbox@ii{\displaystyle}{#1}{#2}}% @@ -1905,7 +1946,7 @@ {\mhchem@mathbox@ii{\scriptscriptstyle}{#1}{#2}}}% \newlength\mhchem@mathbox@tmp@i \newlength\mhchem@mathbox@tmp@ii -\newcommand*\mhchem@mathbox@ii[3]{% +\newcommand*\mhchem@mathbox@ii[3]{% \setlength{\mhchem@mathbox@tmp@i}{\widthof{\ensuremath{#1#2}}}% \setlength{\mhchem@mathbox@tmp@ii}{\widthof{\ensuremath{#1#3}}}% \ifdim\mhchem@mathbox@tmp@i<\mhchem@mathbox@tmp@ii% @@ -1919,7 +1960,7 @@ {\mbox{\ensuremath{\scriptstyle#1}}}% {\mbox{\ensuremath{\scriptscriptstyle#1}}}} -%%% @mathboxright +%%% @mathboxright \newcommand*\mhchem@mathboxright[2]{\mathchoice% {\makebox[#1][r]{\ensuremath{\displaystyle#2}}}% {\makebox[#1][r]{\ensuremath{\textstyle#2}}}% @@ -1927,12 +1968,10 @@ {\makebox[#1][r]{\ensuremath{\scriptscriptstyle#2}}}} %%% @minispace -%%% -%%% \newlength\mhchem@minispace@tmp \newcommand*\mhchem@minispace{% \setlength{\mhchem@minispace@tmp}{0pt-\widthof{${}^8_8$}+% - \widthof{$\text{C}^8_8$}-\widthof{$\text{C}^{}_{}$}}% [3] + \widthof{$\text{C}^8_8$}-\widthof{$\text{C}^{}_{}$}}% \kern\mhchem@minispace@tmp% } @@ -1960,7 +1999,6 @@ }{\PackageError{mhchem}{Font option `#1' unknown}}}% } -% \def\mhchem@option@alwaystextmode{0}% \newlength\mhchem@option@minussidebearingleft @@ -1970,22 +2008,6 @@ \define@key{mhchem}{minus-sidebearing-left}{\setlength\mhchem@option@minussidebearingleft{#1}} \define@key{mhchem}{minus-sidebearing-right}{\setlength\mhchem@option@minussidebearingright{#1}} -% -% -% -% -% -% -% -% -% -% -% -% -% -% -% -% % Replicate layout of MS Word (superscript after subscript, not over) \def\mhchem@option@usenonsimultaneoussubsuperscripts{0}% @@ -1993,7 +2015,7 @@ \mhchem@definearrows{font} \define@key{mhchem}{arrows}{% - \ifthenelse{\equal{pgf}{#1} \or \equal{pgf-filled}{#1}}{% + \ifthenelse{\equal{pgf}{#1} \or \equal{pgf-filled}{#1}}{% \RequirePackage{pgf}% for finding the tikz package more easily \RequirePackage{tikz}% }{}% @@ -2004,17 +2026,14 @@ \define@key{mhchem}{skip-after-amount}{\def\mhchem@option@skipAfterAmount{#1}\def\mhchem@option@skipAfterFracAmount{#1}} \def\mhchem@option@skipAfterFracAmount{\,} \define@key{mhchem}{skip-after-frac-amount}{\def\mhchem@option@skipAfterFracAmount{#1}} -% \def\mhchem@option@textminus{--} \define@key{mhchem}{textminus}{\def\mhchem@option@textminus{#1}} -% \def\mhchem@option@textcdot{\cdot} \define@key{mhchem}{textcdot}{\def\mhchem@option@textcdot{#1}} -% -%%% begin: standard keyval handling as in many other packages +%%% begin: standard keyval handling as in many other packages \def\ProcessOptionsWithKV#1{% \let\@tempc\relax% \let\mhchem@tempa\@empty% @@ -2047,8 +2066,9 @@ \PackageWarningNoLine{mhchem}{% You did not specify a 'version' option for the mhchem\MessageBreak package. If you are about to create a new document,\MessageBreak - please write \string\usepackage[version=3]{mhchem} in your preamble in\MessageBreak - order to use the most recent version of mhchem}% + please write \string\usepackage[version=3]{mhchem} in your\MessageBreak + preamble in order to use the most recent version of\MessageBreak + mhchem}% \def\mhchem@option@version{3}% \else\ifnum 4=\mhchem@option@version% \PackageWarningNoLine{mhchem}{% @@ -2058,47 +2078,12 @@ to change without notice}% \fi\fi% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% misc %%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% legacy %%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifnum 4>\mhchem@option@version \newcommand*\mhchem@cmath[1]{\ensuremath{\text{\ensuremath{#1}}}}% \newcommand*\cmath[1]{\mhchem@cmath{#1}} - \newcommand*\cf[2][]{\mhchem@cf[#1]{#2}} + \DeclareRobustCommand\cf[2][]{\mhchem@cf[#1]{#2}} \fi - - - - - - - - - -% -% -% -% -% -% -% -% -% -% -% -% -% -% -% -% - -% -\def\mhchem@END{} -\def\mhchem@macro{} -\def\mhchem@empty{} -% -\edef\mhchem@lbracechar{\string{} %} -\def\mhchem@gobble#1{}% -% -%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/mhchem/rsphrase.sty b/Master/texmf-dist/tex/latex/mhchem/rsphrase.sty index 8bed392cf4d..6c4971dc202 100644 --- a/Master/texmf-dist/tex/latex/mhchem/rsphrase.sty +++ b/Master/texmf-dist/tex/latex/mhchem/rsphrase.sty @@ -1,37 +1,13 @@ %% rsphrase.sty -%% Copyright 2004-2010 M.a-r.t-i.n H.e-n.s-e.l -% -% The original phrases are taken from -% http://europa.eu.int/comm/environment/dansub/pdfs/annex3_en.pdf and -% http://europa.eu.int/comm/environment/dansub/pdfs/annex4_en.pdf -% which are linked from -% http://europa.eu.int/comm/environment/dansub/main67_548/index_en.htm -% The phrases themselves, therefore do not fall under the license -% mentioned below. -% See http://europa.eu.int/geninfo/disclaimer_en.htm -% -% Danish hyphenation and warning messages were kindly provided -% by Rasmus Villemoes (burner -@- imf -.- au -.- dk). -% -% French hyphenation and warning messages were kindly provided -% by Dominique Richard (dri -@- lobivia -.- cpe -.- fr). -% -% The Italian phrases were kindly provided by -% Lorenzo Vagnarelli (lorenzo -.- vagnarelli -@- libero -.- it) -% -% The Spanish phrases were kindly provided by -% Ignacio Fern\'{a}ndez Galv\'{a}n (jellby -@- yahoo -.- com). -% -% +%% Copyright 2004-2011 Martin Hensel % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License version 1.3c -% which can be found at -% http://www.latex-project.org/lppl/lppl-1-3c.txt +% which is included as lppl-1-3c.txt. % % This work has the LPPL maintenance status "maintained". -% The Current Maintainer of this work is M.a-r.t-i.n H.e-n.s-e.l. -% +% The Current Maintainer of this work is Martin Hensel. +% % ( In order to fight spam, the maintainer's contact ) % ( information is "encrypted" with ROT13. ) % ( If you do not know ROT13 yet and have no tool for ) @@ -48,8 +24,28 @@ % | Treznal % `---------- % -% This work consists of the files mhchem.sty, rsphrase.sty, -% mhchem.pdf and legal.txt. +% This work consists of all files listed in manifest.txt. +% +% +% The original phrases are taken from +% http://europa.eu.int/comm/environment/dansub/pdfs/annex3_en.pdf and +% http://europa.eu.int/comm/environment/dansub/pdfs/annex4_en.pdf +% which are linked from +% http://europa.eu.int/comm/environment/dansub/main67_548/index_en.htm +% The phrases themselves therefore are not subject to the LPPL. +% See http://europa.eu.int/geninfo/disclaimer_en.htm +% +% Danish hyphenation and warning messages were kindly provided +% by Rasmus Villemoes (burner -@- imf -.- au -.- dk). +% +% French hyphenation and warning messages were kindly provided +% by Dominique Richard (dri -@- lobivia -.- cpe -.- fr). +% +% The Italian phrases were kindly provided by +% Lorenzo Vagnarelli (lorenzo -.- vagnarelli -@- libero -.- it) +% +% The Spanish phrases were kindly provided by +% Ignacio Fern\'{a}ndez Galv\'{a}n (jellby -@- yahoo -.- com). % % \ProvidesPackage{rsphrase}[2011/06/03 v3.11 Risk and Safety Phrases (mhchem bundle)] @@ -67,7 +63,7 @@ % strict label phrases \def\mhchem@rs@de@label{dieses Etikett} \def\mhchem@rs@en@showlabel{show this container or label}% - \def\mhchem@rs@dk@showlabel{denne beholder eller etiket}% + \def\mhchem@rs@dk@showlabel{denne beholder eller etiket}% % original parts of German phrases (badly translated) \def\mhchem@rs@de@r@dn{ernste Gefahr irreversiblen Schadens}% \def\mhchem@rs@de@r@znzezz{Ge\-sund\-heits\-sch\"ad\-lich beim Einatmen, Verschlucken und Be\-r\"uh\-rung mit der Haut}% @@ -81,7 +77,7 @@ \def\mhchem@rs@de@label{Etikett}% \def\mhchem@rs@en@showlabel{show the container or label}%% +++ correct english? \def\mhchem@rs@dk@showlabel{beholderen eller etiketten}% - % adapted parts of German phrases (more precise translation) + % adapted parts of German phrases (more precise translation) \def\mhchem@rs@de@r@dn{Gefahr sehr ernster irreversibler Sch\"a\-den}% \def\mhchem@rs@de@r@znzezz{Ge\-sund\-heits\-sch\"ad\-lich beim Einatmen, Verschlucken und bei Be\-r\"uh\-rung mit der Haut}% "und _bei_" eingefuegt \def\mhchem@rs@de@r@zdzvzf{Giftig beim Einatmen, Verschlucken und bei Be\-r\"uh\-rung mit der Haut}% "und _bei_" eingefuegt @@ -152,21 +148,21 @@ % \mhchem@iflanguagename{ngerman}{\mhchem@rs@data@ngerman[#1]{#2}}{% = naustrian \mhchem@iflanguagename{naustrian}{\mhchem@rs@data@ngerman[#1]{#2}}{% - \mhchem@iflanguagename{german}{% = austrian, germanb, + \mhchem@iflanguagename{german}{% = austrian, germanb, \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% }{% - \mhchem@iflanguagename{austrian}{% + \mhchem@iflanguagename{austrian}{% \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% }{% - \mhchem@iflanguagename{germanb}{% + \mhchem@iflanguagename{germanb}{% \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% - }{% + }{% % \mhchem@iflanguagename{italian}{\mhchem@rs@data@italian[#1]{#2}}{% % @@ -205,21 +201,21 @@ % \mhchem@iflanguagename{ngerman}{\mhchem@rs@data@ngerman[#1]{#2}}{% = naustrian \mhchem@iflanguagename{naustrian}{\mhchem@rs@data@ngerman[#1]{#2}}{% - \mhchem@iflanguagename{german}{% = austrian, germanb, + \mhchem@iflanguagename{german}{% = austrian, germanb, \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% }{% - \mhchem@iflanguagename{austrian}{% + \mhchem@iflanguagename{austrian}{% \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% }{% - \mhchem@iflanguagename{germanb}{% + \mhchem@iflanguagename{germanb}{% \mhchem@rs@warning@german% \gdef\mhchem@rs@warning@german{}% \mhchem@rs@data@ngerman[#1]{#2}% - }{% + }{% % \mhchem@iflanguagename{italian}{\mhchem@rs@data@italian[#1]{#2}}{% % @@ -1208,7 +1204,7 @@ \MessageBreak d'extinction a utiliser}}% \mhchem@rs@ii[S43]{#2}{S43.1}{En cas d'incendie, utiliser #1. Ne jamais utiliser d'eau}% {\mhchem@rs@check{#1}{S43.1}{Priere de preciser la nature exacte des moyens% - \MessageBreak d'extinction a utiliser}}% + \MessageBreak d'extinction a utiliser}}% \mhchem@rs@ii{#2}{S45}{En cas d'accident ou de malaise, consulter im\-m\'e\-dia\-te\-ment un m\'e\-de\-cin (si possible lui montrer l'\'e\-ti\-quet\-te)}{}% \mhchem@rs@ii{#2}{S46}{En cas d'ingestion, consulter im\-m\'e\-dia\-te\-ment un m\'e\-de\-cin et lui montrer l'emballage ou l'\'e\-ti\-quette}{}% \mhchem@rs@ii{#2}{S47}{Conserver \`a une tem\-p\'e\-ra\-tu\-re ne d\'e\-pas\-sant pas #1\textdegree C}% |