Ich würde gerne die Antwort auf meine Frage um 90° gedreht mit der Antwort von 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, 15:31 Bettina |
Das folgende ist nur eine Teillösung. Ich definiere einen Pfeiltyp 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): Mit Open in writeLaTeX
\schemestart A \arrow{<x>[][*{0}b][*{0.0}c]}[-90] B \schemestop erhält man aber wenigstens wie gewünscht 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} beantwortet 10 Apr '14, 16:25 cgnieder |
Kann mir keiner helfen?
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
@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?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.
@stefan ich hab mir die neue Bibliothek noch nicht wirklich angesehen... vielleicht.