Makro mit mehr als einem Argument und `mhchem'

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Makro mit mehr als einem Argument und `mhchem'

Beitrag 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?
Clemens
Paketauthor

Mechanicus
Forum-Guru
Forum-Guru
Beiträge: 322
Registriert: Mi 8. Okt 2008, 18:41
Wohnort: Hamburg

Beitrag 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}
Personalführung ist die Kunst der Vorgesetzten den Untergebenen so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet.

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag 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
Clemens
Paketauthor

Antworten