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, 06:08

Bettina's gravatar image

Bettina
65541923
Akzeptiert: 83%

bearbeitet 01 Sep '13, 07:10

Clemens's gravatar image

Clemens
19.0k113060


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, 06:48

Clemens's gravatar image

Clemens
19.0k113060

bearbeitet 15 Aug, 09:00

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
×27

Frage gestellt: 01 Sep '13, 06:08

Frage wurde angeschaut: 3,088 Mal

Zuletzt aktualisiert: 15 Aug, 09:00