Seite 1 von 1

Ausrichten von Reaktionsgleichungen mit chemfig

Verfasst: Di 26. Nov 2019, 13:33
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}

Verfasst: Mi 27. Nov 2019, 01:35
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}

Verfasst: Mi 27. Nov 2019, 08:19
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.

Verfasst: Mi 27. Nov 2019, 08:53
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.

Verfasst: Mi 27. Nov 2019, 14:26
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.

Verfasst: Mi 27. Nov 2019, 15:17
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

Verfasst: Mi 27. Nov 2019, 16:47
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}

Verfasst: Mi 27. Nov 2019, 23:41
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}