Problem mit mhchem in nummerierungs-macro

Schriftbild, Absätze und Auflistungen einstellen


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

Beitrag von phi »

# 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}

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

Beitrag von phi »

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.

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

Beitrag von Lukasnikan »

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.

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

Beitrag von phi »

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.

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

und mit scrbook?

Beitrag von Lukasnikan »

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.

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

Beitrag von phi »

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

Antworten