Ausrichten von Reaktionsgleichungen mit chemfig

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Ausrichten von Reaktionsgleichungen mit chemfig

Beitrag von M0M0 »

Die erste Gleichung, die der unten stehende Code erzeugt, zeigt deutlich worin das Problem liegt, die Baseline der beiden Moleküle ist nicht auf einer Höhe. Als Lösung für dieses Problem rät die Dokumentation des Paketes zur Verwendung einer der beiden folgenden Gleichungen. Hierbei ist nun wie gewünscht das Molekül auf einer Höhe, allerdings befindet sich der Reaktionspfeil an einer sehr unüblichen Stelle.

Ich hätte es gerne so, dass der Pfeil in Höhe des Zentrums des ersten Moleküls beginnt und dennoch sich die beiden "A" auf der gleichen Höhe befinden.

Der Beispielcode ist der Dokumentation des Paktes Chemfig unter "IV.5 Anchoring" entnommen.
\documentclass{article}
\usepackage{chemfig}

\begin{document}
	\setchemfig{scheme debug=true}
	\schemestart
	\chemfig{A * 5(-----)}
	\arrow
	\chemfig{A * 5(---(-)--)}
	\schemestop
	
	
	\schemestart
	\chemfig{A * 5(-----)}
	\arrow(.base east--.base west)
	\chemfig{A * 5(---(-)--)}
	\schemestop
	
	
	\schemestart
	\chemfig{A * 5(-----)}
	\arrow(foo.mid east--bar.mid west)
	\chemfig{A * 5(---(-)--)}
	\schemestop
\end{document}
Dateianhänge
So-soll-es-sein.PNG
So-soll-es-sein.PNG (6.18 KiB) 3575 mal betrachtet

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Wie hänge ich ein Bild an meine Frage?

Bild

Darfst Du die Strukturformeln drehen?
\documentclass[border=5pt]{standalone}
\usepackage{chemfig}

\begin{document}
\schemestart
\chemfig{[:-54]A * 5(-----)}
\arrow
\chemfig{[:-54]A * 5(---(-)--)}
\schemestop
\end{document}

M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Beitrag von M0M0 »

Ich habe diese Beispiel gewählt, da es in der Dokumentation zu dem Thema zu finden war und mir daher geeignet erschien, um zu verdeutlichen was ich meine. Das Problem ist natürlich allgeimein gültig, aber nur bei einigen Molekülen lässt sich durch geschicktes "drehen" erreichen, dass sie die gleiche Höhe haben. Von daher hilft mir das nicht weiter, trotzdem Danke für dein Bemühen.
Zuletzt geändert von M0M0 am Mi 27. Nov 2019, 11:33, insgesamt 1-mal geändert.

Gast

Beitrag von Gast »

Schau mal in Abschnitt 8 Subscheme in der Anleitung. Und bei den Pfeilen kann man AFAIK auch noch angeben, von wo nach wo sie gehen sollen, statt den Default zu verwenden.

M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Beitrag von M0M0 »

In der Tat führt:
\documentclass{article}
\usepackage{chemfig}

\begin{document}
   \setchemfig{scheme debug=true}
   \schemestart
   \subscheme{\chemfig{A * 5(-----)}
   \arrow}
   \chemfig{A * 5(---(-)--)}
   \schemestop
\end{document}
zum Erfolg, hat da zuvor gar nicht dran gedacht, Danke.
Das manuelle Ausrichten der Pfeile war ja eben das Problem, es lässt sich eben nicht einstellen, dass diese von "east" der linken Box bis "west" gehen soll, ohne dass das zweite Molekül zentriert wird. Man müsste also herausfinden wie sich bei "gesetzer" Baseline der "Ort" der rechten Box, welcher sich auf gleicher Höhe befindet wie das Center der Linken für Tikz ansprechen lässt. Hatte gehofft dafür eine Antwort zu finden, aber mit dem "Trick" über das Subscheme passt es ja dann soweit.

M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Beitrag von M0M0 »

Ok, wohl doch zu früh gefreut. Die Lösung kann nur funktionieren, wenn die weniger hohe Box links steht. Anderfalls beginnt der Pfeil logischerweise wieder bei "east" der linken Box, ist damit also zu hoch.
\documentclass{article}
\usepackage{chemfig}

\begin{document}
   \setchemfig{scheme debug=true}
   \schemestart
   \subscheme{
   \chemfig{A * 5(---(-)--)}
   \arrow
	}
   \chemfig{A * 5(-----)}
   \schemestop
\end{document}
Dem Bild ist zu entnehmen, wie ich es gerne stattdessen hätte.
Bild
Dateianhänge
So-soll-es-sein2.PNG
So-soll-es-sein2.PNG (5.79 KiB) 3410 mal betrachtet

M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Beitrag von M0M0 »

Habe etwas herumprobiert und je eine Kombination aus Pfeil und Molekül als eigenes Scheme zu verwenden, die man dann aneinander "klebt" klappt so halb. Hierbei ist durch den automatischen Abstand zwischen den Schemes zwar der Abstand zwischen den Molekülen verzerrt, dies fällt allerdings kaum auf. Das größere Problem ist, dass sich damit immer noch nicht eine Kombination aus aus einem kleinen zum mehr als einem aufeinanderfolgenden großen Molekülen darstellen lässt.

Oberes Beispiel zeigt, dass das konkrete Problem einigermaßen gut gelöst wird. Unteres zeigt wo es dann immer noch hakt.
\documentclass{article}
\usepackage{chemfig}

\begin{document}
   \setchemfig{scheme debug=true}
   \schemestart[][south]
   \chemfig{A * 5(-----)}\arrow
   \schemestop
   \schemestart[][south]
   \chemfig{A * 5(---(-)--)}
   \schemestop
   \schemestart[][south]
   \subscheme{
   \arrow \chemfig{A * 5(-----)}
	}
   \schemestop
   
   
   \setchemfig{scheme debug=true}
   \schemestart[][south]
   \chemfig{A * 5(-----)}\arrow
   \schemestop
   \schemestart[][south]
   \chemfig{A * 5(---(-)--)}
   \schemestop
   \schemestart[][south]
   \subscheme{
   	\arrow \chemfig{A * 5(---(-)--)}
   }
   \schemestop
\end{document}

M0M0
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: So 24. Nov 2019, 18:59

Beitrag von M0M0 »

Diesmal habe ich eine befriedigende Lösung gefunden. Wie man dem Code entnehmen kann, ist sie alles andere als elegant, da praktisch zwei Reaktionsschemata übereinander gezeichnet werden und ich bin davon überzeugt, dass es auch einfacher gehen muss (da diese Art der Ausrichtung in vielen Büchern so verwendet wird), aber es funktioniert so.
\documentclass{article}
\usepackage{chemfig}

\begin{document}
   \setchemfig{scheme debug=true}%Zur einfachen Überprüfung der korrekten Ausrichtung 
   
   \schemestart%Hier geht es los
   \color{white}%Sorgt für "leere" Box,...
   \chemfig{A * 5(-----)}%die die Größe des Moleküls hat, an dem ausgerichtet werden soll
   \arrow%Zeichnet den später sichtbaren, am gewünschten Molekül zentriertem Pfeil
   \color{white}				
   \chemfig{A * 5(-----)}%Die nächste "leere" Box im Schema...
   \arrow
   \color{white}				
   \chemfig{A * 5(-----)}%und noch eine 
   \arrow(@c2.base west--.base east)%Pfeil von nicht sichtbarer Komponente 2...
   {0}%,den man selbst auch nicht sieht,...
   [180]%zum Beginn des Schemas 
   \chemfig{A * 5(-----)}%Erstes Molekül
   \arrow(.base east--.base west){0}%Nicht sichtbarer Pfeil, der...
   \chemfig{A * 5(---(-)--)}%das nächste Molekül korrekt ausrichtet
   \arrow(.base east--.base west){0}%Und noch ein nicht sichtbarer Pfeil,...
   \chemfig{A * 5(-----)}%der das letzte Molekül korrekt ausrichtet
   \schemestop%und Ende
\end{document}

Antworten