Seite 1 von 1

Chemfig: Neue Bindung definieren

Verfasst: Di 16. Okt 2012, 02:53
von dieg0
Hi,

ich habe festgestellt, dass Chemfig noch keine "Schlangenlinien" als chemische Bindung bereitstellt.

So soll es ungefähr aussehen:
\documentclass[a4paper,parskip,toc=bib,automark]{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage[ngerman]{translator} 
\usepackage[utf8]{inputenc} 
\usepackage{lmodern} 
\usepackage[T1]{fontenc} 
\usepackage{amsmath,amssymb,amstext} 
\usepackage{chemmacros}
\usetikzlibrary{decorations.pathmorphing} 
\usepackage{chemfig} 
   \setatomsep{1.3em} 
   \setdoublesep{2.5pt} 
   \setbondstyle{semithick} 
   \setcrambond{3pt}{0.5pt}{1pt} 
   \setchemrel{2pt}{0.7em}{10em} 
   \setarrowdefault{,1.1,}
   \renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}}

\begin{document} 
\schemestart 
\chemfig{[:18]*5(--O-([::-66]*6(-(-[,,,,decorate,decoration={snake,amplitude=.5mm,segment length=0.8mm}]SPh)--@{carb2}(=[@{db1}]@{o1}O)-=-))-O-)}
\schemestop 
\end{document}
Bloß möchte ich nicht jedes Mal
-[,,,,decorate,decoration={snake,amplitude=.5mm,segment length=0.8mm}]
schreiben, sondern lieber einen Befehl namens \rac dafür definieren.
\documentclass[a4paper,parskip,toc=bib,automark]{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage[ngerman]{translator} 
\usepackage[utf8]{inputenc} 
\usepackage{lmodern} 
\usepackage[T1]{fontenc} 
\usepackage{amsmath,amssymb,amstext} 
\usepackage{chemmacros}
\usetikzlibrary{decorations.pathmorphing} 
\usepackage{chemfig} 
   \setatomsep{1.3em} 
   \setdoublesep{2.5pt} 
   \setbondstyle{semithick} 
   \setcrambond{3pt}{0.5pt}{1pt} 
   \setchemrel{2pt}{0.7em}{10em} 
   \setarrowdefault{,1.1,}
   \renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}}

\newcommand\rac{-[,,,,decorate,decoration={snake,amplitude=.5mm,segment length=0.8mm}]}

\begin{document} 
\schemestart 
\chemfig{[:18]*5(--O-([::-66]*6(-(\rac SPh)--@{carb2}(=[@{db1}]@{o1}O)-=-))-O-)}
\schemestop 
\end{document}
Leider wird \rac nicht von Chemfig interpretiert. Stattdessen landet der Text aus der Präambel eins zu eins in der Strukturformel.

Ich habe auf die Schnelle keine Lösung gefunden. Und mit dieser LaTeX-Ecke rund um Makros kenne ich mich nicht gut aus. Da werde ich mich vielleicht irgendwann später mal einarbeiten.
Vielleicht habt ihr eine Lösung?

Gibt es auch eine Möglichkeit, einen schlangenlinienförmigen Keil zu machen? So sieht der in Chemfig implementierte gestrichelte Keil aus:
\documentclass[a4paper,parskip,toc=bib,automark]{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage[ngerman]{translator} 
\usepackage[utf8]{inputenc} 
\usepackage{lmodern} 
\usepackage[T1]{fontenc} 
\usepackage{amsmath,amssymb,amstext} 
\usepackage{chemmacros}
\usetikzlibrary{decorations.pathmorphing} 
\usepackage{chemfig} 
   \setatomsep{1.3em} 
   \setdoublesep{2.5pt} 
   \setbondstyle{semithick} 
   \setcrambond{3pt}{0.5pt}{1pt} 
   \setchemrel{2pt}{0.7em}{10em} 
   \setarrowdefault{,1.1,}
   \renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}}

\begin{document} 
\schemestart 
\chemfig{[:18]*5(--O-([::-66]*6(-(<:SPh)--@{carb2}(=[@{db1}]@{o1}O)-=-))-O-)}
\schemestop 
\end{document}
Ich würde mich sehr über eine Antwort freuen.

Viele Grüße,
Diego

Einschlägiger Blog

Verfasst: Di 16. Okt 2012, 09:59
von localghost
Da gibt es hilfreiche Informationen auf »Some TeX Developments« [1-3]. Teil 3 dürfte wohl von speziellem Interesse sein.

[1] Exploring ChemFig: Basics
[2] Exploring ChemFig: Customising appearance
[3] Exploring ChemFig: Going further


Thorsten

Verfasst: Di 16. Okt 2012, 11:46
von cgnieder
Ich habe hier: www.mychemistry.eu/2012/03/wavy-bonds mal beschrieben, wie man solche Bindungen definiert und verwendet.

Grüße

Verfasst: Di 16. Okt 2012, 16:24
von dieg0
Ah, mit \definesubmol gehts also doch. Nur das "\" scheint wichtig zu sein. Ohne Backslash klappt es nur, wenn man \definesubmol unmittelbar vor \chemfig schreibt.
\tikzset{
	rac/.style ={
		decorate,
		decoration ={
			snake,
			amplitude=.5mm,
			segment length=0.8mm
		}
	}
}
\definesubmol{\rac}{-[,,,,rac]}
So klappts auch in der Präambel.

Danke!

Verfasst: Di 16. Okt 2012, 16:42
von cgnieder
Wenn Du ein submol ohne Backslash definierst, muss Du es mit einem Ausrufezeichen aufrufen:
\chemfig{!rac}
Gruß

Verfasst: Di 16. Okt 2012, 16:47
von dieg0
cgnieder hat geschrieben:Wenn Du ein submol ohne Backslash definierst, muss Du es mit einem Ausrufezeichen aufrufen:
\chemfig{!rac}
Gruß
Genau. Mit Backslash genauso.

Verfasst: Di 16. Okt 2012, 19:53
von cgnieder
Ich habe in meinem vorigen Post einen Fehler. Es muss natürlich
\chemfig{!{rac}}
heißen. Wenn man die Klammern weglässt, würde man das submol „r“ gefolgt vom Atom „ac“ aufrufen.

Ansonsten war das mit dem vermeintlich fehlenden Ausrufezeichen ein Missverständnis meinerseits.

Die Definition ohne Beckslash funktioniert (bei mir) problemlos in der Präambel:
\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{decorations.pathmorphing}
\tikzset{
   rac/.style ={
      decorate,
      decoration ={
         snake,
         amplitude=.5mm,
         segment length=0.8mm
      }
   }
}
\definesubmol{rac}{-[,,,,rac]}
\begin{document}


\chemfig{C!{rac}C}

\end{document}
Grüße