Advertisement
Guest User

quadruple arrow

a guest
Feb 23rd, 2015
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 3.05 KB | None | 0 0
  1. \makeatletter
  2.  
  3. % Name of the new directions
  4. \xyletcsnamecsname@{dir4{}}{dir{}}
  5. \xydefcsname@{dir4{-}}{\line@ \quadruple@\xydashh@}
  6. \xydefcsname@{dir4{.}}{\point@ \quadruple@\xydashh@}
  7. \xydefcsname@{dir4{~}}{\squiggle@ \quadruple@\xybsqlh@}
  8. \xydefcsname@{dir4{>}}{\Tttip@}
  9. \xydefcsname@{dir4{<}}{\reverseDirection@\Tttip@}
  10.  
  11. % quadruple command
  12. % Beware: the % position is important !!
  13. \xydef@\quadruple@#1{%
  14.     \edef\Drop@@{%
  15.         \dimen@=#1\relax
  16.         \dimen@=.5\dimen@
  17.         \A@=-\sinDirection\dimen@
  18.         \B@=\cosDirection\dimen@
  19.         \setboxz@h{%
  20.             \setbox2=\hbox{\kern3\A@\raise3\B@\copy\z@}%
  21.             \dp2=\z@ \ht2=\z@ \wd2=\z@ \box2
  22.             \setbox2=\hbox{\kern\A@\raise\B@\copy\z@}%
  23.             \dp2=\z@ \ht2=\z@ \wd2=\z@ \box2
  24.             \setbox2=\hbox{\kern-\A@\raise-\B@\copy\z@}%
  25.             \dp2=\z@ \ht2=\z@ \wd2=\z@ \box2
  26.             \setbox2=\hbox{\kern-3\A@\raise-3\B@ \noexpand\boxz@}%
  27.             \dp2=\z@ \ht2=\z@ \wd2=\z@ \box2
  28.         }%
  29.         \ht\z@=\z@ \dp\z@=\z@ \wd\z@=\z@ \noexpand\styledboxz@
  30.     }%
  31. }
  32.  
  33. % quadruple arrows heads : positionning ok, joints to do
  34. \xydef@\Tttip@{\kern2pt \vrule height2pt depth2pt width\z@
  35.     \Tttip@@ \kern2pt \egroup
  36.     \U@c=0pt \D@c=0pt \L@c=0pt \R@c=0pt \Edge@c={\circleEdge}%
  37.     \def\Leftness@{.5}\def\Upness@{.5}%
  38.     \def\Drop@@{\styledboxz@}\def\Connect@@{\straight@{\dottedSpread@\jot}}}
  39.    
  40. \xydef@\Tttip@@{%
  41.     \dimen@=.25\dimen@
  42.     \B@=\cosDirection\dimen@
  43.     \setboxz@h\bgroup\reverseDirection@\line@ \wdz@=\z@ \ht\z@=\z@ \dp\z@=\z@
  44.     {\vDirection@(1,-1)\xydashl@ \xyatipfont\char\DirectionChar}%
  45.     {\vDirection@(1,+1)\xydashl@ \xybtipfont\char\DirectionChar}%
  46. }
  47.  
  48. % Redefinition of the command \ar
  49. % Provoque a warning when compiled
  50. \xydef@\ar@form{
  51.     \ifx \space@\next \expandafter\DN@\space{\xyFN@\ar@form}%
  52.     \else\ifx ^\next \DN@ ^{\xyFN@\ar@style}\edef\arvariant@@{\string^}%
  53.     \else\ifx _\next \DN@ _{\xyFN@\ar@style}\edef\arvariant@@{\string_}%
  54.     \else\ifx 0\next \DN@ 0{\xyFN@\ar@style}\def\arvariant@@{0}%
  55.     \else\ifx 1\next \DN@ 1{\xyFN@\ar@style}\def\arvariant@@{1}%
  56.     \else\ifx 2\next \DN@ 2{\xyFN@\ar@style}\def\arvariant@@{2}%
  57.     \else\ifx 3\next \DN@ 3{\xyFN@\ar@style}\def\arvariant@@{3}%
  58.     \else\ifx 4\next \DN@ 4{\xyFN@\ar@style}\def\arvariant@@{4}%
  59.     \else\ifx \bgroup\next \let\next@=\ar@style
  60.     \else\ifx [\next \DN@[##1]{\ar@modifiers{[##1]}}%]
  61.     \else\ifx *\next \DN@ *{\ar@modifiers}%
  62.     \else\addLT@\ifx\next \let\next@=\ar@slide
  63.     \else\ifx /\next \let\next@=\ar@curveslash
  64.     \else\ifx (\next \let\next@=\ar@curveinout %)
  65.     \else\addRQ@\ifx\next \addRQ@\DN@{\ar@curve@}%
  66.     \else\addLQ@\ifx\next \addLQ@\DN@{\xyFN@\ar@curve}%
  67.     \else\addDASH@\ifx\next \addDASH@\DN@{\defarstem@-\xyFN@\ar@}%
  68.     \else\addEQ@\ifx\next \addEQ@\DN@{\def\arvariant@@{2}\defarstem@-\xyFN@\ar@}%
  69.     \else\addDOT@\ifx\next \addDOT@\DN@{\defarstem@.\xyFN@\ar@}%
  70.     \else\ifx :\next \DN@:{\def\arvariant@@{2}\defarstem@.\xyFN@\ar@}%
  71.     \else\ifx ~\next \DN@~{\defarstem@~\xyFN@\ar@}%
  72.     \else\ifx !\next \DN@!{\dasharstem@\xyFN@\ar@}%
  73.     \else\ifx ?\next \DN@?{\ar@upsidedown\xyFN@\ar@}%
  74.     \else \let\next@=\ar@error
  75.     \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next@}
  76.  
  77. \makeatother
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement