diff options
author | Karl Berry <karl@freefriends.org> | 2018-12-11 22:20:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-12-11 22:20:01 +0000 |
commit | 510e3a373930edbe94719766db11184cdb43946b (patch) | |
tree | eac4153a6961b127e7bdea151626433709e6a179 /Master/texmf-dist/tex/latex/dynkin-diagrams | |
parent | b235a62b87d72de3358674b4264d21726d7a2a9e (diff) |
dynkin-diagrams (11dec18)
git-svn-id: svn://tug.org/texlive/trunk@49384 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dynkin-diagrams')
-rw-r--r-- | Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty | 1665 |
1 files changed, 1026 insertions, 639 deletions
diff --git a/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty b/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty index 870e2c5842f..1335db12cc6 100644 --- a/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty +++ b/Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty @@ -2,7 +2,7 @@ % % The Dynkin Diagrams package. % -% Version 3.14 +% Version 3.141 % % % This package draws Dynkin diagrams in LaTeX documents, using the TikZ package. @@ -18,7 +18,7 @@ % % \NeedsTeXFormat{LaTeX2e}[1994/06/01] -\ProvidesPackage{dynkin-diagrams}[2018/07/24 Dynkin diagrams] +\ProvidesPackage{dynkin-diagrams}[2018/11/29 Dynkin diagrams] \RequirePackage{tikz} \RequirePackage{xstring} \RequirePackage{xparse} @@ -26,166 +26,188 @@ \RequirePackage{expl3} \RequirePackage{pgfkeys} \RequirePackage{pgfopts} -\usetikzlibrary{arrows,arrows.meta,backgrounds,calc,decorations.markings,fit,patterns,snakes} +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\usetikzlibrary{ + arrows, + arrows.meta, + backgrounds, + calc, + decorations.markings, + decorations.pathreplacing, + decorations.pathmorphing, + fit, + patterns} -%% -%% Application programming interface: -%% See dynkin-diagrams.tex file for examples of use. -%% +%%% +%%% Application programming interface: +%%% See dynkin-diagrams.tex file for examples of use. +%%% \NewDocumentCommand\dynkin{O{}mO{0}m}% {% \ifdefined\filldraw% \@dynkin[#1]{#2}[#3]{#4}% \else% - \tikz[baseline=-0.5ex]{\@dynkin[#1]{#2}[#3]{#4}}% + \tikz[baseline=(origin.base)]{\@dynkin[#1]{#2}[#3]{#4}}% \fi% }% +\NewDocumentEnvironment{dynkinDiagram}{O{}mO{0}m}% +{% +\begin{tikzpicture}[baseline=(origin.base)]% +\dynkin[#1]{#2}[#3]{#4}% +}% +{% +\end{tikzpicture}% +}% + \NewDocumentCommand\dynkinRefreshRoots{}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \dynkin@draw@all@roots{}% \ifdynkin@label@the@roots\dynkinPrintLabels{}\fi% }% +\xdef\dynkin@label@direction{} + +\NewDocumentCommand\dynkin@translate@direction{m}% +{% + \xdef\Dir{#1} + \ifdynkin@is@backwards + \IfStrEqCase{\Dir}{% + {0}{\xdef\Dir{4}}% + {1}{\xdef\Dir{3}}% + {2}{\xdef\Dir{2}}% + {3}{\xdef\Dir{1}}% + {4}{\xdef\Dir{0}}% + {5}{\xdef\Dir{7}}% + {6}{\xdef\Dir{6}}% + {7}{\xdef\Dir{5}}% + }% + [\ClassError% + {Dynkin diagrams}% + {Unrecognized root label direction: + ``\temp'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string}}% + {}] + \fi + \ifdynkin@is@upsidedown + \IfStrEqCase{\Dir}{% + {1}{\xdef\Dir{7}}% + {2}{\xdef\Dir{6}}% + {3}{\xdef\Dir{5}}% + {5}{\xdef\Dir{3}}% + {6}{\xdef\Dir{2}}% + {7}{\xdef\Dir{1}}% + }% + \fi + \IfStrEqCase{\Dir}{% + {0}{\xdef\dynkin@label@direction{right}}% + {1}{\xdef\dynkin@label@direction{above right}}% + {2}{\xdef\dynkin@label@direction{above}}% + {3}{\xdef\dynkin@label@direction{above left}}% + {4}{\xdef\dynkin@label@direction{left}}% + {5}{\xdef\dynkin@label@direction{below left}}% + {6}{\xdef\dynkin@label@direction{below}}% + {7}{\xdef\dynkin@label@direction{below right}}% + }% +}% + +\newcount\rpo% + %% \dynkinLabelRoot{<r>}{<s>} or \dynkinLabelRoot*{<r>}{<s>} %% Prints the label string <s> on the Dynkin diagram at root number <r>, in the current ordering convention. -%% Starred form uses the opposite label location. +%% Starred form uses the alternate label location. \NewDocumentCommand\dynkinLabelRoot{smm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \ifnum\dynkin@nodes<#2% \ClassError{Dynkin diagrams}{Unrecognized root: ``#2'' found when labelling Dynkin diagram \dynkin@user@series{\dynkin@user@string}. Allowed values are up to \the\dynkin@nodes}{}% \fi% - \newcount\rpo% - \rpo=#2% - \advance\rpo by 1% - \StrMid{\dynkin@label@directions}{\the\rpo}{\the\rpo}[\temp]% - \IfBooleanTF{#1}% + \IfStrEq{#3}{}% {% - \IfStrEqCase{\temp}{% - {l}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - right:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {r}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - left:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {a}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - below:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {b}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - above:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {d}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - above right:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - }% - [\ClassError% - {Dynkin diagrams}% - {Unrecognized root label direction: - ``\temp'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string} for root #2}% - {}] }% {% - \IfStrEqCase{\temp}{% - {l}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - left:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {r}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - right:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {a}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - above:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {b}{ % - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - below:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% - {d}{% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram,/Dynkin diagram/text]% - below right:% - \(\pgfkeys{/Dynkin diagram/labelMacro=#3}\)% - }% - ]% - at (\dynkin@root@name #2){};% - }% + \rpo=#2% + \advance\rpo by 1% + \IfBooleanTF{#1}% + {% + \StrMid{\dynkin@label@directions@star}{\the\rpo}{\the\rpo}[\dynkin@direction@letter]% + }% + {% + \StrMid{\dynkin@label@directions}{\the\rpo}{\the\rpo}[\dynkin@direction@letter]% + }% + \dynkin@translate@direction{\dynkin@direction@letter}% + \IfBooleanTF{#1}% + {% + \node[inner sep=\dynkin@root@radius,% + label={% + [/Dynkin diagram/text]% + \dynkin@label@direction:% + \(\pgfkeys{/Dynkin diagram/label macro*=#3}\)% + }% + ]% + at (\dynkin@root@name #2){};% + }% + {% + \node[inner sep=\dynkin@root@radius,% + label={% + [/Dynkin diagram/text]% + \dynkin@label@direction:% + \(\pgfkeys{/Dynkin diagram/label macro=#3}\)% + }% + ]% + at (\dynkin@root@name #2){};% }% - [\ClassError% - {Dynkin diagrams}% - {Unrecognized root label direction: - ``\temp'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string} for root #2}% - {}] }% }% +\newcounter{dynkinRootNo} +\NewDocumentCommand\@dynkinLabelThisRoot{m}% +{% +\stepcounter{dynkinRootNo}% +\dynkinLabelRoot{\arabic{dynkinRootNo}}{#1}% +}% +\NewDocumentCommand\@dynkinLabelThisRootStar{m}% +{% +\stepcounter{dynkinRootNo}% +\dynkinLabelRoot*{\arabic{dynkinRootNo}}{#1}% +}% + + +\NewDocumentCommand\dynkinLabelRoots{sm}% +{% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% + \setcounter{dynkinRootNo}{0}% + \ifdynkin@is@extended% + \setcounter{dynkinRootNo}{-1}% + \else% + \ifdynkin@is@twisted% + \setcounter{dynkinRootNo}{-1}% + \else% + \setcounter{dynkinRootNo}{0}% + \fi% + \fi% + \edef\XXX{#2}% + \foreach \i in \XXX% + {% + \IfBooleanTF{#1}% + {% + \@dynkinLabelThisRootStar{\i}% + }% + {% + \@dynkinLabelThisRoot{\i}% + }% + }% +}% + \NewDocumentCommand\dynkinBrace{somm}%[text]{start}{end} {% -\draw[decoration= + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% +\draw[ +decoration= { brace, \IfBooleanF{#1}{mirror}, @@ -200,24 +222,56 @@ pos=0.5, anchor=\IfBooleanTF{#1}{south}{north}, yshift=\IfBooleanTF{#1}{1mm}{-1mm}, - /Dynkin diagram/text -] + /Dynkin diagram/text] {\IfValueT{#2}{\(#2\)}};% } %% \dynkinPrintLabels -%% Prints the default labels on the Dynkin diagram, in the given ordering. +%% Prints the labels on the Dynkin diagram,in the given ordering. Uses the default labels if ``label'' is set without a list of ``labels'' being set. \newcommand{\dynkinPrintLabels}% {% - \foreach \i in {1,...,\the\dynkin@nodes}{\dynkinLabelRoot{\i}{\i}}% - \ifdynkin@is@extended% - \dynkinLabelRoot{0}{0}% - \else% - \ifdynkin@is@twisted% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% + \IfStrEq{\dynkin@label@list\dynkin@label@list@star}{}{% + \foreach \i in {1,...,\the\dynkin@nodes}{\dynkinLabelRoot{\i}{\i}}% + \ifdynkin@is@extended% \dynkinLabelRoot{0}{0}% + \else% + \ifdynkin@is@twisted% + \dynkinLabelRoot{0}{0}% + \fi% \fi% - \fi% + }% + {% + \ifdynkin@is@extended% + \setcounter{dynkinRootNo}{-1}% + \else% + \ifdynkin@is@twisted% + \setcounter{dynkinRootNo}{-1}% + \else% + \setcounter{dynkinRootNo}{0}% + \fi% + \fi% + \edef\XXX{\dynkin@label@list}% + \foreach \i in \XXX% + {% + \@dynkinLabelThisRoot{\i}% + }% + \ifdynkin@is@extended% + \setcounter{dynkinRootNo}{-1}% + \else% + \ifdynkin@is@twisted% + \setcounter{dynkinRootNo}{-1}% + \else% + \setcounter{dynkinRootNo}{0}% + \fi% + \fi% + \edef\XXX{\dynkin@label@list@star}% + \foreach \i in \XXX% + {% + \@dynkinLabelThisRootStar{\i}% + }% + }% }% %% \dynkinCrossRootMark{<n>} @@ -225,6 +279,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinCrossRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -232,11 +287,11 @@ {% \RootNumber=#3% }% - \draw[/Dynkin diagram,/Dynkin diagram/x,#2]% + \draw[/Dynkin diagram,x,#2]% ($(\dynkin@root@name \the\RootNumber)+(\dynkin@root@radius,\dynkin@root@radius)$)% --% ($(\dynkin@root@name \the\RootNumber)-(\dynkin@root@radius,\dynkin@root@radius)$);% - \draw[/Dynkin diagram,/Dynkin diagram/x,#2]% + \draw[/Dynkin diagram,x,#2]% ($(\dynkin@root@name \the\RootNumber)+(-\dynkin@root@radius,\dynkin@root@radius)$)% --% ($(\dynkin@root@name \the\RootNumber)+(\dynkin@root@radius,-\dynkin@root@radius)$);% @@ -247,6 +302,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinHeavyCrossRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -254,11 +310,11 @@ {% \RootNumber=#3% }% - \draw[/Dynkin diagram,/Dynkin diagram/X,#2]% + \draw[/Dynkin diagram,X,#2]% ($(\dynkin@root@name \the\RootNumber)+(\dynkin@root@radius,\dynkin@root@radius)$)% --% ($(\dynkin@root@name \the\RootNumber)-(\dynkin@root@radius,\dynkin@root@radius)$);% - \draw[/Dynkin diagram,/Dynkin diagram/X,#2]% + \draw[/Dynkin diagram,X,#2]% ($(\dynkin@root@name \the\RootNumber)+(-\dynkin@root@radius,\dynkin@root@radius)$)% --% ($(\dynkin@root@name \the\RootNumber)+(\dynkin@root@radius,-\dynkin@root@radius)$);% @@ -270,6 +326,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinHollowRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -277,7 +334,7 @@ {% \RootNumber=#3% }% - \fill[/Dynkin diagram,/Dynkin diagram/o,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% + \fill[/Dynkin diagram,o,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% }% %% \dynkinDoubleHollowRootMark{<n>} @@ -285,6 +342,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinDoubleHollowRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -292,8 +350,8 @@ {% \RootNumber=#3% }% - \fill[/Dynkin diagram,/Dynkin diagram/o,#2] (\dynkin@root@name \the\RootNumber) circle (2*\dynkin@root@radius);% - \fill[/Dynkin diagram,/Dynkin diagram/o,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% + \fill[/Dynkin diagram,o,#2] (\dynkin@root@name \the\RootNumber) circle (2*\dynkin@root@radius);% + \fill[/Dynkin diagram,o,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% }% %% \dynkinSolidRootMark{<n>} @@ -301,6 +359,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinSolidRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -308,7 +367,7 @@ {% \RootNumber=#3% }% - \fill[/Dynkin diagram,/Dynkin diagram/*,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% + \fill[/Dynkin diagram,*,#2] (\dynkin@root@name \the\RootNumber) circle (\dynkin@root@radius);% }% %% \dynkinTensorRootMark{<n>} @@ -316,6 +375,7 @@ %% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinTensorRootMark{sO{}m}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootNumber{#3}% @@ -323,23 +383,24 @@ {% \RootNumber=#3% }% - \fill[/Dynkin diagram,/Dynkin diagram/o,#2] (\dynkin@root@name \the\RootNumber) circle ({\dynkin@root@radius});% - \draw[/Dynkin diagram,/Dynkin diagram/x,#2]% + \fill[/Dynkin diagram,o,#2] (\dynkin@root@name \the\RootNumber) circle ({\dynkin@root@radius});% + \draw[/Dynkin diagram,edge,#2]% ($(\dynkin@root@name \the\RootNumber)+({\dynkin@root@radius/sqrt(2)},{\dynkin@root@radius/sqrt(2)})$)% --% ($(\dynkin@root@name \the\RootNumber)-({\dynkin@root@radius/sqrt(2)},{\dynkin@root@radius/sqrt(2)})$);% - \draw[/Dynkin diagram,/Dynkin diagram/x,#2]% + \draw[/Dynkin diagram,edge,#2]% ($(\dynkin@root@name \the\RootNumber)+({-\dynkin@root@radius/sqrt(2)},{\dynkin@root@radius/sqrt(2)})$)% --% ($(\dynkin@root@name \the\RootNumber)+({\dynkin@root@radius/sqrt(2)},{-\dynkin@root@radius/sqrt(2)})$);% }% -%% \dynkinRootMark{<s>}{<n>} -%% Prints a dot at root <n> on the current Dynkin diagram using mark style <s>. -%% Use <s> empty to get the default mark style. -%% The starred form accepts <n> in the Bourbaki ordering. +% \dynkinRootMark{<s>}{<n>} +% Prints a dot at root <n> on the current Dynkin diagram using mark style <s>. +% Use <s> empty to get the default mark style. +% The starred form accepts <n> in the Bourbaki ordering. \NewDocumentCommand\dynkinRootMark{smm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \IfStrEqCase{#2}% @@ -378,6 +439,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteSingleEdge{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -400,6 +462,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteSingleEdge{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -413,11 +476,11 @@ ($(\dynkin@root@name \the\@fromRoot)$) -- (${(2/3)}*(\dynkin@root@name \the\@fromRoot)+{(1/3)}*(\dynkin@root@name \the\@toRoot)$); - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,#2] + \draw[/Dynkin diagram,indefinite edge,#2] (${(2/3)}*(\dynkin@root@name \the\@fromRoot)+{(1/3)}*(\dynkin@root@name \the\@toRoot)$) -- (${(1/3)}*(\dynkin@root@name \the\@fromRoot)+{(2/3)}*(\dynkin@root@name \the\@toRoot)$); - \draw[/Dynkin diagram,/Dynkin diagram/edge,#2] + \draw[/Dynkin diagram,edge,#2] (${(1/3)}*(\dynkin@root@name \the\@fromRoot)+{(2/3)}*(\dynkin@root@name \the\@toRoot)$) -- ($(\dynkin@root@name \the\@toRoot)$); @@ -429,12 +492,13 @@ %%% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinRightFold{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% - \dynkinFold*[/Dynkin diagram/rightFold,#2]{#3}{#4}% + \dynkinFold*[/Dynkin diagram,fold right style,#2]{#3}{#4}% }% {% - \dynkinFold[/Dynkin diagram/rightFold,#2]{#3}{#4}% + \dynkinFold[/Dynkin diagram,fold right style,#2]{#3}{#4}% }% }% @@ -443,12 +507,13 @@ %%% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinLeftFold{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% - \dynkinFold*[/Dynkin diagram/leftFold,#2]{#3}{#4}% + \dynkinFold*[/Dynkin diagram,fold left style,#2]{#3}{#4}% }% {% - \dynkinFold[/Dynkin diagram/leftFold,#2]{#3}{#4}% + \dynkinFold[/Dynkin diagram,fold left style,#2]{#3}{#4}% }% }% @@ -457,6 +522,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinFold{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -467,8 +533,8 @@ }% \convertRootPair{\@fromRoot}{\@toRoot}% \begin{scope}[on background layer] - \draw - [/Dynkin diagram/foldStyle,#2] + \draw[/Dynkin diagram/fold style,#2,%/Dynkin diagram/fold left style + ] ($(\dynkin@root@name \the\@fromRoot)$) to ($(\dynkin@root@name \the\@toRoot)$); @@ -481,6 +547,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteRightDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -490,7 +557,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2]% + \draw[/Dynkin diagram,edge,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:0:\dynkin@fold@radius) -- ($(\dynkin@root@name \the\@toRoot)$);% \end{scope}% @@ -501,6 +568,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteRightDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -511,15 +579,15 @@ }% \node (center) at ($(\dynkin@root@name \the\@fromRoot)-(0,\dynkin@fold@radius)$) {};% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(90:\dynkin@fold@radius) arc [start angle=90, end angle=60, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,fill=none,#2] + \draw[/Dynkin diagram,indefinite edge,fill=none,#2] (center) ++(60:\dynkin@fold@radius) arc [start angle=60, end angle=30, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(30:\dynkin@fold@radius) arc [start angle=30, end angle=0, radius=\dynkin@fold@radius];% @@ -531,6 +599,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteRightUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -540,7 +609,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] ($(\dynkin@root@name \the\@fromRoot)$) arc (-90:0:\dynkin@fold@radius) -- ($(\dynkin@root@name \the\@toRoot)$);% \end{scope}% @@ -551,6 +620,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteRightUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -561,15 +631,15 @@ }% \node (center) at ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@fold@radius)$) {};% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(-90:\dynkin@fold@radius) arc [start angle=-90, end angle=-60, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,fill=none,#2] + \draw[/Dynkin diagram,indefinite edge,fill=none,#2] (center) ++(-60:\dynkin@fold@radius) arc [start angle=-60, end angle=-30, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(-30:\dynkin@fold@radius) arc [start angle=-30, end angle=0, radius=\dynkin@fold@radius] -- ($(\dynkin@root@name \the\@toRoot)$);% @@ -582,6 +652,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteLeftDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -591,7 +662,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2]% + \draw[/Dynkin diagram,edge,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:180:\dynkin@fold@radius) -- ($(\dynkin@root@name \the\@toRoot)$);% \end{scope}% @@ -602,6 +673,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteLeftDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -612,15 +684,15 @@ }% \node (center) at ($(\dynkin@root@name \the\@fromRoot)-(0,\dynkin@fold@radius)$) {};% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(90:\dynkin@fold@radius) arc [start angle=90, end angle=120, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,fill=none,#2] + \draw[/Dynkin diagram,indefinite edge,fill=none,#2] (center) ++(120:\dynkin@fold@radius) arc [start angle=120, end angle=150, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(150:\dynkin@fold@radius) arc [start angle=150, end angle=180, radius=\dynkin@fold@radius] -- ($(\dynkin@root@name \the\@toRoot)$);% @@ -632,6 +704,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteLeftUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -641,7 +714,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] ($(\dynkin@root@name \the\@fromRoot)$) arc (-90:-180:\dynkin@fold@radius) -- ($(\dynkin@root@name \the\@toRoot)$);% \end{scope}% @@ -652,6 +725,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteLeftUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -662,15 +736,15 @@ }% \node (center) at ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@fold@radius)$) {};% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(-90:\dynkin@fold@radius) arc [start angle=-90, end angle=-120, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,fill=none,#2] + \draw[/Dynkin diagram,indefinite edge,fill=none,#2] (center) ++(-120:\dynkin@fold@radius) arc [start angle=-120, end angle=-150, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(-150:\dynkin@fold@radius) arc [start angle=-150, end angle=-180, radius=\dynkin@fold@radius] -- ($(\dynkin@root@name \the\@toRoot)$);% @@ -683,6 +757,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteSemiCircle{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -692,7 +767,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] ($(\dynkin@root@name \the\@fromRoot)$) arc (90:-90:\dynkin@fold@radius) -- ($(\dynkin@root@name \the\@toRoot)$);% @@ -704,6 +779,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinIndefiniteSemiCircle{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -714,15 +790,15 @@ }% \node (center) at ($(\dynkin@root@name \the\@fromRoot)-(0,\dynkin@fold@radius)$) {};% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(90:\dynkin@fold@radius) arc [start angle=90, end angle=30, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/indefiniteEdge,fill=none,#2] + \draw[/Dynkin diagram,indefinite edge,fill=none,#2] (center) ++(30:\dynkin@fold@radius) arc [start angle=30, end angle=-30, radius=\dynkin@fold@radius];% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2] + \draw[/Dynkin diagram,edge,fill=none,#2] (center) ++(-30:\dynkin@fold@radius) arc [start angle=-30, end angle=-90, radius=\dynkin@fold@radius] -- ($(\dynkin@root@name \the\@toRoot)$);% @@ -735,6 +811,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleRightDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -744,7 +821,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:0:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -752,10 +829,7 @@ \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (45:90:{\dynkin@fold@radius});% -% \path[/Dynkin diagram,edge,-<,tips] -% ($(\dynkin@root@name \the\@fromRoot)$)% -% arc (90:45:{\dynkin@fold@radius});% + arc (0:45:{\dynkin@fold@radius});% \else% \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] @@ -773,6 +847,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleUpRightArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -782,7 +857,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (180:90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -793,7 +868,7 @@ ($(\dynkin@root@name \the\@toRoot)$)% arc (135:180:{\dynkin@fold@radius});% \else% - \path[ + \path[/Dynkin diagram,edge, -{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@fromRoot)$)% @@ -810,6 +885,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleUpLeftArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -819,21 +895,20 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% - arc (-90:0:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% + arc (0:90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% \ifdynkin@reverse@arrows% - \path[/Dynkin diagram,edge, - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (-45:-90:{\dynkin@fold@radius});% + arc (90:45:{\dynkin@fold@radius});% \else% \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@fromRoot)$)% - arc (-90:-45:{\dynkin@fold@radius});% + arc (0:45:{\dynkin@fold@radius});% \fi% \fi% \end{scope}% @@ -848,6 +923,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleDownRightArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -857,24 +933,22 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% -- ($(\dynkin@root@name \the\@toRoot)+(-\dynkin@fold@radius,\dynkin@fold@radius)$)% arc (-180:-90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% \ifdynkin@reverse@arrows% - \path[ - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, tips] - ($(\dynkin@root@name \the\@fromRoot)+(-\dynkin@fold@radius,\dynkin@fold@radius)$)% - arc (-135:-180:{\dynkin@fold@radius});% + ($(\dynkin@root@name \the\@toRoot)$)% + arc (-90:-135:{\dynkin@fold@radius});% \else% - \path[ - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \path[-{Computer Modern Rightarrow [\dynkin@arrow@color]}, ,tips] - ($(\dynkin@root@name \the\@toRoot)+(-\dynkin@fold@radius,\dynkin@fold@radius)$)% - arc (-180:-135:{\dynkin@fold@radius});% + ($(\dynkin@root@name \the\@fromRoot)$)% + arc (180:225:{\dynkin@fold@radius});% \fi% \fi% \end{scope}% @@ -887,6 +961,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleRightUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -896,15 +971,21 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (270:360:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% - \path[ - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \ifdynkin@reverse@arrows% + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, + ,tips] + ($(\dynkin@root@name \the\@toRoot)$)% + arc (0:-45:\dynkin@fold@radius);% + \else% + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@fromRoot)$)% arc (270:315:\dynkin@fold@radius);% + \fi% \fi% \end{scope}% }% @@ -915,6 +996,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleLeftDownArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -924,16 +1006,15 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:180:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% \ifdynkin@reverse@arrows% - \path[/Dynkin diagram,edge, - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (135:90:{\dynkin@fold@radius});% + arc (180:{180-45}:{\dynkin@fold@radius});% \else% \path[ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -952,6 +1033,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleDownLeftArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -961,7 +1043,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (360:270:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -970,7 +1052,7 @@ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (315:360:{\dynkin@fold@radius});% + arc (-90:-45:{\dynkin@fold@radius});% \else% \path[ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -990,6 +1072,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleLeftUpArc{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -999,16 +1082,15 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (-90:-180:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% \ifdynkin@reverse@arrows% - \path[/Dynkin diagram,edge - -{Computer Modern Rightarrow[\dynkin@arrow@color]}, + \path[-{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (-135:-90:\dynkin@fold@radius);% + arc (-180:-135:\dynkin@fold@radius);% \else% \path[, -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -1027,6 +1109,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleDownRightSemiCircle{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1036,7 +1119,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:-90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -1045,7 +1128,7 @@ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (0:90:\dynkin@fold@radius);% + arc (-90:0:\dynkin@fold@radius);% \else% \path[ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -1066,6 +1149,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteTripleDownRightSemiCircle{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1075,10 +1159,10 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,double distance=\dynkin@root@radius,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,double distance=\dynkin@root@radius,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:-90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% - \draw[/Dynkin diagram,/Dynkin diagram/edge,fill=none,#2]% + \draw[/Dynkin diagram,edge,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (90:-90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -1087,7 +1171,7 @@ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (0:90:\dynkin@fold@radius);% + arc (-90:0:\dynkin@fold@radius);% \else% \path[ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -1108,6 +1192,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleUpRightSemiCircle{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1117,7 +1202,7 @@ \@toRoot=#4% }% \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,double,fill=none,#2]% + \draw[/Dynkin diagram,edge,double,fill=none,#2]% ($(\dynkin@root@name \the\@fromRoot)$)% arc (-90:90:{\dynkin@fold@radius}) -- ($(\dynkin@root@name \the\@toRoot)$);% \ifdynkin@arrows% @@ -1126,7 +1211,7 @@ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, ,tips] ($(\dynkin@root@name \the\@toRoot)$)% - arc (0:-90:\dynkin@fold@radius);% + arc (90:0:\dynkin@fold@radius);% \else% \path[ -{Computer Modern Rightarrow[\dynkin@arrow@color]}, @@ -1145,6 +1230,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinEdge{sO{}mmm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#4}{#5}% @@ -1170,6 +1256,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinEdgeArrow{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \ifdynkin@arrows% \IfBooleanTF{#1}% {% @@ -1199,11 +1286,51 @@ \fi% }% +\NewDocumentCommand\dynkinKacDoubleArrow{O{}mm}% +{% + \draw[arrows = {-{Triangle Cap[length=.8mm,fill=white]}},% + /Dynkin diagram,edge, double=white,fill=white,double distance=1.8pt,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% + \draw[arrows = {-{Classical TikZ Rightarrow[length=1mm]}},% + /Dynkin diagram,edge,double distance=1.8pt,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% +}% + +\NewDocumentCommand\dynkinKacTripleArrow{O{}mm}% +{% + \draw[arrows = {-{Triangle Cap[length=.8mm,fill=white]}},% + /Dynkin diagram,edge,double=white,fill=white,double distance=1.8pt,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% + \draw[arrows = {-{Classical TikZ Rightarrow[length=1mm]}},% + /Dynkin diagram,edge,double distance=1.8pt,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% + \draw[/Dynkin diagram,edge,shorten >=1.1mm,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% +}% + +\NewDocumentCommand\dynkinKacQuadrupleArrow{O{}mm}% +{% + \draw[arrows = {-{Triangle Cap[length=1.127mm,fill=white]}},% + /Dynkin diagram,edge,double=white,fill=white,shorten >=1mm,shorten <=1mm, double distance=3.6pt,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% + \draw[arrows = {-{Classical TikZ Rightarrow[length=1.2mm]}},% + /Dynkin diagram,edge,double distance=3.6pt,shorten <=.83mm,#1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% + \draw[arrows = {-{Classical TikZ Rightarrow[length=1.2mm]}},% + /Dynkin diagram,edge,double distance=1.2pt,shorten <= .83mm, + #1]% + (\dynkin@root@name \the#2)--(\dynkin@root@name \the#3);% +}% + +\newcount\onesbit% +\newcount\twosbit% + %% \dynkinDefiniteDoubleEdge{<p>}{<q>} %% Draws an oriented double line from root <p> to root <q> on the current Dynkin diagram. %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinDefiniteDoubleEdge{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1212,8 +1339,6 @@ \@fromRoot=#3% \@toRoot=#4% }% - \newcount\onesbit% - \newcount\twosbit% \StrChar{\dynkin@roots}{\the\@fromRoot}[\my@root@marker]% \IfStrEq{\my@root@marker}{x}% {% @@ -1230,25 +1355,50 @@ {% \global\twosbit=0% }% - \def\LL{.5*\dynkin@root@radius} - \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,#2]% - ($(\dynkin@root@name \the\@fromRoot)$)% - --% - +({\the\onesbit*\LL},{\LL})% - --% - ($(\dynkin@root@name \the\@toRoot)+(-\the\twosbit*\LL,\LL)$)% - --% - ($(\dynkin@root@name \the\@toRoot)$)% - --% - ($(\dynkin@root@name \the\@toRoot)-(\the\twosbit*\LL,\LL)$)% - --% - ($(\dynkin@root@name \the\@fromRoot)+(\the\onesbit*\LL,-\LL)$)% - --% - cycle;% - \end{scope}% - \ifdynkin@arrows% - \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \ifdynkin@Kac@arrows + \begin{scope}[on background layer]% + \ifdynkin@arrows% + \ifdynkin@reverse@arrows + \ifdynkin@is@backwards + \dynkinKacDoubleArrow[#2]{\@fromRoot}{\@toRoot} + \else% + \dynkinKacDoubleArrow[#2]{\@toRoot}{\@fromRoot} + \fi% + \else% + \ifdynkin@is@backwards + \dynkinKacDoubleArrow[#2]{\@toRoot}{\@fromRoot} + \else% + \dynkinKacDoubleArrow[#2]{\@fromRoot}{\@toRoot} + \fi% + \fi% + \else% + \draw[/Dynkin diagram,edge,double distance=3pt,#2]% + (\dynkin@root@name \the\@fromRoot)% + --% + (\dynkin@root@name \the\@toRoot);% + \fi% + \end{scope}% + \else + \def\LL{.5*\dynkin@root@radius} + \begin{scope}[on background layer]% + \draw[/Dynkin diagram,edge,#2]% + ($(\dynkin@root@name \the\@fromRoot)$)% + --% + +({\the\onesbit*\LL},{\LL})% + --% + ($(\dynkin@root@name \the\@toRoot)+(-\the\twosbit*\LL,\LL)$)% + --% + ($(\dynkin@root@name \the\@toRoot)$)% + --% + ($(\dynkin@root@name \the\@toRoot)-(\the\twosbit*\LL,\LL)$)% + --% + ($(\dynkin@root@name \the\@fromRoot)+(\the\onesbit*\LL,-\LL)$)% + --% + cycle;% + \end{scope}% + \ifdynkin@arrows% + \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \fi% \fi% }% @@ -1257,6 +1407,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinTripleEdge{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1265,8 +1416,6 @@ \@fromRoot=#3% \@toRoot=#4% }% - \newcount\onesbit - \newcount\twosbit \StrChar{\dynkin@roots}{\the\@fromRoot}[\my@root@marker]% \IfStrEq{\my@root@marker}{x}% {% @@ -1283,28 +1432,57 @@ {% \global\twosbit=0% }% - \begin{scope}[on background layer]% - \draw[/Dynkin diagram,/Dynkin diagram/edge,#2]% - ($(\dynkin@root@name \the\@fromRoot)$)% - --% - +({\the\onesbit*\dynkin@root@radius},{\dynkin@root@radius})% - --% - ($(\dynkin@root@name \the\@toRoot)+(-\twosbit*\dynkin@root@radius,\dynkin@root@radius)$)% - --% - ($(\dynkin@root@name \the\@toRoot)$)% - --% - ($(\dynkin@root@name \the\@toRoot)-(\twosbit*\dynkin@root@radius,\dynkin@root@radius)$)% - --% - ($(\dynkin@root@name \the\@fromRoot)+(\onesbit*\dynkin@root@radius,-\dynkin@root@radius)$)% - --% - cycle;% - \draw[/Dynkin diagram,/Dynkin diagram/edge,#2] - ($(\dynkin@root@name \the\@fromRoot)$) - -- - ($(\dynkin@root@name \the\@toRoot)$);% - \end{scope}% - \ifdynkin@arrows% - \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \ifdynkin@Kac@arrows + \begin{scope}[on background layer]% + \ifdynkin@arrows% + \ifdynkin@reverse@arrows + \ifdynkin@is@backwards + \dynkinKacTripleArrow[#2]{\@fromRoot}{\@toRoot} + \else% + \dynkinKacTripleArrow[#2]{\@toRoot}{\@fromRoot} + \fi% + \else% + \ifdynkin@is@backwards + \dynkinKacTripleArrow[#2]{\@toRoot}{\@fromRoot} + \else% + \dynkinKacTripleArrow[#2]{\@fromRoot}{\@toRoot} + \fi% + \fi% + \else% + \draw[/Dynkin diagram,edge,double distance=3pt,#2]% + (\dynkin@root@name \the\@fromRoot)% + --% + (\dynkin@root@name \the\@toRoot);% + \draw[/Dynkin diagram,edge,#2]% + (\dynkin@root@name \the\@fromRoot)% + --% + (\dynkin@root@name \the\@toRoot);% + \fi% + \end{scope}% + \else + \begin{scope}[on background layer]% + \draw[/Dynkin diagram,edge,#2]% + ($(\dynkin@root@name \the\@fromRoot)$)% + --% + +({\the\onesbit*\dynkin@root@radius},{\dynkin@root@radius})% + --% + ($(\dynkin@root@name \the\@toRoot)+(-\twosbit*\dynkin@root@radius,\dynkin@root@radius)$)% + --% + ($(\dynkin@root@name \the\@toRoot)$)% + --% + ($(\dynkin@root@name \the\@toRoot)-(\twosbit*\dynkin@root@radius,\dynkin@root@radius)$)% + --% + ($(\dynkin@root@name \the\@fromRoot)+(\onesbit*\dynkin@root@radius,-\dynkin@root@radius)$)% + --% + cycle;% + \draw[/Dynkin diagram,edge,#2] + ($(\dynkin@root@name \the\@fromRoot)$) + -- + ($(\dynkin@root@name \the\@toRoot)$);% + \end{scope}% + \ifdynkin@arrows% + \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \fi% \fi% }% @@ -1315,6 +1493,7 @@ %% The starred form accepts <p> and <q> in the Bourbaki ordering. \NewDocumentCommand\dynkinQuadrupleEdge{sO{}mm}% {% + \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% \IfBooleanTF{#1}% {% \convertRootPair{#3}{#4}% @@ -1323,29 +1502,51 @@ \@fromRoot=#3% \@toRoot=#4% }% - \begin{scope}[on background layer]% - \draw[% - /Dynkin diagram, - /Dynkin diagram/edge, - #2, - ]% - ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@root@radius)$)--% - ($(\dynkin@root@name \the\@toRoot)+(0,\dynkin@root@radius)$)--% - ($(\dynkin@root@name \the\@toRoot)+(0,-\dynkin@root@radius)$)--% - ($(\dynkin@root@name \the\@fromRoot)+(0,-\dynkin@root@radius)$)--% - cycle; - \draw[% - /Dynkin diagram,/Dynkin diagram/edge, - #2, - ]% - ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@root@radius/3)$)--% - ($(\dynkin@root@name \the\@toRoot)+(0,\dynkin@root@radius/3)$)--% - ($(\dynkin@root@name \the\@toRoot)+(0,-\dynkin@root@radius/3)$)--% - ($(\dynkin@root@name \the\@fromRoot)+(0,-\dynkin@root@radius/3)$)--% - cycle; - \end{scope}% - \ifdynkin@arrows% - \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \ifdynkin@Kac@arrows + \begin{scope}[on background layer]% + \ifdynkin@arrows% + \ifdynkin@reverse@arrows + \ifdynkin@is@backwards + \dynkinKacQuadrupleArrow[#2]{\@fromRoot}{\@toRoot} + \else% + \dynkinKacQuadrupleArrow[#2]{\@toRoot}{\@fromRoot} + \fi% + \else% + \ifdynkin@is@backwards + \dynkinKacQuadrupleArrow[#2]{\@toRoot}{\@fromRoot} + \else% + \dynkinKacQuadrupleArrow[#2]{\@fromRoot}{\@toRoot} + \fi% + \fi% + \else% + \draw[/Dynkin diagram,edge,double distance=3pt,#2]% + (\dynkin@root@name \the\@fromRoot)% + --% + (\dynkin@root@name \the\@toRoot);% + \draw[/Dynkin diagram,edge,#2]% + (\dynkin@root@name \the\@fromRoot)% + --% + (\dynkin@root@name \the\@toRoot);% + \fi% + \end{scope}% + \else + \begin{scope}[on background layer]% + \draw[/Dynkin diagram,edge,#2]% + ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@root@radius)$)--% + ($(\dynkin@root@name \the\@toRoot)+(0,\dynkin@root@radius)$)--% + ($(\dynkin@root@name \the\@toRoot)+(0,-\dynkin@root@radius)$)--% + ($(\dynkin@root@name \the\@fromRoot)+(0,-\dynkin@root@radius)$)--% + cycle; + \draw[/Dynkin diagram,edge,#2]% + ($(\dynkin@root@name \the\@fromRoot)+(0,\dynkin@root@radius/3)$)--% + ($(\dynkin@root@name \the\@toRoot)+(0,\dynkin@root@radius/3)$)--% + ($(\dynkin@root@name \the\@toRoot)+(0,-\dynkin@root@radius/3)$)--% + ($(\dynkin@root@name \the\@fromRoot)+(0,-\dynkin@root@radius/3)$)--% + cycle; + \end{scope}% + \ifdynkin@arrows% + \dynkinEdgeArrow[#2]{\the\@fromRoot}{\the\@toRoot}% + \fi% \fi% }% @@ -1411,12 +1612,24 @@ \def\dynkin@series{A} % Which series of root system: A,B,C,D,E,F,G +\def\dynkin@label@list{} +% List of labels for the roots. + +\def\dynkin@label@list@star{} +% List of alternate labels for the roots. + \newcount\dynkin@rank % Which rank of root system: 1,2,... \newcount\dynkin@nodes % How many nodes (besides the zero node for affine diagrams) are there? +\newif\ifdynkin@is@backwards +% Are we drawing this thing in a reverse direction? + +\newif\ifdynkin@is@upsidedown +% Are we drawing this thing in a reverse direction? + \newif\ifdynkin@is@extended % Is this an extended extended root system? @@ -1444,6 +1657,9 @@ \newif\ifdynkin@Coxeter % Should we draw Coxeter diagrams? +\newif\ifdynkin@Kac@arrows +% Should we draw arrows following Kac? + \newif\ifdynkin@odd % For twisted A series diagrams, is the rank odd? @@ -1454,7 +1670,10 @@ % Default maximum number of nodes arranged vertically in the folding of the Dynkin diagram \def\dynkin@label@directions{} -% List of directions in which to draw the labels attached to the roots: a=above, b=below, l=left, r=right. +% List of directions in which to draw the labels attached to the roots. + +\def\dynkin@label@directions@star{} +% List of directions in which to draw the labels attached to the roots, for alternate labels. \def\dynkin@current@location{(0,0)} @@ -1469,76 +1688,80 @@ name = anonymous, mark/.estore in = \dynkin@root@mark, mark = *, - affineMark/.estore in = \dynkin@affine@root@mark, - affineMark = o, - edgeLength/.estore in = \dynkin@edge@length, - edgeLength = .35cm, + affine mark/.estore in = \dynkin@affine@root@mark, + affine mark = o, + edge length/.estore in = \dynkin@edge@length, + edge length = .35cm, edge/.style={draw=black,fill=white,thin}, - makeIndefiniteEdge/.code={\dynkin@set@edge@indefinite@pair{#1}}, - indefiniteEdgeRatio/.estore in = \dynkin@indefinite@edge@ratio, - indefiniteEdgeRatio = 1.6, - indefiniteEdge/.style={draw=black,fill=white,thin,densely dotted}, + make indefinite edge/.code={\dynkin@set@edge@indefinite@pair{#1}}, + indefinite edge ratio/.estore in = \dynkin@indefinite@edge@ratio, + indefinite edge ratio = 1.6, + indefinite edge/.style={draw=black,fill=white,thin,densely dotted}, + backwards/.is if = dynkin@is@backwards, + backwards = false, + upside down/.is if = dynkin@is@upsidedown, + upside down = false, arrows/.is if = dynkin@arrows, arrows = true, - reverseArrows/.is if = dynkin@reverse@arrows, - reverseArrows = false, - foldStyle/.style = {draw=black!40,fill=none,line width=\dynkin@root@radius}, - leftFold/.style = {}, - rightFold/.style = {}, - arrowColor/.estore in = \dynkin@arrow@color, - arrowColor=black, - doubleEdges/.style = { - foldStyle/.style = { + reverse arrows/.is if = dynkin@reverse@arrows, + reverse arrows = false, + fold style/.style = {draw=black!40,fill=none,line width=\dynkin@root@radius}, + fold left style/.style = {}, + fold right style/.style = {}, + arrow color/.estore in = \dynkin@arrow@color, + arrow color = black, + double edges/.style = { + fold style/.style = { draw=black, double=white, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - doubleFold/.style = { - foldStyle/.style = { + double fold/.style = { + fold style/.style = { draw=black, double=black!40, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - doubleLeft/.style = { - leftFold/.style = { + double left/.style = { + fold left style/.style = { draw=black, double=white, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - doubleFoldLeft/.style = { - leftFold/.style = { + double fold left/.style = { + fold left style/.style = { draw=black, double=black!40, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - doubleRight/.style = { - rightFold/.style = { + double right/.style = { + fold right style/.style = { draw=black, double=white, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - doubleFoldRight/.style = { - rightFold/.style = { + double fold right/.style = { + fold right style/.style = { draw=black, double=black!40, fill=none, double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - radius/.estore in = \dynkin@root@radius, - radius=.05cm, - foldradius/.estore in = \dynkin@fold@radius, - foldradius=.3cm, + root radius/.estore in = \dynkin@root@radius, + root radius=.05cm, + fold radius/.estore in = \dynkin@fold@radius, + fold radius=.3cm, */.style = { draw=black, fill=black, @@ -1549,7 +1772,8 @@ }, X/.style = { draw=black, - thick + very thick, + line cap=round }, o/.style = { draw=black, @@ -1560,36 +1784,39 @@ fill=white, }, x/.style = { + thick, draw=black, + line cap=round }, Coxeter/.is if = dynkin@Coxeter, Coxeter=false, ordering/.store in = \dynkin@ordering, ordering = Bourbaki, text/.style={scale=.7}, - labelMacro/.code = {\regurgitate{#1}}, + label macro/.code = {\regurgitate{#1}}, + label macro*/.code = {\regurgitate{#1}}, + labels/.store in = \dynkin@label@list, + labels*/.store in = \dynkin@label@list@star, odd/.is if = dynkin@odd, odd=false, + Kac arrows/.is if = dynkin@Kac@arrows, + Kac arrows=false, Kac/.style={ + Kac arrows=true, ordering=Kac, - radius=.05cm, - edgeLength=.66cm, - indefiniteEdgeRatio = 3, - o/.style = - { - draw=black, - fill=white, - preaction={ - draw=white, - line width=.9mm - } - }, + root radius=.05cm, + edge length=.66cm, + indefinite edge ratio = 3, + edge/.style={draw=black,fill=white,thin,shorten <=1mm,shorten >=1mm}, + fold style/.style = {draw=black!40,fill=none,line width=\dynkin@root@radius,shorten <=1mm,shorten >=1mm}, mark=o, - indefiniteEdge/.style={draw=black,fill=white,thin,loosely dotted}, + indefinite edge/.style={draw=black,fill=none,thin,loosely dotted}, }, default/.style = { label/.is if = dynkin@label@the@roots, label = false, + labels = {}, + labels* = {}, at/.estore in = \dynkin@current@location, at = {(0,0)}, parabolic/.estore in = \dynkin@parabolic, @@ -1600,46 +1827,71 @@ extended = false, twisted/.is if = dynkin@is@twisted, twisted = false, - twistedSeries/.estore in = \dynkin@twisted@series, - twistedSeries = 0, + twisted series/.estore in = \dynkin@twisted@series, + twisted series = 0, ply/.estore in = \dynkin@ply@value, ply = 1, fold/.style = {ply=2}, - foldleft/.is if = dynkin@left@fold, - foldleft = false, - foldright/.is if = dynkin@right@fold, - foldright = false, + fold left/.is if = dynkin@left@fold, + fold left = false, + fold right/.is if = dynkin@right@fold, + fold right = false, }, .search also={/tikz}, } \ProcessPgfPackageOptions{/Dynkin diagram}\relax -%% \dynkin@put@direction{<r>}{<d>} -%% Assigns to \dynkin@label@directions the direction that the label of root <r> (in default ordering) should sit from the root node location, <d>=left, right, above, below or diagonal. -\NewDocumentCommand\dynkin@put@direction{mm}% +\newcount\drpo% +\newcount\dynkin@where% + +%% \dynkin@put@direction{<r>}{<d>}{<d*>} +%% Assigns to \dynkin@label@directions or \dynkin@label@directions@star the direction that the label of root <r> (in default ordering) should sit from the root node location, <d>=0,1,2,3,4,5,6,7 to indicate direction in multiples of 45 degrees +\NewDocumentCommand\dynkin@put@direction{smm}% {% - \newcount\drpo% \drpo=\the\dynkin@nodes% \advance\drpo by 1% - \newcount\dynkin@where% - \dynkin@where=#1% - \StrMid{\dynkin@label@directions}{1}{\the\dynkin@where}[\dynkin@start]% - \advance\dynkin@where by 2 - \StrMid{\dynkin@label@directions}{\the\dynkin@where}{\the\drpo}[\dynkin@end]% - \IfStrEqCase{#2}{% - {left}{\xdef\dynkin@label@directions{\dynkin@start l\dynkin@end}}% - {right}{\xdef\dynkin@label@directions{\dynkin@start r\dynkin@end}}% - {above}{\xdef\dynkin@label@directions{\dynkin@start a\dynkin@end}}% - {below}{\xdef\dynkin@label@directions{\dynkin@start b\dynkin@end}}% - {diagonal}{\xdef\dynkin@label@directions{\dynkin@start d\dynkin@end}}% + \dynkin@where=#2% + \IfBooleanTF{#1}% + {% + \StrMid{\dynkin@label@directions@star}{1}{\the\dynkin@where}[\dynkin@start]% + \advance\dynkin@where by 2 + \StrMid{\dynkin@label@directions@star}{\the\dynkin@where}{\the\drpo}[\dynkin@end]% + \IfStrEqCase{#3}{% + {right}{\xdef\dynkin@label@directions@star{\dynkin@start 0\dynkin@end}}% + {above right}{\xdef\dynkin@label@directions@star{\dynkin@start 1\dynkin@end}}% + {above}{\xdef\dynkin@label@directions@star{\dynkin@start 2\dynkin@end}}% + {above left}{\xdef\dynkin@label@directions@star{\dynkin@start 3\dynkin@end}}% + {left}{\xdef\dynkin@label@directions@star{\dynkin@start 4\dynkin@end}}% + {below left}{\xdef\dynkin@label@directions@star{\dynkin@start 5\dynkin@end}}% + {below}{\xdef\dynkin@label@directions@star{\dynkin@start 6\dynkin@end}}% + {below right}{\xdef\dynkin@label@directions@star{\dynkin@start 7\dynkin@end}}% + }% + [\ClassError{Dynkin diagrams}% + {Unrecognized direction: ``#2'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string}}{}]% + }% + {% + \StrMid{\dynkin@label@directions}{1}{\the\dynkin@where}[\dynkin@start]% + \advance\dynkin@where by 2 + \StrMid{\dynkin@label@directions}{\the\dynkin@where}{\the\drpo}[\dynkin@end]% + \IfStrEqCase{#3}{% + {right}{\xdef\dynkin@label@directions{\dynkin@start 0\dynkin@end}}% + {above right}{\xdef\dynkin@label@directions{\dynkin@start 1\dynkin@end}}% + {above}{\xdef\dynkin@label@directions{\dynkin@start 2\dynkin@end}}% + {above left}{\xdef\dynkin@label@directions{\dynkin@start 3\dynkin@end}}% + {left}{\xdef\dynkin@label@directions{\dynkin@start 4\dynkin@end}}% + {below left}{\xdef\dynkin@label@directions{\dynkin@start 5\dynkin@end}}% + {below}{\xdef\dynkin@label@directions{\dynkin@start 6\dynkin@end}}% + {below right}{\xdef\dynkin@label@directions{\dynkin@start 7\dynkin@end}}% + }% + [\ClassError{Dynkin diagrams}% + {Unrecognized direction: ``#2'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string}}{}]% }% - [\ClassError{Dynkin diagrams}{Unrecognized direction: ``#2'' in Dynkin diagram \dynkin@user@series{\dynkin@user@string}}{}]% }% -\xdef\replace@DR{} - +%\xdef\replace@DR{} +% % \expand@Dynkin@Roots@By@Char{<c>}, % for example if <c> is the letter x, expands out any expression like % x7 in \dynkin@string into 7 copies of the letter x. @@ -1735,12 +1987,14 @@ {% \xdef\dynkin@indefinite@edge@list{}% }% +% + +\newcount\first% +\newcount\second% \NewDocumentCommand\dynkin@set@edge@indefinite{mm}% {% - \newcount\first% \first=#1\relax% - \newcount\second% \second=#2\relax% \ifnum\the\first<\the\second% \listxadd\dynkin@indefinite@edge@list{\the\first,\the\second}% @@ -1777,9 +2031,7 @@ \@toRoot=#3% }% % Next we sort the order, since edges are stored as undirected edges. - \newcount\first% \global\first=\@fromRoot\relax% - \newcount\second% \global\second=\@toRoot\relax% \ifnum\the\second<\the\first% \global\first=\@toRoot\relax% @@ -1793,13 +2045,16 @@ \dolistloop{\dynkin@indefinite@edge@list}% }% + +\newcount\rootnum +\newcount\dynkin@string@length +\newcount\rootnumpo% + % \dynkin@grok@indefinite@edges{} reads the input string <s> found when you write \dynkin{<c>}{<s>}, and % interprets it to say which edges are indefinite edges. \NewDocumentCommand\dynkin@grok@indefinite@edges{}% {% - \newcount\rootnum \rootnum=1 - \newcount\dynkin@string@length \StrLen{\dynkin@string}[\temp]% \dynkin@string@length=\temp \foreach \i in {2,...,\the\dynkin@string@length}% @@ -1807,7 +2062,6 @@ \StrChar{\dynkin@string}{\i}[\c]% \IfStrEq{\c}{.}% {% - \newcount\rootnumpo% \rootnumpo=\rootnum% \advance\rootnumpo by 1\relax% \ifnum\the\rootnum<\the\dynkin@nodes% @@ -1827,38 +2081,53 @@ \NewDocumentCommand\dynkin@clear@label@directions{}% {% \xdef\dynkin@label@directions{}% + \xdef\dynkin@label@directions@star{}% }% \NewDocumentCommand\dynkin@set@default@label@directions{}% {% - \newcount\drpo% +% \newcount\drpo% \drpo=\the\dynkin@nodes% \advance\drpo by 1\relax% \xdef\dynkin@label@directions{\repeatCharacter{\the\drpo}{?}}% + \xdef\dynkin@label@directions@star{\repeatCharacter{\the\drpo}{?}}% }% \newlength{\defaultpgflinewidth}% - - -% \@dynkin[<s>]{<X>}[<sb>]{<Y>} -% Draws a complete Dynkin diagram of -% series <X> and -% subseries <sb>, -% described by the string <Y> -% with TikZ options specified by <s>. +% +% +%% \@dynkin[<s>]{<X>}[<sb>]{<Y>} +%% Draws a complete Dynkin diagram of +%% series <X> and +%% subseries <sb>, +%% described by the string <Y> +%% with TikZ options specified by <s>. \NewDocumentCommand\@dynkin{O{}mO{0}m}% {% + \setcounter{dynkinRootNo}{0}% \setlength{\defaultpgflinewidth}{\pgflinewidth}% \global\defaultpgflinewidth=\defaultpgflinewidth\relax% \dynkin@clear@indefinite@edge@list% \xdef\dynkin@parabolic{0}% \pgfkeys{/Dynkin diagram, default, #1}% + \ifdynkin@is@backwards% + \tikzset{xscale=-1}% + \fi% + \ifdynkin@is@upsidedown% + \tikzset{yscale=-1}% + \fi% + \IfStrEq{\dynkin@label@list\dynkin@label@list@star}{}% + {% + }% + {% + \global\dynkin@label@the@rootstrue% + }% \xdef\dynkin@user@series{#2}% \xdef\dynkin@twisted@series{#3}% \xdef\dynkin@user@string{#4}% \global\dynkin@ply=\dynkin@ply@value\relax% -\xdef\dynkin@indefinite@edge@length{(\dynkin@edge@length*\dynkin@indefinite@edge@ratio)}\relax% + \xdef\dynkin@indefinite@edge@length{(\dynkin@edge@length*\dynkin@indefinite@edge@ratio)}\relax% \xdef\dynkin@series{#2}% \IfStrEq{\dynkin@diagram@name}{anonymous}% {% @@ -1891,7 +2160,9 @@ \dynkin@cross@out@parabolics{}% \dynkin@set@default@label@directions{}% \check@Dynkin@diagram{}% - \node (Dynkin current) at \dynkin@current@location{};% + \node[anchor=base,inner sep=0pt,outer sep=0pt] (origin) at \dynkin@current@location {}; +% \node (Dynkin current) at (origin) {};% + \node (Dynkin current) at ($(origin)+(0,0.5ex)$){}; \ifdynkin@is@twisted% \csname twisted\dynkin@series dynkin\endcsname% \else% @@ -1903,7 +2174,7 @@ \fi% \dynkinRefreshRoots% }% - +% %% We know the number of nodes; lets find the rank. \NewDocumentCommand\dynkin@find@rank{}% {% @@ -1940,11 +2211,12 @@ \fi% }% +\newcount\lenny + %% \dynkin@grok@series %% Interprets the dynkin@series, to see if it is extended, twisted, and what twisted series it is. \NewDocumentCommand\dynkin@grok@series{}% {% - \newcount\lenny \StrLen{\dynkin@series}[\lenny] \ifnum\lenny>1% \dynkin@error@series% @@ -1953,7 +2225,7 @@ \IfStrEqCase{\dynkin@twisted@series}% {% {0}{}% - {1}{ \global\dynkin@is@extendedtrue}% + {1}{ \global\dynkin@is@extendedtrue}% {2}{% \IfSubStr{ADE}{\dynkin@series}% {% @@ -2150,6 +2422,15 @@ \fi% }% +\NewDocumentCommand\dynkin@error@not@in@tikz{} +{% + \ClassError% + {Dynkin diagrams}% + {Dynkin diagram macros called outside of tikz environment}% + {}% +}% + + \NewDocumentCommand\dynkin@error@root@ordering{} {% \ClassError% @@ -2281,10 +2562,10 @@ }% -% A slight headache: all of the routines that draw Dynkin diagrams are written -% in Bourbaki ordering. We store the roots in the current ordering. -% So when we draw edges, we need to convert from the Bourbaki ordering each time. -% We store the conversions here. +%% A slight headache: all of the routines that draw Dynkin diagrams are written +%% in Bourbaki ordering. We store the roots in the current ordering. +%% So when we draw edges, we need to convert from the Bourbaki ordering each time. +%% We store the conversions here. \newcount\RootNumber \newcount\@fromRoot \newcount\@toRoot @@ -2329,10 +2610,10 @@ {% {TestOrder}% {% - \RootNumber=#1 - \advance\RootNumber by 1 + \global\RootNumber=#1 + \global\advance\RootNumber by 1 \ifnum\RootNumber>\the\dynkin@rank% - \RootNumber=1% + \global\RootNumber=1% \fi% }% }% @@ -2344,7 +2625,16 @@ {% {Adams}{\swapRootIfInLastTwoRoots{#1}}% {Dynkin}{\swapRootIfInLastTwoRoots{#1}}% - {Kac}{\swapRootIfInLastTwoRoots{#1}}% + {Kac}{% + \ifdynkin@is@twisted + \global\RootNumber=#1 + \else + \ifdynkin@is@extended + \global\RootNumber=#1 + \else + \swapRootIfInLastTwoRoots{#1} + \fi + \fi}% }% [\global\RootNumber=#1]% }% @@ -2415,9 +2705,9 @@ \NewDocumentCommand\convertRootPair{mm} {% \convertRootNumber{#1}% - \@fromRoot=\RootNumber% + \global\@fromRoot=\RootNumber% \convertRootNumber{#2}% - \@toRoot=\RootNumber% + \global\@toRoot=\RootNumber% }% \ExplSyntaxOn @@ -2484,14 +2774,16 @@ \node (Dynkin current) at (\dynkin@root@name \the\RootNumber){};% }% -%% \dynkinPlaceRootHere{<n>}{<L>} -%% \dynkinPlaceRootHere*{<n>}{<L>} +%% \dynkinPlaceRootHere{<n>}{<L>}{<L*>} +%% \dynkinPlaceRootHere*{<n>}{<L>}{<L*>} %% Tell TikZ to place node <n> for a root of a Dynkin diagram at the current %% cursor location. Draws nothing. -%% <L>=label positioning: above, below, left, right +%% <L>=label positioning: above, below, left, right, above left, above right, below left, below right. +%% <L*> similarly, the alternate label position. %% Starred form converts <n> from Bourbaki ordering to default ordering. -\NewDocumentCommand\dynkinPlaceRootHere{smm}% +\NewDocumentCommand\dynkinPlaceRootHere{smmm}% {% +\xdef\yyyy{#2} \IfBooleanTF{#1}% {% \convertRootNumber{#2}% @@ -2501,21 +2793,28 @@ }% \node (\dynkin@root@name \the\RootNumber) at (Dynkin current) {};% \dynkin@put@direction{\the\RootNumber}{#3}% + \dynkin@put@direction*{\the\RootNumber}{#4}% }% -%% \dynkinPlaceRootRelativeTo{<p>}{<q>}{<d>}{<L>} -%% \dynkinPlaceRootRelativeTo*{<p>}{<q>}{<d>}{<L>} + +\newif\ifdynkin@hex@grid +\dynkin@hex@gridtrue + +%% \dynkinPlaceRootRelativeTo{<p>}{<q>}{<d>}{<L>}{<L*>} +%% \dynkinPlaceRootRelativeTo*{<p>}{<q>}{<d>}{<L>}{<L*>} %% Tell TikZ to place node <p> for a root of a Dynkin diagram at a location %% in direction <d> from root <q>. Draws nothing. -%% <L> is the label position: above, below, left, right. +%% <L> is the label position: above, below, left, right, above left, above right, below left, below right. +%% <L*> is the position of the alternate label similarly. %% <d> is the direction from <q>: %% west,east,south,north, %% northeast,northwest,southeast,southwest, %% southfold,northfold, %% southeastfold,southwestfold,northeastfold,northwestfold. %% Starred form is in Bourbaki root ordering; otherwise default ordering. -\NewDocumentCommand\dynkinPlaceRootRelativeTo{smmmm}% +\NewDocumentCommand\dynkinPlaceRootRelativeTo{smmmmm}% {% +\xdef\ssss{#2} \IfBooleanTF{#1}% {% \convertRootPair{#3}{#2}% @@ -2530,25 +2829,59 @@ \else \xdef\dynkin@distance{\dynkin@edge@length} \fi - \IfStrEqCase{#4}% - {% - {west}{\xdef\x{-\dynkin@distance}\xdef\y{0}}% - {east}{\xdef\x{\dynkin@distance}\xdef\y{0}}% - {south}{\xdef\x{0}\xdef\y{-\dynkin@distance}}% - {north}{\xdef\x{0}\xdef\y{\dynkin@distance}}% - {southeast}{\xdef\x{cos(-60)*\dynkin@distance}\xdef\y{sin(-60)*\dynkin@distance}}% - {southwest}{\xdef\x{cos(240)*\dynkin@distance}\xdef\y{sin(240)*\dynkin@distance}}% - {northeast}{\xdef\x{cos(60)*\dynkin@distance}\xdef\y{sin(60)*\dynkin@distance}}% - {northwest}{\xdef\x{cos(120)*\dynkin@distance}\xdef\y{sin(120)*\dynkin@distance}}% - {southeastfold}{\xdef\x{\dynkin@fold@radius}\xdef\y{-\dynkin@fold@radius}}% - {southwestfold}{\xdef\x{-\dynkin@fold@radius}\xdef\y{-\dynkin@fold@radius}}% - {northeastfold}{\xdef\x{\dynkin@fold@radius}\xdef\y{\dynkin@fold@radius}}% - {northwestfold}{\xdef\x{-\dynkin@fold@radius}\xdef\y{\dynkin@fold@radius}}% - {northfold}{\xdef\x{0}\xdef\y{2*\dynkin@fold@radius}}% - {southfold}{\xdef\x{0}\xdef\y{-2*\dynkin@fold@radius}}% - }% - \node (Dynkin current) at ($(\dynkin@root@name \the\@fromRoot)+({\x},{\y})$){}; - \dynkinPlaceRootHere{\@toRoot}{#5}% + \ifdynkin@hex@grid + \IfStrEqCase{#4}% + {% + {west}{\xdef\xd{-\dynkin@distance}\xdef\yd{0}}% + {east}{\xdef\xd{\dynkin@distance}\xdef\yd{0}}% + {south}{\xdef\xd{0}\xdef\yd{-\dynkin@distance}}% + {north}{\xdef\xd{0}\xdef\yd{\dynkin@distance}}% + {southeast}{\xdef\xd{cos(-60)*\dynkin@distance}\xdef\yd{sin(-60)*\dynkin@distance}}% + {southwest}{\xdef\xd{cos(240)*\dynkin@distance}\xdef\yd{sin(240)*\dynkin@distance}}% + {northeast}{\xdef\xd{cos(60)*\dynkin@distance}\xdef\yd{sin(60)*\dynkin@distance}}% + {northwest}{\xdef\xd{cos(120)*\dynkin@distance}\xdef\yd{sin(120)*\dynkin@distance}}% + {southeastfold}{\xdef\xd{\dynkin@fold@radius}\xdef\yd{-\dynkin@fold@radius}}% + {southwestfold}{\xdef\xd{-\dynkin@fold@radius}\xdef\yd{-\dynkin@fold@radius}}% + {northeastfold}{\xdef\xd{\dynkin@fold@radius}\xdef\yd{\dynkin@fold@radius}}% + {northwestfold}{\xdef\xd{-\dynkin@fold@radius}\xdef\yd{\dynkin@fold@radius}}% + {northfold}{\xdef\xd{0}\xdef\yd{2*\dynkin@fold@radius}}% + {southfold}{\xdef\xd{0}\xdef\yd{-2*\dynkin@fold@radius}}% + }% + \else% + \IfStrEqCase{#4}% + {% + {west}{\xdef\xd{-\dynkin@distance}\xdef\yd{0}}% + {east}{\xdef\xd{\dynkin@distance}\xdef\yd{0}}% + {south}{\xdef\xd{0}\xdef\yd{-\dynkin@distance}}% + {north}{\xdef\xd{0}\xdef\yd{\dynkin@distance}}% + {southeast}{\xdef\xd{cos(-45)*\dynkin@distance}\xdef\yd{sin(-45)*\dynkin@distance}}% + {southwest}{\xdef\xd{cos(225)*\dynkin@distance}\xdef\yd{sin(225)*\dynkin@distance}}% + {northeast}{\xdef\xd{cos(45)*\dynkin@distance}\xdef\yd{sin(45)*\dynkin@distance}}% + {northwest}{\xdef\xd{cos(135)*\dynkin@distance}\xdef\yd{sin(135)*\dynkin@distance}}% + {southeastfold}{\xdef\xd{\dynkin@fold@radius}\xdef\yd{-\dynkin@fold@radius}}% + {southwestfold}{\xdef\xd{-\dynkin@fold@radius}\xdef\yd{-\dynkin@fold@radius}}% + {northeastfold}{\xdef\xd{\dynkin@fold@radius}\xdef\yd{\dynkin@fold@radius}}% + {northwestfold}{\xdef\xd{-\dynkin@fold@radius}\xdef\yd{\dynkin@fold@radius}}% + {northfold}{\xdef\xd{0}\xdef\yd{2*\dynkin@fold@radius}}% + {southfold}{\xdef\xd{0}\xdef\yd{-2*\dynkin@fold@radius}}% + }% + \fi + \node (Dynkin current) at ($(\dynkin@root@name \the\@fromRoot)+({\xd},{\yd})$){}; + \dynkinPlaceRootHere{\the\@toRoot}{#5}{#6}% +}% + +% Jump the current location by a certain multiple of the fold radius. +\NewDocumentCommand\dynkin@jump{m}% +{% +\xdef\yj{#1*\dynkin@fold@radius}% +\node (Dynkin current) at ($(Dynkin current)+(0,{\yj})$){};% +}% + +% Jump the current location by a certain multiple of the edge radius multiplied by sin(60). +\NewDocumentCommand\dynkin@hop{m}% +{% +\xdef\yjj{#1*\dynkin@edge@length*sin(60)}% +\node (Dynkin current) at ($(Dynkin current)+(0,{\yjj})$){};% }% %% \dynkinEast @@ -2560,8 +2893,6 @@ \node (Dynkin current) at ($(Dynkin current)+({\distance},0)$) {};% }% - - %% \dynkinWest %% Moves the TikZ cursor one edge to the left. %% Starred form for an indefinite edge. @@ -2677,7 +3008,6 @@ \fi% }% - %% \dynkin@fold@arrow@if@oo{<p>}{<q>} %% Inputs are roots (in Bourbaki ordering). %% If we are working on a Satake diagram, and both roots are @@ -2701,25 +3031,29 @@ \fi% }% -%% \dynkin@pipe{<f>}{<t>}{<D>}{<L>} +\newcount\pipebmo +\newcount\pipefpo +\newcount\pipe@end +\newcount\start@pipe + + +%% \dynkin@pipe{<f>}{<t>}{<D>}{<L>}{<L*>} %% Layout the roots (as TikZ nodes) <f>, <f>+1, \dots, <t> in the Bourbaki ordering, in a straight line, %% starting at the current position (Dynkin current), moving in the direction <D>=east, west, north, south, with labels placed according to <L>=left,right,above,below. %% Assumes that the root <f> is already created as a node in TikZ, but the others are not. -\NewDocumentCommand\dynkin@pipe{mmmm}% -{% - \newcount\start@root - \start@root=#1 - \ifnum\start@root<#2% - \newcount\bmo - \bmo=#1 - \newcount\fpo - \fpo=#1 - \advance\fpo by 1 - \foreach \b in {\the\fpo,...,#2}% +\NewDocumentCommand\dynkin@pipe{mmmmm}% +{% + \start@pipe=#1 + \pipe@end=#2 + \ifnum\start@pipe<\the\pipe@end% + \global\pipebmo=\the\start@pipe + \global\pipefpo=\the\start@pipe + \global\advance\pipefpo by 1 + \foreach \bpipe in {\the\pipefpo,...,\the\pipe@end}% {% - \dynkinPlaceRootRelativeTo*{\b}{\the\bmo}{#3}{#4}% - \dynkinEdge*{SingleEdge}{\b}{\the\bmo}% - \global\advance\bmo by 1% + \dynkinPlaceRootRelativeTo*{\bpipe}{\the\pipebmo}{#3}{#4}{#5}% + \dynkinEdge*{SingleEdge}{\bpipe}{\the\pipebmo}% + \global\advance\pipebmo by 1% }% \fi% }% @@ -2735,7 +3069,7 @@ \advance\h by #2% \advance\h by -1% \divide\h by 2% - \dynkin@pipe{#1}{\the\h}{east}{above} + \dynkin@pipe{#1}{\the\h}{east}{above}{below right} \newcount\hpo \hpo=\the\h \advance\hpo by 1 @@ -2747,15 +3081,15 @@ \advance\nrts by -#1 \ifodd\nrts% \global\advance\afterfold by 1 - \dynkinPlaceRootRelativeTo*{\the\hpo}{\the\h}{southeastfold}{right} + \dynkinPlaceRootRelativeTo*{\the\hpo}{\the\h}{southeastfold}{right}{left} \dynkinEdge*{RightDownArc}{\the\h}{\the\hpo}% - \dynkinPlaceRootRelativeTo*{\the\afterfold}{\the\hpo}{southwestfold}{below} + \dynkinPlaceRootRelativeTo*{\the\afterfold}{\the\hpo}{southwestfold}{below}{above right} \dynkinEdge*{RightUpArc}{\the\afterfold}{\the\hpo}% \else - \dynkinPlaceRootRelativeTo*{\the\afterfold}{\the\h}{southfold}{below} + \dynkinPlaceRootRelativeTo*{\the\afterfold}{\the\h}{southfold}{below}{above right} \dynkinEdge*{SemiCircle}{\the\h}{\the\afterfold}% \fi - \dynkin@pipe{\the\afterfold}{#2}{west}{below} + \dynkin@pipe{\the\afterfold}{#2}{west}{below}{above right} \ifdynkin@arrows% \newcount\countdown% \countdown=#2% @@ -2776,20 +3110,23 @@ \fi% % % Create the roots. \ifnum\dynkin@ply>1% - \dynkinPlaceRootHere*{1}{above}% + \ifnum\dynkin@ply=2% + \dynkin@jump{1}% + \fi% + \dynkinPlaceRootHere*{1}{above}{below right}% \dynkin@fold{1}{\the\dynkin@rank}% \else% - \dynkinPlaceRootHere*{1}{below}% + \dynkinPlaceRootHere*{1}{below}{above}% \ifnum\dynkin@rank>1% - \dynkin@pipe{1}{\the\dynkin@rank}{east}{below}% + \dynkin@pipe{1}{\the\dynkin@rank}{east}{below}{above}% \fi% \fi% }% %% \Bdynkin %% Draw a B series Dynkin diagram. -\newcommand*{\Bdynkin} -{ +\NewDocumentCommand\Bdynkin{}% +{% \ifnum\dynkin@rank<2 \Adynkin \else @@ -2804,31 +3141,34 @@ {\(4\)}; \else % Create the roots. - \ifnum\dynkin@ply>1% + \ifnum\dynkin@ply>1% \ifnum\dynkin@rank>3% - \dynkinPlaceRootHere*{1}{above}% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{above}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{1}{above}{below right}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{above}{below right}% \dynkin@fold{2}{\the\drmo}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{west}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{west}{below}{above right}% \dynkinEdge*{DoubleEdge}{\the\drmo}{\the\dynkin@rank}% \dynkinEdge*{SingleEdge}{1}{2}% \else% \ifnum\dynkin@rank=2% - \dynkinPlaceRootHere*{1}{left}% - \dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{1}{above}{below right}% + \dynkinPlaceRootRelativeTo*{2}{1}{southfold}{below}{above right}% \dynkinEdge*{DoubleDownRightSemiCircle}{1}{2}% \else% - \dynkinPlaceRootHere*{1}{left}% - \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{right}% - \dynkinPlaceRootRelativeTo*{3}{2}{southwestfold}{left}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{1}{above}{below right}% + \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{right}{left}% + \dynkinPlaceRootRelativeTo*{3}{2}{southwestfold}{below}{above right}% \dynkinEdge*{RightDownArc}{1}{2}% \dynkinEdge*{DoubleDownLeftArc}{2}{3}% \fi% \fi% \else% - \dynkinPlaceRootHere*{1}{below} - \dynkin@pipe{1}{\the\drmo}{east}{below} - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{east}{below} + \dynkinPlaceRootHere*{1}{below}{above} + \dynkin@pipe{1}{\the\drmo}{east}{below}{above} + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{east}{below}{above} \dynkinEdge*{DoubleEdge}{\the\drmo}{\the\dynkin@rank}% \fi% \ifdynkin@arrows% @@ -2865,35 +3205,47 @@ \ifdynkin@is@extended% \ifnum\dynkin@ply>1% \ifnum\dynkin@rank=4% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{right}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{left}{right}% \else% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below right}{above right}% \fi% - \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}{above left}% \else% \ifdynkin@left@fold% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}% + \ifnum\dynkin@rank=4% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{left}{right}% + \else% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below right}{above right}% + \fi% + \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}{above left}% \else% - \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{left}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}% + \ifnum\dynkin@rank=4% + \ifdynkin@right@fold% + \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{left}{right}% + \else% + \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{below}{above}% + \fi% + \else% + \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{below right}{above right}% + \fi% + \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}{above left}% \fi% \fi% \dynkinMoveToRoot*{2}% \else - \dynkinPlaceRootHere*{1}{below} + \dynkinPlaceRootHere*{1}{below}{above} \ifnum\dynkin@rank=4% \ifdynkin@right@fold% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \else% \ifnum\dynkin@ply>1% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below left}{above left}% \else% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{right}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below left}{above left}% \fi% \fi% \else% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \fi% \fi \newcount\rmo @@ -2907,52 +3259,48 @@ \advance\rmth by -1 \ifnum\dynkin@rank>2 \ifnum\dynkin@rank>5% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}{above}% \else% \ifnum\dynkin@ply>1% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below left}{above left}% \else% -% \ifdynkin@left@fold% -% \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% -% \else% \ifnum\dynkin@rank=5% \ifdynkin@right@fold% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below left}{above left}% \else% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{right}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below left}{above left}% \fi% \else% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{right}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below right}{above left}% \fi% -% \fi% \fi% \fi% \ifnum\rmth>3% - \dynkin@pipe{3}{\the\rmth}{east}{below}% + \dynkin@pipe{3}{\the\rmth}{east}{below}{above}% \fi% \ifnum\rmt>3% \ifnum\dynkin@ply>1% - \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{below}% + \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{below left}{above left}% \else% \ifdynkin@right@fold% - \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{below}% + \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{below left}{above left}% \else% - \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{right}% + \dynkinPlaceRootRelativeTo*{\rmt}{\rmth}{east}{below left}{above left}% \fi% \fi% \dynkinEdge*{SingleEdge}{\rmt}{\rmth}% \fi% \ifnum\dynkin@ply=1% \ifdynkin@right@fold% - \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeastfold}{right}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeastfold}{right}% + \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeastfold}{right}{above right}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeastfold}{right}{above right}% \else% - \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeast}{right}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeast}{right}% + \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeast}{right}{above right}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeast}{right}{above right}% \fi% \else% - \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeastfold}{right}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeastfold}{right}% + \dynkinPlaceRootRelativeTo*{\the\rmo}{\the\rmt}{northeastfold}{right}{above right}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\rmt}{southeastfold}{right}{above right}% \fi% \fi% }% @@ -3018,19 +3366,25 @@ \fi% }% +\def\centerarc[#1](#2)(#3:#4:#5);% +%Syntax: [draw options] (center) (initial angle:final angle:radius) + { + \draw[#1]([shift=(#3:#5)]#2) arc (#3:#4:#5); + } + %% \DthreePly %% Draws a D series Dynkin diagram of rank 4, folded over a G2. \NewDocumentCommand\DthreePly{}% {% \ifdynkin@right@fold% - \dynkinPlaceRootHere*{2}{right}% + \dynkinPlaceRootHere*{1}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{3}{1}{east}{below left}{above right}% \xdef\old@edge@length{\dynkin@edge@length}% \pgfmathparse{1.5*\dynkin@edge@length}% \xdef\dynkin@edge@length{\pgfmathresult pt}% - \dynkinPlaceRootRelativeTo*{3}{2}{south}{right}% - \dynkinPlaceRootRelativeTo*{4}{3}{south}{right}% + \dynkinPlaceRootRelativeTo*{2}{3}{north}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{4}{3}{south}{below}{above right}% \xdef\dynkin@edge@length{\old@edge@length}% - \dynkinPlaceRootRelativeTo*{1}{3}{west}{left}% \edef\old@fold@radius{\dynkin@fold@radius}% \xdef\dynkin@fold@radius{\dynkin@edge@length}% \dynkinEdge*{SingleEdge}{1}{3}% @@ -3042,14 +3396,17 @@ \dynkin@fold@arrow@if@oo{3}{4}% \fi% \else% - \global\dynkin@ply=1\relax% - \Ddynkin{}% + \dynkinPlaceRootHere*{1}{left}{above right}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below left}{above left}% + \dynkinPlaceRootRelativeTo*{3}{2}{northeast}{above right}{below}% + \dynkinPlaceRootRelativeTo*{4}{2}{southeast}{below right}{left}% + \dynkinEdge*{SingleEdge}{1}{2}% + \dynkinEdge*{SingleEdge}{2}{3}% + \dynkinEdge*{SingleEdge}{2}{4}% \begin{scope}[on background layer]% - \draw - [/Dynkin diagram/foldStyle] - ($(\dynkin@root@name 2)$) - circle - (\dynkin@edge@length);% + \centerarc[/Dynkin diagram/fold style](\dynkin@root@name 2)(-60:60:\dynkin@edge@length); + \centerarc[/Dynkin diagram/fold style](\dynkin@root@name 2)(60:180:\dynkin@edge@length); + \centerarc[/Dynkin diagram/fold style](\dynkin@root@name 2)(180:300:\dynkin@edge@length); \end{scope}% \fi% }% @@ -3081,6 +3438,7 @@ \fi% \fi% \fi% + \gdef\dynkin@series{D}% \fi% }% @@ -3089,23 +3447,23 @@ \newcommand*{\Edynkin@unfolded}% { % Create the @roots. - \dynkinPlaceRootHere*{1}{below}% - \dynkinPlaceRootRelativeTo*{3}{1}{east}{below}% - \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}% + \dynkinPlaceRootHere*{1}{below}{above}% + \dynkinPlaceRootRelativeTo*{3}{1}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}{above right}% \ifdynkin@is@extended \ifnum\dynkin@rank=6 - \dynkinPlaceRootRelativeTo*{2}{4}{north}{right}% + \dynkinPlaceRootRelativeTo*{2}{4}{north}{right}{above right}% \else - \dynkinPlaceRootRelativeTo*{2}{4}{north}{above}% + \dynkinPlaceRootRelativeTo*{2}{4}{north}{right}{above}% \fi \else - \dynkinPlaceRootRelativeTo*{2}{4}{north}{above}% + \dynkinPlaceRootRelativeTo*{2}{4}{north}{right}{above}% \fi \newcount\bmo\relax% \bmo=4\relax% \foreach \b in {5,...,\dynkin@rank}% {% - \dynkinPlaceRootRelativeTo*{\b}{\the\bmo}{east}{below}% + \dynkinPlaceRootRelativeTo*{\b}{\the\bmo}{east}{below}{above}% \dynkinEdge*{SingleEdge}{\the\bmo}{\b}% \global\advance\bmo by 1% }% @@ -3115,14 +3473,14 @@ \dynkinEdge*{SingleEdge}{4}{2} \ifdynkin@is@extended% \ifnum\dynkin@rank=6% - \dynkinPlaceRootRelativeTo*{0}{2}{north}{above}% + \dynkinPlaceRootRelativeTo*{0}{2}{north}{right}{above}% \dynkinEdge*{SingleEdge}{0}{2}% \else% \ifnum\dynkin@rank=7% - \dynkinPlaceRootRelativeTo*{0}{1}{west}{below}% + \dynkinPlaceRootRelativeTo*{0}{1}{west}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% \else% - \dynkinPlaceRootRelativeTo*{0}{8}{east}{below}% + \dynkinPlaceRootRelativeTo*{0}{8}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{8}% \fi% \fi% @@ -3143,17 +3501,18 @@ \NewDocumentCommand\ESixTwoPly{}% {% - \dynkinPlaceRootHere*{1}{above}% - \dynkinPlaceRootRelativeTo*{3}{1}{east}{above}% - \dynkinPlaceRootRelativeTo*{4}{3}{southeastfold}{below}% - \dynkinPlaceRootRelativeTo*{5}{4}{southwestfold}{below}% - \dynkinPlaceRootRelativeTo*{6}{5}{west}{below}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{1}{above}{below right}% + \dynkinPlaceRootRelativeTo*{3}{1}{east}{above}{below right}% + \dynkinPlaceRootRelativeTo*{4}{3}{southeastfold}{below right}{above right}% + \dynkinPlaceRootRelativeTo*{5}{4}{southwestfold}{below}{above right}% + \dynkinPlaceRootRelativeTo*{6}{5}{west}{below}{above right}% \ifdynkin@is@extended% - \dynkinPlaceRootRelativeTo*{2}{4}{east}{below}% - \dynkinPlaceRootRelativeTo*{0}{2}{east}{right}% + \dynkinPlaceRootRelativeTo*{2}{4}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{0}{2}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{2}% \else% - \dynkinPlaceRootRelativeTo*{2}{4}{east}{right}% + \dynkinPlaceRootRelativeTo*{2}{4}{east}{below}{above}% \fi% \dynkinEdge*{SingleEdge}{1}{3}% \dynkinEdge*{SingleEdge}{2}{4}% @@ -3169,19 +3528,21 @@ \NewDocumentCommand\ESixThreePly{}% {% - \dynkinPlaceRootHere*{3}{above}% + \dynkin@is@extendedtrue + \node (Dynkin current) at ($(Dynkin current)+(0,1.5*\dynkin@edge@length)$){};% + \dynkinPlaceRootHere*{3}{below left}{above}% \edef\old@edge@length{\dynkin@edge@length}% \pgfmathparse{1.5*\dynkin@edge@length}% \xdef\dynkin@edge@length{\pgfmathresult pt}% - \dynkinPlaceRootRelativeTo*{2}{3}{south}{diagonal}% - \dynkinPlaceRootRelativeTo*{5}{2}{south}{below}% + \dynkinPlaceRootRelativeTo*{2}{3}{south}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{5}{2}{south}{below}{above right}% \xdef\dynkin@edge@length{\old@edge@length}% - \dynkinPlaceRootRelativeTo*{1}{3}{west}{left}% - \dynkinPlaceRootRelativeTo*{0}{2}{west}{left}% - \dynkinPlaceRootRelativeTo*{6}{5}{west}{left}% + \dynkinPlaceRootRelativeTo*{1}{3}{west}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{0}{2}{west}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{6}{5}{west}{below}{above right}% \edef\old@fold@radius{\dynkin@fold@radius}% \xdef\dynkin@fold@radius{\dynkin@edge@length}% - \dynkinPlaceRootRelativeTo*{4}{2}{east}{right}% + \dynkinPlaceRootRelativeTo*{4}{2}{east}{below left}{above right}% \dynkinEdge*{SingleEdge}{4}{2}% \dynkinEdge*{SingleEdge}{3}{1}% \dynkinEdge*{SingleEdge}{2}{0}% @@ -3199,14 +3560,15 @@ \NewDocumentCommand\extendedESevenFolded{}% {% - \dynkinPlaceRootHere*{0}{above}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}% - \dynkinPlaceRootRelativeTo*{3}{1}{east}{above}% - \dynkinPlaceRootRelativeTo*{4}{3}{southeastfold}{left}% - \dynkinPlaceRootRelativeTo*{5}{4}{southwestfold}{below}% - \dynkinPlaceRootRelativeTo*{6}{5}{west}{below}% - \dynkinPlaceRootRelativeTo*{7}{6}{west}{below}% - \dynkinPlaceRootRelativeTo*{2}{4}{east}{below}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{0}{above}{below}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}{below}% + \dynkinPlaceRootRelativeTo*{3}{1}{east}{above}{below}% + \dynkinPlaceRootRelativeTo*{4}{3}{southeastfold}{left}{right}% + \dynkinPlaceRootRelativeTo*{5}{4}{southwestfold}{below}{above}% + \dynkinPlaceRootRelativeTo*{6}{5}{west}{below}{above}% + \dynkinPlaceRootRelativeTo*{7}{6}{west}{below}{above}% + \dynkinPlaceRootRelativeTo*{2}{4}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% \dynkinEdge*{SingleEdge}{1}{3}% \dynkinEdge*{SingleEdge}{2}{4}% @@ -3226,12 +3588,12 @@ %% Draws an E6 Dynkin diagram. \NewDocumentCommand\Edynkin{}% {% - \ifnum\dynkin@ply>1% + \ifnum\dynkin@ply>1 \ifnum\dynkin@rank=6% \Edynkin@folded% \else% - \ifnum\dynkin@rank=7% - \ifdynkin@is@extended% + \ifnum\dynkin@rank=7 + \ifdynkin@is@extended \Edynkin@folded% \else% \ClassError{Dynkin diagrams}% @@ -3248,10 +3610,10 @@ %% Draws an F series Dynkin diagram. \newcommand*{\Fdynkin}% { - \dynkinPlaceRootHere*{1}{below} - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% - \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}% + \dynkinPlaceRootHere*{1}{below}{above}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}{above}% \ifdynkin@Coxeter \dynkinEdge*{SingleEdge}{1}{2} \dynkinEdge*{SingleEdge}{2}{3} @@ -3275,15 +3637,16 @@ \Idynkin% \else% \ifnum\dynkin@ply>1% - \dynkinPlaceRootHere*{1}{left}% - \dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{1}{left}{above}% + \dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}{below}% \dynkinEdge*{TripleDownRightSemiCircle}{1}{2}% \ifdynkin@arrows% \dynkinLeftFold*{1}{2}% \fi% \else% - \dynkinPlaceRootHere*{1}{below}% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% + \dynkinPlaceRootHere*{1}{below}{above}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \dynkinTripleEdge*{1}{2}% \fi% \fi% @@ -3315,13 +3678,11 @@ \NewDocumentCommand\extendedAdynkin{}% {% \ifnum\dynkin@rank=1% - \dynkinPlaceRootHere{0}{below}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% + \dynkinPlaceRootHere{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% \convertRootNumber{1}% \begin{scope}{on background layer}% - \draw[% - /Dynkin diagram/edge, - double, + \draw[/Dynkin diagram/edge,double, {Classical TikZ Rightarrow[length={2*\dynkin@root@radius}]}% -{Classical TikZ Rightarrow[length={2*\dynkin@root@radius}]}% ]% @@ -3331,10 +3692,11 @@ \end{scope}% \else% \ifnum\dynkin@ply=4% - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{right}% - \dynkinPlaceRootRelativeTo*{2}{0}{south}{left}% - \dynkinPlaceRootRelativeTo*{3}{1}{south}{right}% + \node (Dynkin current) at ($(Dynkin current)+(0,\dynkin@edge@length)$){};% + \dynkinPlaceRootHere*{0}{left}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{right}{above}% + \dynkinPlaceRootRelativeTo*{2}{0}{south}{below}{left}% + \dynkinPlaceRootRelativeTo*{3}{1}{south}{below}{right}% \dynkinEdge*{SingleEdge}{0}{1}% \dynkinEdge*{SingleEdge}{1}{2}% \dynkinEdge*{SingleEdge}{2}{3}% @@ -3344,13 +3706,13 @@ \else% \Adynkin{}% \ifnum\dynkin@ply>1% - \dynkinPlaceRootRelativeTo*{0}{1}{southwestfold}{right}% + \dynkinPlaceRootRelativeTo*{0}{1}{southwestfold}{left}{right}% \dynkinEdge*{LeftDownArc}{1}{0}% \dynkinEdge*{LeftUpArc}{\the\dynkin@rank}{0}% \else% \node (Dynkin current) at ($.5*(\dynkin@root@name 1)+.5*(\dynkin@root@name \the\dynkin@rank)$){};% \dynkinNorth% - \dynkinPlaceRootHere*{0}{above}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% \dynkinEdge*{SingleEdge}{0}{\the\dynkin@rank}% \fi% @@ -3361,16 +3723,16 @@ \NewDocumentCommand\extendedBthreePly{}% {% - \dynkinPlaceRootHere*{0}{right}% - \edef\old@edge@length{\dynkin@edge@length}% - \pgfmathparse{1.5*\dynkin@edge@length}% - \xdef\dynkin@edge@length{\pgfmathresult pt}% - \dynkinPlaceRootRelativeTo*{1}{0}{south}{right}% - \dynkinPlaceRootRelativeTo*{3}{1}{south}{right}% - \xdef\dynkin@edge@length{\old@edge@length}% + \ifnum\dynkin@rank=3 + \else + \ClassError{Dynkin diagrams}{B series extended 3-ply diagrams must have rank 3, so cannot have rank \the\dynkin@rank}{}% + \fi + \dynkinPlaceRootHere*{1}{right}{above left}% + \dynkinPlaceRootRelativeTo*{0}{1}{north}{above}{below left}% + \dynkinPlaceRootRelativeTo*{3}{1}{south}{below}{above left}% \edef\old@fold@radius{\dynkin@fold@radius}% \xdef\dynkin@fold@radius{\dynkin@edge@length}% - \dynkinPlaceRootRelativeTo*{2}{1}{west}{left}% + \dynkinPlaceRootRelativeTo*{2}{1}{west}{left}{above right}% \dynkinEdge*{LeftDownArc}{0}{2}% \dynkinFold*{0}{1}% \dynkinFold*{1}{3}% @@ -3387,9 +3749,9 @@ \extendedAdynkin% \else% \ifnum\the\dynkin@rank=2 - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{left}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% \dynkinEdge*{DoubleEdge}{1}{2}% \else% @@ -3397,16 +3759,18 @@ \extendedBthreePly% \else% \ifnum\dynkin@ply=2% - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{0}{left}{above left}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below right}{above right}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}{above left}% \dynkinLeftFold*{0}{1}% \dynkinEdge*{RightDownArc}{0}{2}% \dynkinEdge*{RightUpArc}{1}{2}% \else% - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{left}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}% + \dynkin@hop{1}% + \dynkinPlaceRootHere*{0}{left}{above left}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{below right}{above right}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}{above left}% \dynkinEdge*{SingleEdge}{0}{2}% \dynkinEdge*{SingleEdge}{1}{2}% \fi% @@ -3418,13 +3782,13 @@ \ifnum\dynkin@rank>3% \foreach \b in {3,...,\the\drmo}% {% - \dynkinPlaceRootRelativeTo*{\b}{\the\bmo}{east}{below}% + \dynkinPlaceRootRelativeTo*{\b}{\the\bmo}{east}{below}{above}% \dynkinEdge*{SingleEdge}{\b}{\the\bmo}% \global\advance\bmo by 1\relax% }% \fi% \ifnum\dynkin@ply<3% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{east}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmo}{east}{below}{above}% \fi% \ifdynkin@Coxeter% \dynkinEdge*{SingleEdge}{\the\drmo}{\the\dynkin@rank}% @@ -3447,7 +3811,7 @@ %% Draws an C series affine Dynkin/Coxeter diagram. \newcommand*{\extendedCdynkin}% {% - \dynkinPlaceRootHere*{0}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% \Cdynkin{}% \ifdynkin@Coxeter% @@ -3464,13 +3828,14 @@ %% Draws a D^1_4 series affine Dynkin diagram folded about an A^2_2. \NewDocumentCommand\DOneFourFourPly{}% {% - \dynkinPlaceRootHere*{0}{right}% + \dynkin@hop{2.25}% + \dynkinPlaceRootHere*{0}{right}{left}% \edef\old@edge@length{\dynkin@edge@length}% \pgfmathparse{1.5*\dynkin@edge@length}% \xdef\dynkin@edge@length{\pgfmathresult pt}% - \dynkinPlaceRootRelativeTo*{1}{0}{south}{right}% - \dynkinPlaceRootRelativeTo*{3}{1}{south}{right}% - \dynkinPlaceRootRelativeTo*{4}{3}{south}{right}% + \dynkinPlaceRootRelativeTo*{1}{0}{south}{right}{left}% + \dynkinPlaceRootRelativeTo*{3}{1}{south}{right}{left}% + \dynkinPlaceRootRelativeTo*{4}{3}{south}{right}{left}% \xdef\dynkin@edge@length{\old@edge@length}% \convertRootPair{0}{4}% \node @@ -3478,7 +3843,7 @@ at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$){};% \dynkinWest% - \dynkinPlaceRootHere*{2}{left}% + \dynkinPlaceRootHere*{2}{right}{left}% \dynkinEdge*{SingleEdge}{0}{2}% \dynkinEdge*{SingleEdge}{1}{2}% \dynkinEdge*{SingleEdge}{3}{2}% @@ -3493,9 +3858,11 @@ %% Draws a D series affine Dynkin diagram folded about its middle. \NewDocumentCommand\DfourPly{}% {% - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{above}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}% + \xdef\yfp{2*\dynkin@fold@radius+2*cos(60)*\dynkin@edge@length}% + \node (Dynkin current) at ($(Dynkin current)+(0,{\yfp})$){};% + \dynkinPlaceRootHere*{0}{left}{above left}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{above right}{below right}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}{above left}% \dynkinMoveToRoot*{2}% \newcount\drmo% \drmo=\the\dynkin@rank% @@ -3507,13 +3874,11 @@ \pgfmathparse{\dynkin@fold@radius+2*cos(60)*\dynkin@edge@length}% \xdef\dynkin@fold@radius{\pgfmathresult pt}% \dynkin@fold{2}{\the\drmt}% + % We place the root number rank-2 once again (it is already placed in the \dynkin@fold): + \dynkinPlaceRootHere*{\the\drmt}{below right}{above right}% \xdef\dynkin@fold@radius{\old@fold}% - \dynkinPlaceRootRelativeTo*{\the\drmo}{\the\drmt}{northwestfold}{left}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmt}{southwestfold}{left}% -% \ifdynkin@arrows% -% \dynkinLeftFold*{0}{1}% -% \dynkinLeftFold*{\the\drmo}{\the\dynkin@rank}% -% \fi% + \dynkinPlaceRootRelativeTo*{\the\drmo}{\the\drmt}{northwestfold}{left}{above left}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@rank}{\the\drmt}{southwestfold}{left}{above left}% \dynkinEdge*{RightDownArc}{0}{2}% \dynkinEdge*{RightUpArc}{1}{2}% \dynkinEdge*{RightDownArc}{\the\drmo}{\the\drmt}% @@ -3524,15 +3889,15 @@ %% Draws a D^1_4 series Dynkin diagram, folded over a B^1_3. \NewDocumentCommand\extendedDthreePly{}% {% - \dynkinPlaceRootHere*{2}{right}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{3}{1}{east}{below left}{above right}% \edef\old@edge@length{\dynkin@edge@length}% \pgfmathparse{1.5*\dynkin@edge@length}% \xdef\dynkin@edge@length{\pgfmathresult pt}% - \dynkinPlaceRootRelativeTo*{3}{2}{south}{right}% - \dynkinPlaceRootRelativeTo*{4}{3}{south}{right}% + \dynkinPlaceRootRelativeTo*{2}{3}{north}{below left}{above right}% + \dynkinPlaceRootRelativeTo*{4}{3}{south}{below}{above right}% \xdef\dynkin@edge@length{\old@edge@length}% - \dynkinPlaceRootRelativeTo*{1}{3}{west}{diagonal}% - \dynkinPlaceRootRelativeTo*{0}{1}{west}{left}% \dynkinEdge*{SingleEdge}{1}{3}% \edef\old@fold@radius{\dynkin@fold@radius}% \xdef\dynkin@fold@radius{\dynkin@edge@length}% @@ -3563,8 +3928,12 @@ \else% \ifnum\the\dynkin@rank=1% \extendedAdynkin% - \else - \dynkinPlaceRootHere*{0}{left}% + \else% + \ifnum\the\dynkin@rank=4% + \global\dynkin@hex@gridfalse + \fi + \dynkin@hop{1}% + \dynkinPlaceRootHere*{0}{left}{above left}% \Ddynkin% \ifnum\dynkin@ply=2% \dynkinEdge*{RightDownArc}{0}{2}% @@ -3575,6 +3944,9 @@ \dynkinEdge*{SingleEdge}{0}{2}% \fi% \fi% + \ifnum\the\dynkin@rank=4% + \global\dynkin@hex@gridtrue + \fi \fi% \fi% \fi% @@ -3592,19 +3964,20 @@ \newcommand*{\extendedFdynkin}% {% \ifnum\dynkin@ply=1% - \dynkinPlaceRootHere*{0}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% \Fdynkin% \dynkinEdge*{SingleEdge}{0}{1}% \else% - \dynkinPlaceRootHere*{0}{above}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{0}{above}{below}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}{below}% \dynkinEdge*{SingleEdge}{0}{1}% - \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{right}% + \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{right}{left}% \dynkinDefiniteRightDownArc*{1}{2}% - \dynkinPlaceRootRelativeTo*{3}{2}{southwestfold}{below}% + \dynkinPlaceRootRelativeTo*{3}{2}{southwestfold}{below}{above}% \dynkinDefiniteDoubleDownLeftArc*{2}{3}% - \dynkinPlaceRootRelativeTo*{4}{3}{west}{below}% + \dynkinPlaceRootRelativeTo*{4}{3}{west}{below}{above}% \dynkinEdge*{SingleEdge}{3}{4}% \ifdynkin@arrows% \dynkinFold*{0}{4}% @@ -3618,7 +3991,7 @@ \newcommand*{\extendedGdynkin}% {% \xdef\dynkin@gonality{6}% - \dynkinPlaceRootHere*{0}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% \Gdynkin% \dynkinEdge*{SingleEdge}{0}{1}% @@ -3628,7 +4001,7 @@ %% Draws an H series affine Coxeter diagram. \newcommand*{\extendedHdynkin}% {% - \dynkinPlaceRootHere*{0}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% \Adynkin% \dynkinEdge*{SingleEdge}{0}{1}% @@ -3648,7 +4021,7 @@ %% Draws an I series affine Coxeter diagram. \newcommand*{\extendedIdynkin}% { - \dynkinPlaceRootHere*{0}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% \dynkinEast% \dynkin@rank=1% \Adynkin% @@ -3669,51 +4042,64 @@ \ClassError{Dynkin diagrams}{A2 series twisted diagrams cannot have rank \the\dynkin@rank}{}% \fi \ifnum\dynkin@rank=2% - \dynkinPlaceRootHere*{0}{below}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% \dynkinQuadrupleEdge*{1}{0}% \else% \newcount\hmo% \hmo=\the\dynkin@nodes% \advance\hmo by -1% \ifodd\dynkin@rank% +\typeout{!!! odd dynkin rank} \ifnum\dynkin@ply>1% - \dynkinPlaceRootHere*{0}{above}% - \dynkinPlaceRootRelativeTo*{2}{0}{southeastfold}{below}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{below}% +\typeout{!!! ply more than 1} + \dynkinPlaceRootHere*{2}{below right}{above right}% + \dynkinPlaceRootRelativeTo*{0}{2}{northwestfold}{left}{above left}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwestfold}{left}{above left}% \dynkinEdge*{RightDownArc}{0}{2}% \dynkinEdge*{RightUpArc}{1}{2}% \else% - \dynkinPlaceRootHere*{0}{left}% - \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{left}% - \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}% + \dynkin@hop{1}% + \dynkinPlaceRootHere*{0}{left}{right}% + \dynkinPlaceRootRelativeTo*{2}{0}{southeast}{left}{right}% + \dynkinPlaceRootRelativeTo*{1}{2}{southwest}{left}{right}% \dynkinEdge*{SingleEdge}{0}{2}% \dynkinEdge*{SingleEdge}{1}{2}% \fi% \dynkinMoveToRoot*{2}% - \dynkin@pipe{2}{\the\hmo}{east}{below}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{east}{below}% + \dynkin@pipe{2}{\the\hmo}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{east}{below}{above}% \dynkinEdge*{DoubleEdge}{\the\dynkin@nodes}{\the\hmo}% \ifnum\dynkin@ply>1% \dynkinLeftFold*{0}{1}% \fi% \else% - \dynkinPlaceRootHere*{0}{below}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% - \dynkinEdge*{DoubleEdge}{1}{0}% \ifnum\dynkin@nodes>1% \ifnum\dynkin@ply>1% \ifnum\hmo>1% + \dynkin@jump{1}% + \fi% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below left}{above}% + \dynkinEdge*{DoubleEdge}{1}{0}% + \ifnum\hmo>1% \dynkin@fold{1}{\the\hmo}% \fi% - \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{west}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{west}{below}{above}% \else% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below right}{above}% + \dynkinEdge*{DoubleEdge}{1}{0}% \ifnum\hmo>1% - \dynkin@pipe{1}{\the\hmo}{east}{below}% + \dynkin@pipe{1}{\the\hmo}{east}{below}{above}% \fi% - \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{east}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\hmo}{east}{below}{above}% \fi% \dynkinEdge*{DoubleEdge}{\the\dynkin@nodes}{\the\hmo}% + \else% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below right}{above}% + \dynkinEdge*{DoubleEdge}{1}{0}% \fi% \fi% \fi% @@ -3730,9 +4116,9 @@ {3}% {% \ifnum\dynkin@rank=4% - \dynkinPlaceRootHere*{0}{below}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% - \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}% \dynkinEdge*{SingleEdge}{0}{1}% \dynkinTripleEdge*{2}{1}% \else% @@ -3755,16 +4141,17 @@ \drmo=\the\dynkin@nodes% \advance\drmo by -1% \ifnum\dynkin@ply=1% - \dynkinPlaceRootHere*{0}{below}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}% \else% \ifnum\dynkin@rank=3% - \dynkinPlaceRootHere*{0}{right}% - \dynkinPlaceRootRelativeTo*{1}{0}{southwestfold}{left}% - \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{right}% + \dynkin@jump{1}% + \dynkinPlaceRootHere*{0}{above}{right}% + \dynkinPlaceRootRelativeTo*{1}{0}{southwestfold}{left}{right}% + \dynkinPlaceRootRelativeTo*{2}{1}{southeastfold}{below}{right}% \else% - \dynkinPlaceRootHere*{0}{above}% - \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}% + \dynkinPlaceRootHere*{0}{above}{below}% + \dynkinPlaceRootRelativeTo*{1}{0}{east}{above}{below}% \fi% \fi% \ifnum\dynkin@ply=2% @@ -3775,16 +4162,16 @@ \ifnum\dynkin@ply>1% \ifnum\dynkin@rank>3% \dynkin@fold{1}{\the\drmo}% - \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\drmo}{west}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\drmo}{west}{below}{above}% \dynkinFold*{0}{\the\dynkin@nodes}% \else% \dynkinFold*{0}{2}% \fi% \else% \ifnum\dynkin@rank>2% - \dynkin@pipe{1}{\the\drmo}{east}{below}% + \dynkin@pipe{1}{\the\drmo}{east}{below}{above}% \fi% - \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\drmo}{east}{below}% + \dynkinPlaceRootRelativeTo*{\the\dynkin@nodes}{\the\drmo}{east}{below}{above}% \fi% \ifnum\dynkin@ply=2% \dynkinEdge*{DoubleDownRightArc}{\the\drmo}{\the\dynkin@nodes}% @@ -3804,10 +4191,10 @@ {1}{\extendedEdynkin}% {2}% {% - \dynkinPlaceRootHere*{0}{below}% - \dynkin@pipe{0}{2}{east}{below}% - \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}% - \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}% + \dynkinPlaceRootHere*{0}{below}{above}% + \dynkin@pipe{0}{2}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{3}{2}{east}{below}{above}% + \dynkinPlaceRootRelativeTo*{4}{3}{east}{below}{above}% \dynkinEdge*{SingleEdge}{3}{4}% \dynkinEdge*{DoubleEdge}{3}{2}% }% |