Ich würde gerne die Antwort auf meine Frage um 90° gedreht mit der Antwort von runiq , die den Pfeil als -X> bezeichnet, so kombinieren, dass der untere Bogenpfeil vertikal gespiegelt wird und statt eines einfachen Reaktionspfeil hätte ich gerne ein Gleichgewichtspfeil. Um folgendes Ergebnis zu erhalten:

alt text

Das Ganze um 90° zu drehen, ist nicht mein Problem. Auch habe ich bereits die rechte Seite dank @Clemens Codes durch einfaches leer-lassen des entsprechenden Labels schon so, wie ich mir das annähernd wünsche. Allerdings fehlt mir noch die linke Seite.

Code

Open in writeLaTeX
\documentclass{article}
\usepackage{chemfig}

\makeatletter
% Einen Pfeiltyp `-y>' mit 6 optionalen Argumenten definieren:
% \arrow{-y>[<Label Bogen Anfang>]%
%           [<Label Bogen Ende>]%
%           [<Label unterhalb>]%
%           [<Pfeil Offset>]%
%           [<Quotient Bogenradius/Pfeillänge>]% Default: 0.333
%           [<Hälfte Winkel des Bogens>]% Default: 60
% }
\definearrow{7}{<y>}{%
    % eventuelle Verschiebung:
    \CF@arrow@shift@nodes{#5}%
    % Bestimme Koordinaten für Gleichgewichtspfeile:
    \ifx\@empty#4\@empty
    \else
      \pgfmathsetmacro\CF@tmp@stra{(1-#4)/2}%
      \pgfmathsetmacro\CF@tmp@strb{(1-#4)/2+#4}%
    \fi
    \edef\CF@tmp@str{%
      \noexpand\path[allow upside down](\CF@arrow@start@node)--(\CF@arrow@end@node)
        node[pos=0,sloped,yshift=1pt](\CF@arrow@start@node @u0){}
        node[pos=\ifx\@empty#4\@empty0\else\CF@tmp@stra\fi,sloped,yshift=-1pt]
          (\CF@arrow@start@node @d0){}
        node[pos=1,sloped,yshift=1pt](\CF@arrow@start@node @u1){}
        node[pos=\ifx\@empty#4\@empty1\else\CF@tmp@strb\fi,sloped,yshift=-1pt]
        (\CF@arrow@start@node @d1){};%
    }\CF@tmp@str
    % zeichne Hauptpfeile:
    \expandafter\draw\expandafter[\CF@arrow@current@style,-CF@half]
      (\CF@arrow@start@node @u0)--(\CF@arrow@start@node @u1)node[midway](yarrow@arctangent){};%
    \expandafter\draw\expandafter[\CF@arrow@current@style,CF@half-]
      (\CF@arrow@start@node @d0)--(\CF@arrow@start@node @d1);%    % gibt es Label #1?
    \edef\CF@tmp@str{\ifx\@empty#1\@empty[draw=none]\fi}%
    % wenn ja, zeichne Linke Bogenhälfte:
    \expandafter\draw\CF@tmp@str (yarrow@arctangent)%
        arc[
          radius=\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#6\@empty0.333\else#6\fi,
          start angle=\CF@arrow@current@angle-90,
          delta angle=-\ifx\@empty#7\@empty60\else#7\fi
        ]
        node(yarrow@start){};
    % gibt es Label #2?
    \edef\CF@tmp@str{[\ifx\@empty#2\@empty draw=none,\fi-CF@full]}%
    % wenn ja, zeichne zweite Bogenhälfte:
    \expandafter\draw\CF@tmp@str (yarrow@arctangent)%
        arc[
          radius=\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#6\@empty0.333\else#6\fi,
          start angle=\CF@arrow@current@angle-90,
          delta angle=\ifx\@empty#7\@empty60\else#7\fi
        ]
        node(yarrow@end){};
    % Label platzieren; dafür müssen wir das Vorzeichen der Verschiebung kennen:
    \edef\CF@tmp@str{\if\string-\expandafter\@car\detokenize{#5.}\@nil-\else+\fi}%
    % platziere Label #1 und #2:
    \CF@arrow@display@label{#1}{0}{\CF@tmp@str}{yarrow@start}{#2}{1}{\CF@tmp@str}{yarrow@end}%
    % platziere Label #3:
    \CF@arrow@display@label{#3}{0.5}{-}{\CF@arrow@start@node}{}{}{}{\CF@arrow@end@node}%
}
\makeatother

\begin{document}

\schemestart[-90]
  A \arrow{<y>[% hier würde normalerweise a stehen, in diesem Bsp. wurde es gelöscht. So erhält meine nur eine Hälfte des Bogenpfeils.
  ][*{0}b][*{0}c]} B
\schemestop

\end{document}

gefragt 29 Mär '14, 10:31

Bettina's gravatar image

Bettina
65541923
Akzeptiert: 83%

bearbeitet 30 Mär '14, 05:06

Kann mir keiner helfen?

(09 Apr '14, 09:19) Bettina

Das ist nicht so trivial... ich hab mal was gebastelt, was aber nur manchmal funktioniert... deswegen hab ichs noch nicht gepostet. Ich kann die halbe Lösung aber mal als Antwort posten, wenn Du möchtest

(09 Apr '14, 12:12) Clemens

@Clemens Fände ich interessant! Und Du hast ja schon Arbeit reingesteckt, so wäre sie nicht vergebens, wenn das schonmal gepostet ist. Bringt eigentlich die neue arrows.meta-Bibliothek`für chemfig-Pfeile Vorteile?

(09 Apr '14, 12:48) stefan ♦♦

Klar, würde ich mich über deine Antwort freuen, @Clemens. Auch wenn sie vielleicht nicht perfekt sein sollte, für mich ist es auf jeden Fall einen Versuch wert.

(09 Apr '14, 13:28) Bettina

@stefan ich hab mir die neue Bibliothek noch nicht wirklich angesehen... vielleicht.

(10 Apr '14, 11:35) Clemens

Das folgende ist nur eine Teillösung. Ich definiere einen Pfeiltyp <x>, der vier optionale Argumente für die Beschriftung hat:

Open in writeLaTeX
\schemestart
  A \arrow{<x>[a][b][c][d]} B
\schemestop

\par\bigskip

\schemestart
  A \arrow{<x>[a][b][c][d]}[-90] B
\schemestop

Der Code ergibt folgendes (was die Schwäche sofort demonstriert):

alt text

Mit

Open in writeLaTeX
\schemestart
  A \arrow{<x>[][*{0}b][*{0.0}c]}[-90] B
\schemestop

erhält man aber wenigstens wie gewünscht

alt text

Hier ist der komplette Code:

Open in writeLaTeX
\documentclass{article}
\usepackage{chemfig}

\makeatletter
% Einen Pfeiltyp `<x>' mit 9 optionalen Argumenten definieren:
% \arrow{<x>[<Label Bogen oben Anfang>]%          #1
%           [<Label Bogen oben Ende>]%            #2
%           [<Label Bogen unten Anfang>]%         #3
%           [<Label Bogen oben Ende>]%            #4
%           [<Verhältnis Gleichgewichtspfeile>]%  #5
%           [<Pfeil Offset>]%                     #6
%           [<Quotient Bogenradius/Pfeillänge>]%  #7 % Default: 0.333
%           [<Hälfte Winkel des oberen Bogens>]%  #8 % Default: 60
%           [<Hälfte Winkel des unteren Bogens>]% #9 % Default: 60
% }
\definearrow{9}{<x>}{%
  % eventuelle Verschiebung:
  \CF@arrow@shift@nodes{#6}%
  % Bestimme Koordinaten für Gleichgewichtspfeile:
  \ifx\@empty#5\@empty
  \else
    \pgfmathsetmacro\CF@tmp@stra{(1-#5)/2}%
    \pgfmathsetmacro\CF@tmp@strb{(1-#5)/2+#5}%
  \fi
  \edef\CF@tmp@str{%
    \noexpand\path[allow upside down](\CF@arrow@start@node)--(\CF@arrow@end@node)
      coordinate[pos=0,sloped,yshift=1pt](\CF@arrow@start@node @u0)
      coordinate[pos=\ifx\@empty#5\@empty0\else\CF@tmp@stra\fi,sloped,yshift=-1pt]
        (\CF@arrow@start@node @d0)
      coordinate[pos=1,sloped,yshift=1pt](\CF@arrow@start@node @u1)
      coordinate[pos=\ifx\@empty#5\@empty1\else\CF@tmp@strb\fi,sloped,yshift=-1pt]
      (\CF@arrow@start@node @d1);%
  }\CF@tmp@str
  % zeichne Hauptpfeile:
  \expandafter\draw\expandafter[\CF@arrow@current@style,-CF@half]
    (\CF@arrow@start@node @u0)--(\CF@arrow@start@node @u1)
    coordinate[midway] (xuarrow@arctangent);%
  \expandafter\draw\expandafter[\CF@arrow@current@style,CF@half-]
    (\CF@arrow@start@node @d0)--(\CF@arrow@start@node @d1)
    coordinate[midway](xdarrow@arctangent);%
  % gibt es Label #1?
  \edef\CF@tmp@str{\ifx\@empty#1\@empty[draw=none]\fi}%
  % wenn ja, zeichne erste obere Bogenhälfte:
  \expandafter\draw\CF@tmp@str (xuarrow@arctangent)%
    arc[
      radius=\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#7\@empty0.333\else#7\fi,
      start angle=\CF@arrow@current@angle-90,
      delta angle=-\ifx\@empty#8\@empty60\else#8\fi
    ]
    coordinate (xuarrow@start) ;
  % gibt es Label #2?
  \edef\CF@tmp@str{[\ifx\@empty#2\@empty draw=none,\fi-CF@full]}%
  % wenn ja, zeichne zweite obere Bogenhälfte:
  \expandafter\draw\CF@tmp@str (xuarrow@arctangent)%
    arc[
      radius=\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#7\@empty0.333\else#7\fi,
      start angle=\CF@arrow@current@angle-90,
      delta angle=\ifx\@empty#8\@empty60\else#8\fi
    ]
    coordinate (xuarrow@end) ;
  % gibt es Label #3?
  \edef\CF@tmp@str{\ifx\@empty#3\@empty[draw=none]\fi}%
  % wenn ja, zeichne erste untere Bogenhälfte:
  \expandafter\draw\CF@tmp@str (xdarrow@arctangent)%
    arc[
      radius=-\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#7\@empty0.333\else#7\fi,
      start angle=90-\CF@arrow@current@angle,
      delta angle=-\ifx\@empty#9\@empty60\else#9\fi
    ]
    coordinate (xdarrow@start) ;
  % gibt es Label #4?
  \edef\CF@tmp@str{[\ifx\@empty#4\@empty draw=none,\fi-CF@full]}%
  % wenn ja, zeichne zweite untere Bogenhälfte:
  \expandafter\draw\CF@tmp@str (xdarrow@arctangent)%
    arc[
      radius=-\CF@compound@sep*\CF@current@arrow@length*\ifx\@empty#7\@empty0.333\else#7\fi,
      start angle=90-\CF@arrow@current@angle,
      delta angle=\ifx\@empty#9\@empty60\else#9\fi
    ]
    coordinate (xdarrow@end) ;
  % Label platzieren; dafür müssen wir das Vorzeichen der Verschiebung kennen:
  \edef\CF@tmp@str{\if\string-\expandafter\@car\detokenize{#6.}\@nil-\else+\fi}%
  % platziere Label #1 und #2:
  \CF@arrow@display@label
    {#1}{0}{\CF@tmp@str}{xuarrow@start}
    {#2}{1}{\CF@tmp@str}{xuarrow@end}%
  % platziere Label #3 und #4:
  \edef\CF@tmp@str{\if\string-\expandafter\@car\detokenize{#6.}\@nil-\else+\fi}%
  \CF@arrow@display@label
    {#3}{0}{\CF@tmp@str}{xdarrow@start}
    {#4}{1}{\CF@tmp@str}{xdarrow@end}%
}
\makeatother

\begin{document}

\schemestart
  A \arrow{<x>[][*{0}b][*{0.0}c]}[-90] B
\schemestop

\end{document}
Permanenter link

beantwortet 10 Apr '14, 10:25

Clemens's gravatar image

Clemens
19.0k113060

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×27

Frage gestellt: 29 Mär '14, 10:31

Frage wurde angeschaut: 3,199 Mal

Zuletzt aktualisiert: 10 Apr '14, 11:35