Problem mit mhchem in nummerierungs-macro

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Problem mit mhchem in nummerierungs-macro

von phi » Do 10. Dez 2009, 19:33

Ganz einfach: chemstyle lädt siunitx oder SIunits automatisch, je nachdem, was gefunden wird.

und mit scrbook?

von Lukasnikan » Do 10. Dez 2009, 00:19

hi

danke für den feedback.
ich nutze jetzt für die Arbeit scrbook, und kein unit package mehr.
kann das sein, dass in chemstyle ein art siunitx integriert ist?

ich verstehe nicht viel davon, aber wenn ich wie aus dem unit package bekannte SI{}{} schreibe, funktioniert es noch.

von phi » Mi 9. Dez 2009, 22:58

phi hat geschrieben: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.
Der Bug ist laut Bugreport jetzt behoben.

von Lukasnikan » Sa 10. Okt 2009, 11:57

DANKE

sobald die arbeit fertig ist, melde ich mich mit dem mhchem autor.
eventuell erweitert um noch einen parameter, in dem man die Zeichnung zuordnen kann, ist diese Art Makro die Antwort auf alle Chemiker-Träume.
Wäre dann fast wie ein Datenbank.

Aber es funktioniert tausendmal dank.

von phi » Sa 10. Okt 2009, 11:45

Habe das Minimalbeispiel jetzt so weit reparieren können, dass es ohne Fehler kompiliert:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage[scaled=.9]{luximono}
\usepackage{microtype}
\usepackage{siunitx}
\usepackage{dsfont}

\usepackage[journal=angew]{chemstyle}
\cstsetup{radhyphen=false,radsuper=true}
\usepackage[version=3]{mhchem}
\usepackage{bpchem} 
%-----------verbindungen durchnummerieren
\usepackage[user]{zref}

\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{%
   \refstepcounter{verbnr}%
   \zref@setcurrent{vname}{#2}%   
   \zref@setcurrent{vnr}{\textbf{\arabic{verbnr}}}%
   \zref@setcurrent{vform}{\protect\ce{#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
\begin{document}

\Verbindung{Sn}{IUPAC-Name}{SnC\protect\tbond C(N$\iPr$2)2}
Wenn man über die Verbindung Sn mit Nr. \getnr{Sn},
dann soll auch \textbf{\getname{Sn}} mit dem Formel
\textbf{\getform{Sn}} erscheinen. 
Dies sollte \textbf{\ce{SnC\tbond C(N$\iPr$2)2}} herrausgeben, aber bitte ohne Fehlermeldung.
Die Einheiten wie \hertz, \celsius\-  und \Molar\- von siunitx  geben Fehler. 
\end{document}
Die Befehle \ce und \tbond sind fragil, was meiner Meinung nach als Bug betrachtet werden kann. Du könntest dich deswegen mit dem Autor des mhchem-Pakets auseinandersetzen.

von phi » Sa 10. Okt 2009, 11:22

# kann an vielen Stellen nicht verwendet werden. Die Fehlermeldung, die das Minimalbeispiel
\documentclass{minimal}
\usepackage[version=3]{mhchem}
\begin{document}
\textbf{\ce{H-C#C-H}}
\end{document}
erzeugt, ist eigentlich recht aussagekräftig:
ERROR: Illegal parameter number in definition of \reserved@a.

--- TeX said ---
<to be read again> 
                   C
l.4 \textbf{\ce{H-C#C-H}}
                         
--- HELP ---
This is probably caused by a \newcommand, \renewcommand,
\newenvironment, or \renewenvironment command in which a # is used
incorrectly.  A # character, except as part of the command name \#,
can be used only to indicate an argument parameter, as in #2, which
denotes the second argument. This error is also caused by nesting one
of the above four commands inside another, or by putting a parameter
like #2 in the last argument of a \newenvironment or \renewenvironment
command.
Verwende stattdessen \tbond:
\documentclass{minimal}
\usepackage[version=3]{mhchem}
\begin{document}
\textbf{\ce{H-C\tbond C-H}}
\end{document}

von Lukasnikan » Sa 10. Okt 2009, 10:27

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.

Re: genau, aber ich brauche den #

von Stefan Kottwitz » Sa 10. Okt 2009, 00:18

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

genau, aber ich brauche den #

von Lukasnikan » Sa 10. Okt 2009, 00:00

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?

Illegal parameter number in definition

von Stefan Kottwitz » Fr 9. Okt 2009, 20:45

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

Nach oben