Problem mit mhchem in nummerierungs-macro

Schriftbild, Absätze und Auflistungen einstellen


Lukasnikan
Forum-Anfänger
Forum-Anfänger
Beiträge: 40
Registriert: So 30. Aug 2009, 00:02
Wohnort: Zürich

Problem mit mhchem in nummerierungs-macro

Beitrag von Lukasnikan »

hallo zusammen,

ich nummeriere nach folgendem macro meine chemische Verbindungen. Diese habe ich mit Erlaubnis aus den Forenbeiträgen kopiert. Es erleichtert enorm, weil ich in einem externen File die komplete chemische Bezeichnung, einen Nickname und die Strukturformel einem laufenden nummer zuweisen und überall die aufrufen kann.
\usepackage[user]{zref}
\pdfadjustspacing=1
\makeatletter
\newcounter{verbnr}
\zref@newprop*{vname}{}
\zref@newprop*{vnr}{}
\zref@newprop*{vform}{}
\zref@addprop{main}{vname}
\zref@addprop{main}{vnr}
\zref@addprop{main}{vform}
\def\Verbindung#1#2#3{%
   \stepcounter{verbnr}%
   \zref@setcurrent{vname}{#2}%   
   \zref@setcurrent{vnr}{\textbf{\arabic{verbnr}}}%
    \zref@setcurrent{vform}{#3}%   
   \zref@wrapper@immediate{\zref@label{verb:#1}}%
}
\def\getname#1{%
   \zref@extract{verb:#1}{vname}%
}
\def\getnr#1{%
   \zref@extract{verb:#1}{vnr}%
}
\def\getform#1{%
   \zref@extract{verb:#1}{vform}%
}
\makeatother
ich benutze in dem Feld vform die mhchem packet. alles geht gut.
ich muss noch aber Dreifachbindungen noch schreiben.
Die Kommando von mhchem \cf{#} liefert das Gewünschte.
ich bekomme aber folgende Fehlern:
1. Illegal parameter number in definition of \Z@C@vform.
2. Illegal parameter number in definition of \reserved@a

kann mir jemand helfen bitte?

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Illegal parameter number

Beitrag von Stefan Kottwitz »

Hallo,

der Fehler bedeutet, dass Aufrufparameter nicht zur Definition passen, etwa wenn man auf Parameter #3 zugreift, jedoch nur 2 Parameter definiert sind. Er kann auch bei inkorrekter Schachtelung von Definitionen entstehen, wenn man innere Makros mit nicht mehreren #-Symbolen angibt wie vorgesehen.

Stefan

Lukasnikan
Forum-Anfänger
Forum-Anfänger
Beiträge: 40
Registriert: So 30. Aug 2009, 00:02
Wohnort: Zürich

danke aber..

Beitrag von Lukasnikan »

Danke für die schnelle Reaktion, und Hilfestellung.

habe ich es richtig verstanden, für meinen Macro:

dass ich bei den parameter #3 die mhchem benutze ist o.k.
aber die angabe für dreifachbindung kollidiert mit der Verschachtelung?

ich gebe immer drei parameter ein, der vierte (hier #1) ist die durch den counter vergebene.
ich bekomme auch eigenlich das richtige raus. nur werden nach 40 verbindungen die fehler so viel, dass es nicht weiter geht.

ich glaube, ich versteh es immer noch nicht richtig. dabei ist dieses macro das traum für jeden chemiearbeit. und wenn es richtig läuft, das absolute argument nicht mit word zu schreiben.

danke erstmal

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Minimalbeispiel

Beitrag von Stefan Kottwitz »

Ohne Minimalbeispiel, das den Fehler produziert, lässt sich das kaum nachvollziehen. Der obige Code-Ausschnitt produziert für sich genommen keinen Fehler.

Stefan

Lukasnikan
Forum-Anfänger
Forum-Anfänger
Beiträge: 40
Registriert: So 30. Aug 2009, 00:02
Wohnort: Zürich

mini beispiel

Beitrag von Lukasnikan »

vielen vielen Dank für den Support.
ich tue den Beispieldatei in anhang.

ich wäre so froh, wenn ich weiter schreiben könnte.
Dateianhänge
mini-beispiel.tex
(1.42 KiB) 700-mal heruntergeladen

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

Ich bekomme bereits beim gemeinsamen Laden einer KOMA-Script-Klasse, siunitx und chemstyle eine Fehlermeldung:
\documentclass{scrartcl}
\usepackage{siunitx}
\usepackage{chemstyle}
\begin{document}
\null
\end{document}
Offenbar sind diese drei Komponenten nicht miteinander kompatibel. Ich werde den Bug melden.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Illegal parameter number in definition

Beitrag von Stefan Kottwitz »

Die beiden weiter oben zitierten Fehler liegen an dem hier verwendeten #-Symbol:
\Verbindung{Sn}{IUPAC-Name}{SnC#C(N\iPr2)2}
... \textbf{\ce{SnC#C(N\iPr2)2}} ...
Stefan

Lukasnikan
Forum-Anfänger
Forum-Anfänger
Beiträge: 40
Registriert: So 30. Aug 2009, 00:02
Wohnort: Zürich

genau, aber ich brauche den #

Beitrag von Lukasnikan »

hi,

nur mit \cf{#} kann ich die benötigte dreifach Bindung erzeugen.
Bei mhchem stehen noch andere Befehle, aber die haben alle nicht funktioniert.
Warum geht es auf dem Ausdruck aber trotzdem?
Ich habe noch keine Alternative für den mhchem packet.

einen Vorschlag was ich machen soll?

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: genau, aber ich brauche den #

Beitrag von Stefan Kottwitz »

Lukasnikan hat geschrieben: nur mit \cf{#} kann ich die benötigte dreifach Bindung erzeugen.
Ich sehe kein \cf{#} sondern \cf{#3}.
Und was hat das mit dem Problem des # in SnC#C(N\iPr2)2 zu tun?

Stefan

Lukasnikan
Forum-Anfänger
Forum-Anfänger
Beiträge: 40
Registriert: So 30. Aug 2009, 00:02
Wohnort: Zürich

Beitrag von Lukasnikan »

durch das Packet mhchem kann man einen Dreifachbindung durch folgende Möglichkeiten erzeugen:

- \ce{#}
- \ce{\bond{#}}
- \ce {\tbond}
statt \ce kann wohl auch \cf benutzt werden.

In dem Macro funktioniert nur die Kombination von \cf{#}, ich habe alle ausprobiert.
Für den Macro gebe ich drei Parameter ein, ist das so richtig ausgedruckt?
diese werden mit #1, #2 und #3 bezeichnet, so weit ich es verstehe. und mit dem laufenden nummer verbunden.
#1 ist der von mir vergebene nickname,
#2 ist die sehr lange unpraktische chemische bezeichnung,
und in dem Feld #3 möchte ich die Strichformel schreiben.
Diese Parameter kommen alle in den geschweiften Klammern.

Bei der Strichformel brauche ich die Ausdrucke von mhchem.
Es wäre vielleicht auch kein Problem, wenn es mit der \tbond ginge, aber das tut es nicht.
Ich habe bei der Macro-Zeile:
\zref@setcurrent{vnr}{\textbf{\arabic{verbnr}}}%
angegeben, dass die Ausgabe arabische Zahl und Fettgedruckt sein soll.

Also dachte ich, es wäre auch möglich für den Parameter #3, also die Strichformel gleich anzugeben, dass es mit dem Packet mhchem umgesetzt werden soll. Somit habe ich \cf schon da rein geschrieben.
\zref@setcurrent{vform}{\cf{#3}}

sonst muss ich diese \cf immer bei Angabe der Parameter mit in den geschweifte Klammern setzten, wie zum Beispiel hier:
\Verbindung{nickname}{lange Name}{\cf{Strich#formel}}
Beides führt zum gleichen Ergebnis.

Ich habe schon verstanden, dass die Raute das Problem ist.
Ich suche jetzt nach anderen Chemie Packete, die eventuell anders die Bindungen darstellen, habe noch nichts gefunden.

Und ich weis auch nicht, wie ich diesen tollen Macro ändern kann. Ich habe es doch schon in Foren gefunden, mit Erlaubnis kopiert und nach logischen Denken einfach um den Variablen #3 erweitert.

Antworten