Ich brauche die Lösung von meiner Frage statt mit einem Reaktionspfeil (\arrow{-y>}) mit einem Gleichgewichtspfeil ( so etwas wie \arrow{<=y>}:

alt text

Leider bekomme ich trotz der erläuternden Kommentare es nicht hin, die Definition von \definearrow zwischen \makeatletter und \makeatother so zu modifizieren, dass ich den gewünschten Gleichgewichtspfeil erhalte.

\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{6}{-y>}{%
    % eventuelle Verschiebung:
    \CF@arrow@shift@nodes{#4}%
    % zeichne Hauptpfeil:
    \expandafter\draw\expandafter[\CF@arrow@current@style,-CF@full]
      (\CF@arrow@start@node)--(\CF@arrow@end@node)node[midway](yarrow@arctangent){};%
    % 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#5\@empty0.333\else#5\fi,
          start angle=\CF@arrow@current@angle-90,
          delta angle=-\ifx\@empty#6\@empty60\else#6\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#5\@empty0.333\else#5\fi,
          start angle=\CF@arrow@current@angle-90,
          delta angle=\ifx\@empty#6\@empty60\else#6\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{#4.}\@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

\newcommand\stack[1]{\begin{tabular}{@{}c@{}}#1\end{tabular}}
\begin{document}

\schemestart[-90]
PEP
  \arrow{%
    -y>[*{0}\scriptsize{ADP}]%
       [*{0}\scriptsize{ATP}]%
       [*{180.180}{\rotatebox{180}{\stack{PykF,\\PykA}}}]%
     }[-90,,thick]
Pyruvat
\schemestop

\end{document}

gefragt 01 Sep '13, 12:08

Bettina's gravatar image

Bettina
665181923
Akzeptiert-Rate: 25%

bearbeitet 01 Sep '13, 13:10

cgnieder's gravatar image

cgnieder
22.1k253463


Da Du diese Frage in einem Kommentar zur letzten Frage schon angekündigt hast, hab ich schon Code parat. Die Grundidee ist, den Teil

Open in Online-Editor
% zeichne Hauptpfeil:
\expandafter\draw\expandafter[\CF@arrow@current@style,-CF]
  (\CF@arrow@start@node)--(\CF@arrow@end@node)node[midway]

Deiner jetztigen Definition durch den Code für einen Gleichgewichtspfeil auszutauschen. Das muss ein bisschen abgeändert zu der Definition des <=> Pfeils in chemfig.tex geschehen, da die Mitte des oberen Pfeils für den Bogen verfügbar sein soll, also merkt sich der Code unten die Mitte des oberen Pfeils als (yarrow@arctangent).

Da wir schon dabei sind und weil es einfacher ist als zwei weitere Pfeiltypen zu definieren, führe ich außerdem einen Parameter ein, der das Verhältnis der Gleichgewichtspfeile bekommt, und den unteren Pfeil entsprechend staucht oder streckt.

Die drei folgenden Eingaben führen dann zu dem Screenshot:

Open in Online-Editor
\schemestart
  A \arrow{<y>[a][b][c]} B
\schemestop

\bigskip

\schemestart
  A \arrow{<y>[a][b][c][.7][10pt][.5][45]} B
\schemestop

\bigskip

\schemestart
  A \arrow{<y>[a][b][c][1.333]} B
\schemestop

alt text

Hier ist nun der komplette Code:

Open in Online-Editor
\documentclass{article}
\usepackage{chemfig}

\makeatletter
% Einen Pfeiltyp `<y>' mit 7 optionalen Argumenten definieren:
% Syntax:
% \arrow{-y>[<Label Bogen Anfang>]%
%           [<Label Bogen Ende>]%
%           [<Label unterhalb>]%
%           [<Verhältnis Gleichgewichtspfeile>]%
%           [<Pfeil Offset>]%
%           [<Quotient Bogenradius/Pfeillänge>]% Default: 0.333
%           [<Hälfte Winkel des Bogens>]% Default: 60
% }
% Inspiration für den Code findet man in chemfig.tex in den Definitionen der
% Pfeiltypen `<=>' und `-U>'
%
\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[left]}]
      (\CF@arrow@start@node @u0)--(\CF@arrow@start@node @u1)node[midway](yarrow@arctangent){};%
    \expandafter\draw\expandafter[\CF@arrow@current@style,{CF[left]}-]
      (\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]}%
    % 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
  A \arrow{<y>[a][b][c]} B
\schemestop

\bigskip

\schemestart
  A \arrow{<y>[a][b][c][.7][10pt][.5][45]} B
\schemestop

\bigskip

\schemestart
  A \arrow{<y>[a][b][c][1.333]} B
\schemestop

\end{document}
Permanenter link

beantwortet 01 Sep '13, 12:48

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 15 Aug '16, 15:00

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×41
×35

gestellte Frage: 01 Sep '13, 12:08

Frage wurde gesehen: 10,717 Mal

zuletzt geändert: 15 Aug '16, 15:00