diff options
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/pgf/contrib/dynkin-diagrams/README | 4 | ||||
-rw-r--r-- | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib | 15 | ||||
-rw-r--r-- | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf | bin | 842401 -> 891080 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty | 120 | ||||
-rw-r--r-- | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex | 333 |
5 files changed, 346 insertions, 126 deletions
diff --git a/graphics/pgf/contrib/dynkin-diagrams/README b/graphics/pgf/contrib/dynkin-diagrams/README index 8c3a097ae4..4ff5cb21d4 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/README +++ b/graphics/pgf/contrib/dynkin-diagrams/README @@ -1,6 +1,6 @@ Dynkin diagrams -v3.1415926535897932 -04 April 2021 +v3.14159265358979323 +18 May 2023 Authors: Ben McKay diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib index 949fd7f918..9660120699 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib @@ -218,6 +218,21 @@ Url = {https://doi.org/10.1090/gsm/034} } +@book {Humphreys:1978, + AUTHOR = {Humphreys, James E.}, + TITLE = {Introduction to {L}ie algebras and representation theory}, + SERIES = {Graduate Texts in Mathematics}, + VOLUME = {9}, + NOTE = {Second printing, revised}, + PUBLISHER = {Springer-Verlag, New York-Berlin}, + YEAR = {1978}, + PAGES = {xii+171}, + ISBN = {0-387-90053-5}, + MRCLASS = {17Bxx}, + MRNUMBER = {499562}, +MRREVIEWER = {I. P. Shestakov}, +} + @Book{Humphreys:1990, Title = {Reflection groups and {C}oxeter groups}, Author = {Humphreys, James E.}, diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf Binary files differindex d5748302d2..66db61382a 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty index baebba3f35..6173132ee6 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty @@ -1,6 +1,6 @@ % The Dynkin Diagrams package. % -% Version 3.141 592 653 589 793 2 +% Version 3.141 592 653 589 793 23 % % This package draws Dynkin diagrams in LaTeX % documents, using the TikZ package. @@ -13,7 +13,7 @@ % Released under the LaTeX Project Public License v1.3c or later, see % http://www.latex-project.org/lppl.txt \NeedsTeXFormat{LaTeX2e}[1994/06/01] -\ProvidesPackage{dynkin-diagrams}[2021/04/04 Dynkin diagrams] +\ProvidesPackage{dynkin-diagrams}[2023/05/18 Dynkin diagrams] \RequirePackage{tikz} \RequirePackage{xstring} \RequirePackage{xparse} @@ -535,18 +535,30 @@ %% \dynkinEdgeLabel{<n1>}{<n2>}{<s>} %% Prints <s> between root <n1> and <n2> on the current Dynkin diagram in the current root ordering. -\NewDocumentCommand\dynkinEdgeLabel{mmm}% +\NewDocumentCommand\dynkinEdgeLabel{smmm}% {% - \convertRootPair{#1}{#2}% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style,/Dynkin diagram/edge label]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=#3}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@dynkin@from@root)+.5*(\dynkin@root@name \the\@dynkin@to@root)$) - {}; + \convertRootPair{#2}{#3}% + \IfBooleanTF{#1}% + {% + \draw[draw=none] + (\dynkin@root@name \the\@dynkin@from@root) to + node[auto,% + swap,% + inner sep=\dynkin@root@radius,% + /Dynkin diagram/text style,% + /Dynkin diagram/edge label] + {\(\pgfkeys{/Dynkin diagram/label macro*=#4}\)}% + (\dynkin@root@name \the\@dynkin@to@root);% + }% + {% + \draw[draw=none] (\dynkin@root@name \the\@dynkin@from@root) to + node[auto,% + inner sep=\dynkin@root@radius,% + /Dynkin diagram/text style,% + /Dynkin diagram/edge label] + {\(\pgfkeys{/Dynkin diagram/label macro*=#4}\)}% + (\dynkin@root@name \the\@dynkin@to@root);% + }% }% @@ -2141,7 +2153,11 @@ }, double-fold-right/.forward to=/Dynkin diagram/double fold right/.style, doublefoldright/.forward to=/Dynkin diagram/double fold right/.style, - edge label/.style={text height=0,text depth=0,label distance=-4pt}, + edge label/.style={ + text height=1.5ex, + text depth=.25ex, + label distance=4pt + }, edgelabel/.forward to=/Dynkin diagram/edge label/.style, edge length/.estore in = \dynkin@edge@length, edge-length/.forward to=/Dynkin diagram/edge length, @@ -2291,6 +2307,10 @@ root-radius/.forward to=/Dynkin diagram/root radius, rootradius/.forward to=/Dynkin diagram/root radius, root radius=.05cm, + separator length/.estore in = \dynkin@separator@length, + separator-length/.forward to=/Dynkin diagram/separator length, + separatorlength/.forward to=/Dynkin diagram/separator length, + separator length = .35cm, text style/.style={#1}, text style/.default={black,scale=.7}, text-style/.forward to=text style/.style, @@ -2647,8 +2667,9 @@ \newif\ifdynkin@is@indefinite@edge% \NewDocumentCommand\dynkin@typeout@indefinite@edge@list{}% {% - \renewcommand*{\do}[1]{\typeout{##1}}% - \typeout{Indefinite edges: [}\dolistloop{\dynkin@indefinite@edge@list}\typeout{]}% +\providecommand\do{}% +\renewcommand*{\do}[1]{\typeout{##1}}% +\typeout{Indefinite edges: [}\dolistloop{\dynkin@indefinite@edge@list}\typeout{]}% }% @@ -2673,8 +2694,9 @@ \global\dynkin@second@root@no=\@dynkin@from@root\relax% \fi% \global\dynkin@is@indefinite@edgefalse\relax% - \renewcommand*{\do}[1]{% - \IfStrEq{##1}{\the\dynkin@first@root@no,\the\dynkin@second@root@no}% +\providecommand\do{}% +\renewcommand*{\do}[1]{% +\IfStrEq{##1}{\the\dynkin@first@root@no,\the\dynkin@second@root@no}% {\global\dynkin@is@indefinite@edgetrue\listbreak}% {}}% \dolistloop{\dynkin@indefinite@edge@list}% @@ -4258,6 +4280,12 @@ \fi \dynkin@pipe{\the\dynkin@afterfold}% {#2}{west}{below}{above right} + \ifodd\dynkin@nrts% + \dynkinMoveToRoot{\the\dynkin@hpo}% + \else% + \dynkinMoveToRoot{\the\dynkin@h}% + \dynkinSouthEastFold{}% + \fi% \ifdynkin@arrows% \dynkin@countdown=#2\relax% \foreach \dynkin@b in {#1,...,\the\dynkin@h}% @@ -4703,6 +4731,11 @@ \Ddynkin@roots% \Ddynkin@edges% \fi% + \dynkinMoveToRoot{\the\dynkin@rank@minus@two}% + \ifnum\dynkin@ply>1\relax% + \dynkinMoveToRoot{\the\dynkin@rank@minus@two}% + \dynkinEast% + \fi% \else% \gdef\dynkin@series{A}% \Adynkin% @@ -4781,6 +4814,7 @@ \fi% \fi% \fi% + \dynkinMoveToRoot{\the\dynkin@rank}% }% %% \Edynkin@unfolded %% Draws an E series Dynkin diagram not folded. @@ -5032,6 +5066,7 @@ \dynkinRootMark*{}{0}% \fi% \fi% + \dynkinMoveToRoot{\the\dynkin@rank}% }% \NewDocumentCommand\extendedBthreePly{}% @@ -5633,4 +5668,53 @@ drawing code = { defaults = { length = 1.25*\dynkin@root@radius } } + +%% Here are the changes I made in May 2023 to accommodate Dynkin diagrams of products of Lie algebras: + +\newcommand{\dynkinSkip} +{ +\node (current) at ($(Dynkin current)+(\dynkin@separator@length,0)$) {}; +} +\NewDocumentCommand\next@dynkin{O{}mO{0}m}% +{% +\dynkinSkip +\dynkin[at=(current),#1]{#2}[#3]{#4} +}% +\newcount\dynkin@diagram@list@item@number +\providecommand\do@dynkin@diagram@list@item{} +\renewcommand*{\do@dynkin@diagram@list@item}[1]{ + \ifnum\dynkin@diagram@list@item@number<2\relax% + {\dynkin #1}% + \else% + {\next@dynkin #1}% + \fi% + \advance\dynkin@diagram@list@item@number by 1\relax% +} +\DeclareListParser*{\for@dynkin@diagram@list}{|}% +\NewDocumentCommand\dynkin@diagram@reducible{m}% +{% +\dynkin@diagram@list@item@number1\relax% +\for@dynkin@diagram@list{\do@dynkin@diagram@list@item}{#1}% +}% +\NewDocumentEnvironment{DynkinDiagrams}{m}% +{% +\dynkin@save{}% +\begin{tikzpicture} +\dynkin@diagram@reducible{#1}% +}% +{% +\end{tikzpicture}% +\dynkin@restore{}% +}% +\NewDocumentCommand\dynkins{m}% +{% +%\dynkin@save{}% +\ifdefined\filldraw\relax% +\dynkin@diagram@reducible{#1}% +\else% +\tikz[anchor=base]{\dynkin@diagram@reducible{#1}}% +\fi% +%\dynkin@restore{}% +}% + \endinput diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex index 1cc6083977..8e4901234e 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex @@ -1,7 +1,7 @@ \documentclass{amsart} \title[The Dynkin diagrams package]% {The Dynkin diagrams package \\ -Version 3.141\,592\,653\,589\,793\,2} +Version 3.141\,592\,653\,589\,793\,23} %% My name: \makeatletter \DeclareRobustCommand{\scotsMc}{\scotsMcx{c}} @@ -20,7 +20,7 @@ Version 3.141\,592\,653\,589\,793\,2} \author{Ben \scotsMc{}Kay} \address{School of Mathematical Sciences, University College Cork, Cork, Ireland} \email{b.mckay@ucc.ie} -\date{4 April 2021} +\date{18 May 2023} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenx} \usepackage{etoolbox} @@ -33,6 +33,7 @@ Version 3.141\,592\,653\,589\,793\,2} \usepackage{array} \usepackage{xstring} \usepackage{longtable} +\usepackage[dvipsnames,table]{xcolor} \usepackage[listings]{tcolorbox} \tcbuselibrary{breakable} \tcbuselibrary{skins} @@ -230,6 +231,7 @@ The Dynkin diagram of \(B_3\) is \newpage \renewcommand\do[1]{\dyn#1} +\renewcommand{\wdtA}{3cm} \begin{dynkinTable}{The Dynkin diagrams of the reduced simple root systems \cite{Bourbaki:2002} pp. 265--290, plates I--IX}{2.25cm}{2.5cm} \docsvlist{A{},B{},C{},D{},E6,E7,E8,F4,G2} \end{dynkinTable} @@ -264,13 +266,48 @@ You can also pass options to the package in \verb!\usepackage!. \end{Verbatim} \end{tcolorbox} - - +\section{Disconnected Dynkin diagrams} +Disconnected Dynkin diagrams that represent a product of simple Lie groups (or a sum of Lie algebras, or a product of Coxeter systems, \dots) have a different syntax (to ensure back compatibility): +\begin{tcblisting}{title={Command}} +The Dynkin diagram of \(B_3 \times A_2\) is \dynkins{B3|A2}. +\end{tcblisting} +\begin{tcblisting}{title={Environment}} +The Dynkin diagram of \(B_3 \times A_2\) is +\begin{DynkinDiagrams}{B3|A2}\end{DynkinDiagrams} +\end{tcblisting} +Each factor can have its own options. +\begin{tcblisting}{title={Environment}} +The Dynkin diagram of \(B_3 \times A_2\) is +\[ +\begin{DynkinDiagrams}{[name=Bob]B3|[name=Alice]A2} +\draw[very thick,blue] (Bob root 1) + to [out=-45, in=-135] (Alice root 2); +\end{DynkinDiagrams} +\] +\end{tcblisting} +They are spaced out by the length of one edge between successive diagrams; change this with \texttt{separator length}. +\begin{longtable}{@{}>{\columncolor[gray]{.9}$}m{1.5cm}<{$}% +@{}>{\columncolor[gray]{.9}$}m{1cm}<{$}% +@{}>{\columncolor[gray]{.9}$}m{3cm}<{$}} +\caption{The Dynkin diagrams of the rank $2$ root systems}\\ +\endfirsthead +\caption{\dots continued}\\ +\endhead +\multicolumn{2}{c}{continued \dots}\\ +\endfoot +\endlastfoot +A_1\times A_1&\dynkins{A1|A1}&\texttt{\detokenize{\dynkins}\{A1|A1\}}\\ +A_2&\dynkins{A2}&\texttt{\detokenize{\dynkins}\{A2\}}\\ +B_2&\dynkins{B2}&\texttt{\detokenize{\dynkins}\{B2\}}\\ +C_2&\dynkins{C2}&\texttt{\detokenize{\dynkins}\{C2\}}\\ +D_2&\dynkins{D2}&\texttt{\detokenize{\dynkins}\{D2\}}\\ +G_2&\dynkins{G2}&\texttt{\detokenize{\dynkins}\{G2\}}\\ +\end{longtable} \section{Coxeter diagrams} \begin{tcblisting}{title={Coxeter diagram option}} -\dynkin[Coxeter]{F}{4} +\dynkin[Coxeter]F4 \end{tcblisting} \begin{tcblisting}{title={gonality option for \(G_2\) and \(I_n\) Coxeter diagrams}} @@ -310,15 +347,14 @@ E{I},E{II},E{III},E{IV},E{V},E{VI},E{VII},E{VIII},E{IX},F{I},F{II},GI} \section{How to fold} \begin{tcblisting}{title={If you don't like the solid gray ``folding bar'', most people use arrows. Here is \(E_{II}\)}} -\dynkin[% - edge length=.75cm, - labels*={1,...,6}, - involutions={16;35}]E6 +\dynkin[edge length=.75cm, + labels*={1,...,6}, + involutions={16;35}]E6 \end{tcblisting} \begin{tcblisting}{title={The double arrows for \(A_{IIIa}\) are big}} \dynkin[edge length=.75cm, - involutions={1{10};29;38;47;56}]{A}{oo.o**.**o.oo} + involutions={1{10};29;38;47;56}]{A}{oo.o**.**o.oo} \end{tcblisting} \newpage @@ -335,18 +371,16 @@ E{I},E{II},E{III},E{IV},E{V},E{VI},E{VII},E{VIII},E{IX},F{I},F{II},GI} \end{tcblisting} \begin{tcblisting}{title={Style options}} -\dynkin[% - edge length=.75cm, - involution/.style={blue!50,stealth-stealth,thick}, - involutions={1{10};29;38;47;56} - ]{A}{oo.o**.**o.oo} +\dynkin[edge length=.75cm, + involution/.style={blue!50,stealth-stealth,thick}, + involutions={1{10};29;38;47;56} + ]{A}{oo.o**.**o.oo} \end{tcblisting} \begin{tcblisting}{title={Arrow angles}} -\dynkin[% - edge length=.75cm, - involutions={[in=-120,out=-60,relative]1{10};29;38;47;56} - ]{A}{oo.o**.**o.oo} +\dynkin[edge length=.75cm, + involutions={[in=-120,out=-60,relative]1{10};29;38;47;56} + ]{A}{oo.o**.**o.oo} \end{tcblisting} \begin{tcblisting}{title={Arrow angles}} @@ -382,11 +416,10 @@ segment length=1mm,amplitude=.6mm}}} \begin{tcblisting}{title={Make a list of labels for the roots. Optionally, you can add label directions to say where to put each label relative to its root.}} -\dynkin[% - labels={m\cosh\theta,1,2,3,,n-2,n-1,n,n+1}, - label directions={,,left,,,,right,,}, - scale=1.8, - extended] D{*ooo...oooo} +\dynkin[labels={m\cosh\theta,1,2,3,,n-2,n-1,n,n+1}, + label directions={,,left,,,,right,,}, + scale=1.8, + extended] D{*ooo...oooo} \end{tcblisting} \begin{tcblisting}{title={Make a macro to assign labels to roots}} \dynkin[label,label macro/.code={\alpha_{\drlap{#1}}},edge length=.75cm]D5 @@ -422,38 +455,37 @@ Optionally, you can add label directions to say where to put each label relative \newpage \begin{tcblisting}{title={Labelling several roots and alternates}} -\dynkin[% -label macro/.code={\alpha_{\drlap{#1}}}, -label macro*/.code={\gamma_{\drlap{#1}}}, -labels={,2,...,5,,7}, -labels*={1,3,4,5,6}]A7 +\dynkin[label macro/.code={\alpha_{\drlap{#1}}}, + label macro*/.code={\gamma_{\drlap{#1}}}, + labels={,2,...,5,,7}, + labels*={1,3,4,5,6}]A7 \end{tcblisting} \section{Label subscripts} Note the slight improvement that \verb!\drlap! makes: the labels are centered on the middle of the letter \(\alpha\), ignoring the space taken up by the subscripts, using the \verb!mathtools! command \verb!\mathrlap!, but only for labels which are \emph{not} placed to the left or right of a root. \begin{tcblisting}{title={Label subscript spacing}} \dynkin[label,label macro/.code={\alpha_{#1}}, - edge length=.75cm]D{15} + edge length=.75cm]D{15} \par\noindent{}% \dynkin[label,label macro/.code={\alpha_{\drlap{#1}}}, - edge length=.75cm]D{15} + edge length=.75cm]D{15} \end{tcblisting} \newpage \begin{tcblisting}{title={Label subscript spacing}} \dynkin[label,label macro/.code={\alpha_{#1}}, - edge length=.75cm]E8 + edge length=.75cm]E8 \dynkin[label,label macro/.code={\alpha_{#1}},backwards, - edge length=.75cm]E8 + edge length=.75cm]E8 \par\noindent{}% \dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}}, - edge length=.75cm]E8 + edge length=.75cm]E8 \dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}},backwards, - edge length=.75cm]E8 + edge length=.75cm]E8 \par\noindent{}% \dynkin[label,label macro/.code={\alpha_{\drlap{#1}}}, - edge length=.75cm]E8 + edge length=.75cm]E8 \dynkin[label,label macro/.code={\alpha_{\drlap{#1}}},backwards, - edge length=.75cm]E8 + edge length=.75cm]E8 \end{tcblisting} \newpage @@ -463,13 +495,12 @@ To change these, set \verb!label height! and \verb!label depth!: \begin{tcblisting}{title={Change height and depth of characters}} \dynkin[labels={a,b,c,d},label height=d,label depth=d]F4 \dynkin[labels*={a,b,c,d},label height=d,label depth=d]F4 -\dynkin[% -label macro/.code={\alpha_{\drlap{#1}}}, -label macro*/.code={\gamma_{\drlap{#1}}}, -label height=$\alpha_1$, -label depth=$\alpha_1$, -labels={,2,...,5,,7}, -labels*={1,3,4,5,6}]A7 +\dynkin[label macro/.code={\alpha_{\drlap{#1}}}, + label macro*/.code={\gamma_{\drlap{#1}}}, + label height=$\alpha_1$, + label depth=$\alpha_1$, + labels={,2,...,5,,7}, + labels*={1,3,4,5,6}]A7 \dynkin[labels={A,B,C,D},label height=$A$,label depth=$A$]F4 \dynkin[labels={a^1,b^2,c^3,d^4},label height=$X^X$]F4 \end{tcblisting} @@ -477,9 +508,9 @@ labels*={1,3,4,5,6}]A7 \section{Text style for the labels} \begin{tcblisting}{title={Use a text style: big and blue}} \begin{dynkinDiagram}[text style/.style={scale=1.2,blue}, -edge length=1cm, -labels={1,2,n-1,n}, -label macro/.code={\alpha_{\drlap{#1}}} + edge length=1cm, + labels={1,2,n-1,n}, + label macro/.code={\alpha_{\drlap{#1}}} ]A{} \end{dynkinDiagram} \end{tcblisting} @@ -488,9 +519,9 @@ label macro/.code={\alpha_{\drlap{#1}}} \begin{tcblisting}{title={Use a text style; font selection is in the label macro}} \begin{dynkinDiagram}[text style/.style={scale=1.2,blue}, -edge length=1cm, -labels={1,2,n-1,n}, -label macro/.code={\mathbb{A}_{\drlap{#1}}}]A{} + edge length=1cm, + labels={1,2,n-1,n}, + label macro/.code={\mathbb{A}_{\drlap{#1}}}]A{} \end{dynkinDiagram} \end{tcblisting} @@ -499,27 +530,29 @@ label macro/.code={\mathbb{A}_{\drlap{#1}}}]A{} \section{Bracing roots} \begin{tcblisting}{title={Bracing roots}} \begin{dynkinDiagram}A{*.*x*.*} -\dynkinBrace[p]12 -\dynkinBrace[q]45 + \dynkinBrace[p]12 + \dynkinBrace[q]45 \end{dynkinDiagram} \end{tcblisting} \begin{tcblisting}{title={Bracing roots, and a starred form}} \begin{dynkinDiagram}A{10} -\dynkinBrace[\text{Roots 2 to 9}]29 -\dynkinBrace*[\text{Roots 3 to 8}]38 + \dynkinBrace[\text{Roots 2 to 9}]29 + \dynkinBrace*[\text{Roots 3 to 8}]38 \end{dynkinDiagram} \end{tcblisting} \newpage \begin{tcblisting}{title={Bracing roots}} -\newcommand\circleRoot[1]{\draw (root #1) circle (3pt);} +\newcommand\circleRoot[1]{ +\draw[fill=white] (root #1) circle (3pt); +\fill[black] (root #1) circle (1.5pt);} \begin{dynkinDiagram}A{**.***.***.***.***.**} -\circleRoot 4\circleRoot 7\circleRoot 10\circleRoot 13 -\dynkinBrace[y-1]13 -\dynkinBrace[z-1]56 -\dynkinBrace[t-1]{11}{12} -\dynkinBrace[x-1]{14}{16} + \foreach\r in {4,7,10,13} {\circleRoot \r} + \dynkinBrace[y-1]13 + \dynkinBrace[z-1]56 + \dynkinBrace[t-1]{11}{12} + \dynkinBrace[x-1]{14}{16} \end{dynkinDiagram} \end{tcblisting} @@ -540,11 +573,10 @@ If you don't want to fold, you might prefer instead to put the \(6\) on the righ \noindent{}The default locations are overridden by the \verb!label directions!. For extended diagrams, this list starts at \(0\)-offset. \begin{tcblisting}{} -\dynkin[% - label, - label directions={above,,,,,,}, - involutions={[out=-60,in=-120,relative]16;60;01} - ]E[1]{6} +\dynkin[label, + label directions={above,,,,,,}, + involutions={[out=-60,in=-120,relative]16;60;01} + ]E[1]{6} \end{tcblisting} @@ -552,30 +584,22 @@ For extended diagrams, this list starts at \(0\)-offset. \tikzset{/Dynkin diagram,ordering=Dynkin,label macro/.code={\alpha_{\drlap{#1}}}} \newcounter{EPNo} \setcounter{EPNo}{0} -\NewDocumentCommand\EP{smmmm}% -{% - \stepcounter{EPNo}\roman{EPNo}. &% - \def\eL{.6cm}% - \IfStrEqCase{#2}% - {% - D{% - \gdef\eL{1cm}% - \tikzset{/Dynkin diagram/label directions={,,,right,,}}% - }% - E{\gdef\eL{.75cm}}% - F{\gdef\eL{.35cm}}% - G{\gdef\eL{.35cm}}% - }% - \IfBooleanTF{#1}% - {% +\NewDocumentCommand\EP{smmmm}{ + \stepcounter{EPNo}\roman{EPNo}. & + \def\eL{.6cm} + \IfStrEqCase{#2}{ + D{ + \gdef\eL{1cm} + \tikzset{/Dynkin diagram/label directions={,,,right,,}}} + E{\gdef\eL{.75cm}} + F{\gdef\eL{.35cm}} + G{\gdef\eL{.35cm}}} + \IfBooleanTF{#1}{ \dynkin[edge length=\eL,backwards,labels*={#4},labels={#5}]{#2}{#3} - }% - {% - \dynkin[edge length=\eL,labels*={#4},labels={#5}]{#2}{#3} - }% - \tikzset{/Dynkin diagram/label directions={}}% - \\% -}% + }{ + \dynkin[edge length=\eL,labels*={#4},labels={#5}]{#2}{#3}} + \tikzset{/Dynkin diagram/label directions={}} + \\} \renewcommand*\do[1]{\EP#1}% \begin{longtable}{MM} \caption{Dynkin diagrams from Euler products \cite{Langlands:1967}}\\ @@ -617,8 +641,7 @@ For extended diagrams, this list starts at \(0\)-offset. *E8{1,1,1,1,1,1,1,1}{,7,5,4,3,2,1,6}, *E7{1,1,1,1,1,1,1}{5,...,1,,6}, *E7{1,1,1,1,1,1,1}{1,...,5,,6}, - *E8{1,1,1,1,1,1,1,1}{6,...,1,,7}% - } + *E8{1,1,1,1,1,1,1,1}{6,...,1,,7}} \end{longtable} \end{filecontents*} {\input{EulerProducts}}\VerbatimInput{EulerProducts.tex} @@ -636,11 +659,13 @@ For extended diagrams, this list starts at \(0\)-offset. \begingroup \tikzset{/Dynkin diagram,edge length=1cm,root radius=1mm,edge/.style=thick} \begin{tcblisting}{title={Popular arrow shapes. These mess with nonwhite backgrounds, but are prettier than the default shape.}} +\begin{tcolorbox}[colback=white,colframe=white] \begin{tabular}{rcc} default&\dynkin G2 &\dynkin F4\\ Bourbaki&\dynkin[Bourbaki arrow]G2&\dynkin[Bourbaki arrow]F4\\ bird&\dynkin[bird arrow]G2 &\dynkin[bird arrow]F4 \end{tabular} +\end{tcolorbox} \end{tcblisting} \endgroup Use \verb!\tikzset{/Dynkin diagram,Bourbaki arrow}! to force all arrows to have Bourbaki style throughout your document. @@ -1030,12 +1055,10 @@ The extended Dynkin diagrams are also described in the notation of Kac \cite{Kac \end{dynkinTable} \newpage \begin{tcblisting}{title={Directed edges}} -\dynkin[% - edge length=.75cm, - edge/.style={-{stealth[sep=2pt]}}, - labels={,1,2,\ell-1,\ell}, - labels*={0}] -A[1]{} +\dynkin[edge length=.75cm, + edge/.style={-{stealth[sep=2pt]}}, + labels={,1,2,\ell-1,\ell}, + labels*={0}]A[1]{} \end{tcblisting} \section{Affine twisted and untwisted Dynkin diagrams} @@ -1146,16 +1169,15 @@ The \(D^{(1)}_{\ell}\) diagrams can be folded on their left end and separately o \newpage We have to be careful about the 4-ply foldings of \(D^{(1)}_{2\ell}\), for which we can have two different patterns, so by default, the package only draws as much as it can without distinguishing the two: \begin{tcblisting}{title={Default \(D^{(1)}_{2\ell}\) and the two ways to finish it}} - \dynkin[ply=4]D[1]{****.*****.*****}% - \ -\begin{dynkinDiagram}[ply=4]{D}[1]{****.*****.*****}% - \dynkinFold[bend right=90]1{13}% - \dynkinFold[bend right=90]0{14}% +\dynkin[ply=4]D[1]{****.*****.*****} \ +\begin{dynkinDiagram}[ply=4]{D}[1]{****.*****.*****} + \dynkinFold[bend right=90]1{13} + \dynkinFold[bend right=90]0{14} \end{dynkinDiagram} \ -\begin{dynkinDiagram}[ply=4]{D}[1]{****.*****.*****}% - \dynkinFold01% - \dynkinFold1{13}% - \dynkinFold{13}{14}% +\begin{dynkinDiagram}[ply=4]{D}[1]{****.*****.*****} + \dynkinFold01 + \dynkinFold1{13} + \dynkinFold{13}{14} \end{dynkinDiagram} \end{tcblisting} \begingroup @@ -1320,6 +1342,46 @@ We can then connect the two with folding edges: \end{pgfonlayer} \end{dynkinDiagram} \end{tcblisting} +\begin{tcblisting}{title={The nonsplit Freudenthal--Tits magic square}} +\newcommand\clrK{\rowcolor{BurntOrange!80}} +\newcommand\clrL{\rowcolor{SeaGreen}} +\newcommand\clrH{\rowcolor{RoyalBlue!50}} +\newcommand\clrO{\rowcolor{OrangeRed!70}} +\newcommand\clrOO{\cellcolor{Red}} +\NewDocumentCommand\hd{om}{ +\cellcolor{gray!30}$\IfNoValueF{#1}{\mathbb{#1}\setminus}\mathbb{#2}$} +\tikzset{/Dynkin diagram/fold style/.style={blue!22,ultra thick}} +\begin{tcolorbox}[colback=white,colframe=white] +\begin{tabular}{|c|c|c|c|c|}\hline +\hd[A]{B}&\hd{K}&\hd{L}&\hd{H}&\hd{O}\\ \hline +\clrK\hd{K}& \dynkin A1 & \dynkin A{*o} & \dynkin C{o*o} & \dynkin F{*ooo} \\ \hline +\clrL\hd{L}& \dynkin A{**} & +\begin{dynkinDiagram}[name=upper]A2 +\node (current) at ($(upper root 1)+(0,-.35cm)$) {}; +\dynkin[at=(current),name=lower]A2 +\begin{pgfonlayer}{Dynkin behind} +\foreach \i in {1,2}{% +\draw[/Dynkin diagram/fold style] ($(upper root \i)$) -- ($(lower root \i)$);} +\end{pgfonlayer} +\end{dynkinDiagram}& +\dynkin A{*ooo*} & +\dynkin E{*oooo*} \\ \hline +\clrH\hd{H} & +\dynkin C{***} & +\dynkin[fold] A{*****} & +\dynkin D{*oo*o*} & +\dynkin E{*oooo**}\\ \hline +\clrO\hd{O} & +\dynkin F{****} & +\dynkin[o/.style = { + solid, + draw=black, + fill=black}] E{II} & +\dynkin[backwards] E{*o**oo*o} & +\clrOO \dynkin E{*oooo***}\\ \hline +\end{tabular} +\end{tcolorbox} +\end{tcblisting} \newpage The following diagrams arise in the Satake diagrams of the pseudo-Riemannian symmetric spaces \cite{Baba:2009}. \begin{tcblisting}{} @@ -1635,7 +1697,6 @@ Below we draw the Vogan diagrams of some affine Lie superalgebras \cite{Ransingh \end{tcblisting} \end{Category} \endgroup -\tikzset{/Dynkin diagram,label macro/.code={},label=false} \section{Example: the complex simple Lie algebras} \begin{filecontents*}{simple-lie-algebras.tex} @@ -1751,6 +1812,7 @@ G_2& \end{longtable} \end{filecontents*} \begingroup +\tikzset{/Dynkin diagram,label macro/.code={},label=false,root radius=.04cm} \input{simple-lie-algebras.tex} \endgroup \VerbatimInput{simple-lie-algebras.tex} @@ -1788,6 +1850,63 @@ G_2& \endgroup \VerbatimInput{borovoi.tex} +There are many undocumented features, which are not usually very useful; here is a taste, from \cite{Humphreys:1978} p. 61. + +\begin{filecontents*}{humphreys.tex} +\begin{center} +\makeatletter +\newcommand{\extraNode}[6]% +{% +\dynkinPlaceRootRelativeTo{#1}{#2}{#3}{#4}{#5} +\dynkinDefiniteSingleEdge{#1}{#2} +\dynkinRootMark{o}{#1} +\advance\dynkin@nodes by 1 +\dynkinLabelRoot{#1}{#6} +}% +\newcommand{\extraDotNode}[6]% +{% +\dynkinPlaceRootRelativeTo{#1}{#2}{#3}{#4}{#5} +\dynkinIndefiniteSingleEdge{#1}{#2} +\dynkinRootMark{o}{#1} +\advance\dynkin@nodes by 1 +\dynkinLabelRoot{#1}{#6} +}% +\makeatother +\tikzset{/Dynkin diagram,mark=o,edge length=.5cm} +\begin{tabular}{>{\columncolor[gray]{.9}}c} +\dynkin A{} +\\ \midrule +\begin{dynkinDiagram}A{ooo.o} +\dynkinLabelRoot{1}{\varepsilon_1} +\dynkinLabelRoot{2}{\varepsilon_2} +\dynkinLabelRoot{3}{\varepsilon_3} +\dynkinLabelRoot{4}{\varepsilon_p} +\dynkin[at=(root 4),arrows=false]B2 +\dynkin[at=(root 2),labels={\eta_q,\eta_{q-1},\eta_2,\eta_1}]A{oo.oo} +\end{dynkinDiagram} +\\ \midrule +\dynkin[arrows=false] G{2} +\\ \midrule +\begin{dynkinDiagram}[% +labels={\varepsilon_{p-1},\psi,\zeta_{r-1},\eta_{q-1}}, +mark=o,edge length=.75cm]D4 +\extraDotNode{5}{3}{northeast}{right}{left}{\zeta_2} +\extraDotNode{6}{4}{southeast}{right}{left}{\eta_2} +\extraDotNode{7}{1}{west}{below}{above}{\varepsilon_2} +\extraNode{8}{5}{northeast}{right}{left}{\zeta_1} +\extraNode{9}{6}{southeast}{right}{left}{\eta_1} +\extraNode{10}{7}{west}{below}{above}{\varepsilon_1} +\end{dynkinDiagram} +\end{tabular} +\end{center} +\end{filecontents*} +\begingroup +\tikzset{/Dynkin diagram,label=false,label*=false} +\input{humphreys.tex} +\endgroup +\VerbatimInput[commentchar=!]{humphreys.tex} + + \section{Syntax} The syntax is \verb!\dynkin[<options>]{<letter>}[<twisted rank>]{<rank>}! where \verb!<letter>! is \verb!A!, \verb!B!, \verb!C!, \verb!D!, \verb!E!, \verb!F! or \verb!G!, the family of root system for the Dynkin diagram, \verb!<twisted rank>! is \verb!0!, \verb!1!, \verb!2!, \verb!3! (default is \verb!0!) representing: \[ @@ -1946,6 +2065,8 @@ is computed as \(n=\sum 2^{i-1} a_i\), \(a_i=0\) or \(1\), to say that root \(i\ & whether to reverse the direction of the arrows that arise along the edges\\ \optionLabel{root radius}{\typ{number}cm}{.05cm} & size of the dots and of the crosses in the Dynkin diagram \\ +\optionLabel{separator length}{length}{.35cm} +& distance between successive components of a disconnected Dynkin diagram \\ \optionLabel{text style}{\TikZstyle}{scale=.7} & Style for any labels on the roots\\ \optionLabel{upside down}{\truefalse}{false} |