Chemfig: Rechtwinklige Reaktionspfeile / Pfeil „um die Ecke“

Formelsatz für Mathematik, Naturwissenschaften und Technik


Benutzeravatar
dieg0
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 20. Aug 2012, 01:05
Wohnort: Dresden
Kontaktdaten:

Chemfig: Rechtwinklige Reaktionspfeile / Pfeil „um die Ecke“

Beitrag von dieg0 »

Hallo,

ich suche eine Möglichkeit, mit Chemfig rechtwinklige Reaktionspfeile zu setzen.

Folgendes Minimalbeispiel soll das verdeutlichen:
\documentclass[a4paper]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\KOMAoptions{fontsize=11pt}
\usepackage{amsmath,amssymb,amstext}
\usepackage{chemmacros}
\usepackage{chemfig}
\renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}}
\setatomsep{16.5pt}
\setbondstyle{line width=0.6pt}
\setcrambond{3pt}{0.6pt}{1.5pt}
\setdoublesep{2.6pt}
\setbondoffset{1.6pt}
\setarrowdefault{,1.0,}

\begin{document}
Bisherige (nicht so schöne) Lösung:

\schemestart
A
\arrow(aa--bb){->}
B
\arrow(@aa--cc){->[][*{0.0} Text1]}[-45]
C
\arrow(@cc--@bb){->[][*{0.180} Text2]}
\schemestop
\\[2em]
So in etwa soll es aussehen:

\schemestart
A
\arrow(aa--bb){->}
B
\arrow(@aa--){->[][*{0} Text1]}[-90]
C
\arrow(--dd){->}
\chemfig{\phantom{D}}
\arrow(@dd--@bb){->[*{0.180} Text2]}
\schemestop
\end{document}
Das obere Beispiel ist meine bisherige Lösung für das Problem. Mit den schrägen Pfeilen sieht das aber nicht so gut aus. Ich möchte nur horizontale und vertikale Pfeile verwenden, was bei drei Verbindungen nur funktioniert, wenn ein Pfeil um die Ecke geht (hier von C nach B). Dabei ist es wichtig, dass Pfeilbeschriftungen, wie in Chemfig üblich, auch weiterhin möglich bleiben. Die gewünschte, schönere Variante habe ich im unteren Beispiel versucht, anzudeuten.

Ich würde mich sehr freuen, wenn ihr eine Idee habt. Oder wenn ihr einen Link zu einer Seite habt, wo sowas schon diskutiert wurde. Ich habe eine Weile gesucht, weil ich der Überzeugung bin, dass ich nicht der Erste mit dem Problem bin, aber ich bin leider nicht fündig geworden.

Viele Grüße,
dieg0


Edit: Eine weitere Möglichkeit, so eine Verzweigung darzustellen, wäre diese hier https://commons.wikimedia.org/wiki/File ... cht-v1.svg

In Chemfig ist leider nur die umgekehrte Variante mit dem \merge-Befehl vorgesehen (Chemfig-Doku, Kapitel 11), der mehrere Verbindungen in einer zusammenfasst, d. h. die Pfeilspitzen sind an den anderen zwei Enden (siehe Beispiel).

Diese Variante wäre natürlich auch interessant...

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Man kann sich neue Pfeiltypen definieren. Das ist in der Doku im Abschnitt Arrows customization beschrieben. Wenn es aber nur ein einziger Pfeil sein soll, dann kann man auch manuell den Pfeil zeichen. Ein Schema ist ja ein Tikzpicture und die einzelnen Komponenten sind Nodes, auf die man zugreifen kann.

Zweimal kompilieren:
\documentclass[a4paper,11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{chemfig}

\begin{document}

\schemestart
  A
  \arrow(aa--bb){->[Text2]}[,1.5]
  B
  \arrow(@aa--cc){->[][*{0} Text1]}[-90]
  C
\schemestop
\makeatletter
\chemmove{
  \draw[-CF@full,shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset]
    (cc) -| node[pos=.7,right] {Text3} (bb) ;
}
\makeatother

\end{document}
Für einen Befehl, der das Gegenteil zu \merge ist (\fork) siehe z.B. Forked arrows with chemfig auf TeX.sx

Grüße
Clemens
Paketauthor

Schokospion
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 22. Sep 2015, 15:54

Beitrag von Schokospion »

Hallo,

ich würde gerne wie in der Vorlage die Pfeile mit den Nummern 2, 10, 11 in das Reaktionsschema einbauen und auch die Zahlen dazu wie in der Vorlage.
Habe schon einiges ausprobiert, leider hat es nicht funktioniert. Hier mein Code:
\documentclass{scrartcl}
\usepackage[latin1]{inputenc}

\usepackage{caption}
\usepackage{newfloat}
\DeclareFloatingEnvironment{scheme}
\usepackage{chemfig} % LaTeX
\usepackage[version=3]{mhchem}


\begin{document}
\begin{center}\setatomsep{1.5em}
\schemestart
\chemname{\chemfig[][scale=0.5]{*6(-=(-)-(-)=-=)}}{o-Xylol}
\arrow(oX--TA){->[1]}
\chemname{\chemfig[][scale=0.5]{*6((-)-=-=-(-=[:90]O)=)}}{o-TA}
\arrow{->[4]}[,2.0]
\chemname{\chemfig[][scale=0.5]{*6(-=(*5(--O-(=O)--))-=-=)}}{PH}
\arrow(PH--PA){->[8]}
\chemname{\chemfig[][scale=0.5]{*6(-=(*5(-(=O)-O-(=O)--))-=-=)}}{PA}
\arrow(@TA--PAld){->[*{0}3]}[45]
\chemname{\chemfig[][scale=0.5]{*6((-=[:-90]O)-=-=-(-=[:90]O)=)}}{PAld}
\arrow(--PAc){->[7]} \chemname{\chemfig[][scale=0.5]{*6((-(=[:-90]O)(-[::-60]HO))-=-=-(-(=[:90]O)(-[::60]HO))=)}}{PAc}
\arrow(@PAc--@PA){->[*{0}9]}[-45]
\arrow(@TA--TAc){->[*{0}5]}[-45]
\chemname{\chemfig[][scale=0.5]{*6((-)-=-=-(-(=[:90]O)(-[::60]HO))=)}}{TAc}
\arrow(@TAc--@PH){->[*{0}6]}[45]
\arrow(@PAld--@TAc){0}[-90]
\arrow(@TAc--COx){0}[-90]
\chemfig{CO_x}
\schemestop

\makeatletter
\chemmove{
  \draw[-CF@full, shorten <=\CF@arrow@offset, shorten >=\CF@arrow@offset]
    (COx) -| node[pos=0.2,above] {10} (PA) ;
}
\makeatother
\end{center}
\end{document}
Ebenfalls würde ich gerne die Namen o-Xylol, TA, PH & PA auf einer horizontalen Linie haben. Ich habe das bereits mit \chemnameinit probiert, leider hat es mir die Reaktanden verschoben.

Vielen Dank für eure Hilfe.

Grüße
Schokospion
Dateianhänge
Vorlage.pdf
(14.49 KiB) 360-mal heruntergeladen

Antworten