Advertisement
Guest User

Updated Version of -X>

a guest
Feb 21st, 2020
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 3.33 KB | None | 0 0
  1. \documentclass[border=1mm,tikz]{standalone}
  2. \usepackage{chemfig}
  3. \usepackage[version=4,arrows=pgf-filled]{mhchem}
  4.  
  5. % allow for editing Chemfig
  6. \catcode`\_=11
  7.  
  8. % Initial arguments:
  9. % #1, #2: Same as for -U> (above arrow)
  10. % #3: Additional label at midpoint (also above arrow)
  11. % #4, #5, #6: Like #1, #2, and #3, but below arrow
  12. % #7: Optional shift, default 0
  13. % #8: Optional arrow radius
  14. % #9: Optional arrow angle  
  15. \definearrow9{-X>}{%
  16.     \CF_arrowshiftnodes{#7}%
  17.     \expandafter\draw\expandafter[\CF_arrowcurrentstyle](\CF_arrowstartnode)--(\CF_arrowendnode)node[midway](Xarrowarctangent){};%
  18.     \CF_ifempty{#8}
  19.        {\def\CF_Xarrowradius{0.333}}
  20.        {\def\CF_Xarrowradius{#8}}%
  21.     \CF_ifempty{#9}%
  22.         {\def\CF_Xarrowabsangle{60}}
  23.        {\pgfmathsetmacro\CF_Xarrowabsangle{abs(#9)}}
  24.     % Draw top arrow (start)
  25.     \edef\CF_tmpstr{[\CF_ifempty{#1}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}%
  26.     \expandafter\draw\CF_tmpstr (Xarrowarctangent)%
  27.     arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,start angle=\CF_arrowcurrentangle-90,delta angle=-\CF_Xarrowabsangle]node(Xarrow1start){};
  28.     % Draw bottom arrow (end)
  29.     \edef\CF_tmpstr{[\CF_ifempty{#2}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-CF]}%
  30.     \expandafter\draw\CF_tmpstr (Xarrowarctangent)%
  31.     arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,%
  32.     start angle=\CF_arrowcurrentangle-90,%
  33.     delta angle=\CF_Xarrowabsangle]%
  34.     node(Xarrow1end){};
  35.     % Draw bottom arrow (start)
  36.     \edef\CF_tmpstr{[\CF_ifempty{#4}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-]}%
  37.     \expandafter\draw\CF_tmpstr (Xarrowarctangent)%
  38.     arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,start angle=\CF_arrowcurrentangle+90,delta angle=\CF_Xarrowabsangle]node(Xarrow2start){};
  39.     % Draw bottom arrow (end)
  40.     \edef\CF_tmpstr{[\CF_ifempty{#5}{draw=none}{\unexpanded\expandafter{\CF_arrowcurrentstyle}},-CF]}%
  41.     \expandafter\draw\CF_tmpstr (Xarrowarctangent)%
  42.     arc[radius=\CF_compoundsep*\CF_currentarrowlength*\CF_Xarrowradius,%
  43.     start angle=\CF_arrowcurrentangle+90,%
  44.     delta angle=-\CF_Xarrowabsangle]%
  45.     node(Xarrow2end){};
  46.     % Insert labels
  47.     \pgfmathsetmacro\CF_tmpstra{\CF_Xarrowradius*cos(\CF_arrowcurrentangle)<0?"-":"+"}%
  48.     \pgfmathsetmacro\CF_tmpstrb{\CF_Xarrowradius*cos(\CF_arrowcurrentangle)<0?"+":"-"}%
  49.     \ifdim\CF_Xarrowradius pt>0 pt
  50.         \CF_arrowdisplaylabel{#1}{0}\CF_tmpstra{Xarrow1start}{#2}{1}\CF_tmpstra{Xarrow1end}%
  51.         \CF_arrowdisplaylabel{#4}{0}\CF_tmpstrb{Xarrow2start}{#5}{1}\CF_tmpstrb{Xarrow2end}%
  52.         \CF_arrowdisplaylabel{#3}{0.5}\CF_tmpstra\CF_arrowstartnode{}{}{}\CF_arrowendnode%
  53.         \CF_arrowdisplaylabel{#6}{0.5}\CF_tmpstrb\CF_arrowstartnode{}{}{}\CF_arrowendnode%
  54.     \else
  55.         \CF_arrowdisplaylabel{#2}{0}\CF_tmpstra{Xarrow1start}{#1}{1}\CF_tmpstra{Xarrow1end}%
  56.         \CF_arrowdisplaylabel{#5}{0}\CF_tmpstrb{Xarrow2start}{#4}{1}\CF_tmpstrb{Xarrow2end}%
  57.         \CF_arrowdisplaylabel{#3}{0.5}\CF_tmpstra\CF_arrowstartnode{}{}{}\CF_arrowendnode%
  58.         \CF_arrowdisplaylabel{#6}{0.5}\CF_tmpstrb\CF_arrowstartnode{}{}{}\CF_arrowendnode%
  59.     \fi
  60. }
  61. % stop editting chemfig
  62. \catcode`\_=8
  63.  
  64.  
  65. \begin{document}
  66. \schemestart
  67. A
  68. \arrow{-X>[1][2][3][4][5][6]}
  69. B
  70. \schemestop
  71. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement