Seite 1 von 1

Makro mit mehr als einem Argument und `mhchem'

Verfasst: Sa 14. Mai 2011, 19:07
von cgnieder
Folgendes Problem lässt mich etwas ratlos dastehen:
Definiert man einen Befehl (mit \def oder \newcommand) und setzt in dann im mhchem-Befehl \ce{} ein, dann funktioniert er, wenn man ihm ein Argument gibt.
Hat er zwei Argumente, dann funktioniert er auf wundersame Weise nicht.
\documentclass{scrartcl}
\usepackage[version=3]{mhchem}
\begin{document}

\def\testA#1{#1}
\def\testB#1#2{#1}

\newcommand*{\testC}[1]{#1}
\newcommand*{\testD}[2]{#1}

Geht:
\ce{ \testA{Na} + \testC{Cl} }

Geht nicht:
\ce{ \testB{Na}{} + \testD{Cl}{} }
\end{document}
Verwendet man das zweite Argument tatsächlich, dann gibt es verschiedene Varianten:
\documentclass{scrartcl}
\usepackage{tikz}
\usepackage[version=3]{mhchem}
\begin{document}

\def\testA#1#2{#1 + #2}
\def\testB#1#2{#2#1}
\def\testC#1#2{\tikz\node(#1){#2};}

% Geht:
\ce{ \testA{Na}{Cl} }

% Verdreifacht Argumente:
\ce{ \testB{Na}{Cl} }

% Liefert Fehlermeldung "extra }, or forgotten $":
\ce{ \testC{Na}{Cl} }

\end{document}
Weiß jemand Rat?

Verfasst: Sa 14. Mai 2011, 22:07
von Mechanicus
HI,
\documentclass{scrartcl}
\usepackage[version=3]{mhchem}
\begin{document}

\def\testA#1{#1}
\def\testB#1#2{#1#2}

\newcommand*{\testC}[1]{#1}
\newcommand*{\testD}[1]{#1}

Geht:
\ce{ \testA{Na} + \testC{Cl} }

Geht nicht:
\ce{ \testB{Na}{} + \testD{Cl}{} }
\end{document}

Verfasst: Sa 14. Mai 2011, 22:12
von cgnieder
Hi,

ich verstehe die Antwort nicht... dass es mit einem Argument geht, aber mit zweien nicht, schrieb ich ja schon.

Außerdem sind bei Dir \testC und \testD identisch. Ist das Absicht?

Grüße,
Clemens