texlive[71751] Master/texmf-dist: lie-hasse (9jul24)

commits+karl at tug.org commits+karl at tug.org
Tue Jul 9 22:04:21 CEST 2024


Revision: 71751
          https://tug.org/svn/texlive?view=revision&revision=71751
Author:   karl
Date:     2024-07-09 22:04:21 +0200 (Tue, 09 Jul 2024)
Log Message:
-----------
lie-hasse (9jul24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/lie-hasse/README
    trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
    trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex
    trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty

Modified: trunk/Master/texmf-dist/doc/latex/lie-hasse/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/README	2024-07-08 23:42:35 UTC (rev 71750)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/README	2024-07-09 20:04:21 UTC (rev 71751)
@@ -2,9 +2,9 @@
 
             Lie Hasse
                
-            v1.0
+            v1.01
 
-            3 February 2020
+            9 July 2024
 ___________________________________
 
 Authors   : Ben McKay

Modified: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex	2024-07-08 23:42:35 UTC (rev 71750)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex	2024-07-09 20:04:21 UTC (rev 71751)
@@ -1,5 +1,5 @@
 \documentclass{amsart}
-\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.0}
+\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.01}
 %% My name:
 \makeatletter
 \DeclareRobustCommand{\scotsMc}{\scotsMcx{c}}
@@ -19,8 +19,7 @@
 \author{\authorsname}
 \address{School of Mathematical Sciences,  University College Cork, Cork, Ireland}
 \email{b.mckay at ucc.ie}
-\date{3 February 2020}
-\usepackage{etex}
+\date{9 July 2024}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenx}
 \usepackage{etoolbox} 
@@ -87,7 +86,7 @@
 			root radius=.02cm,
 			edge length=.5cm,
 			edge quotes/.style={opacity=0}%
-			]{E}{8}%
+			]E8%
 	\end{tikzpicture}%
 \end{center}%
 \begin{center}
@@ -106,7 +105,7 @@
 \begin{document}
 The Hasse diagram of \(F_4\) is 
 \begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse F4
 \end{center}
 \end{document}
 \end{Verbatim}
@@ -113,19 +112,19 @@
 \end{tcolorbox}
 \par\noindent{}The Hasse diagram of \(F_4\) is 
 \begin{center}
-\hasse[edge length=1cm]{F}{4}
+\hasse[edge length=1cm]F4
 \end{center}
 Each edge is labelled with the simple root by which vertices differ.
 \begin{tcblisting}{title={Inside a \TikZ statement}}
-\(B_4\) has Dynkin diagram \tikz \dynkin[edge length=.35cm]{B}{4};, Hasse diagram
+\(B_4\) has Dynkin diagram \tikz \dynkin{B}{4};, Hasse diagram
 \begin{center}
-\hasse[edge length=1cm]{B}{4}
+\hasse[edge length=1cm]B4
 \end{center}
 \end{tcblisting}
 \begin{tcblisting}{title={Inside a Dynkin diagram environment, diagrams fit together}}
 The Hasse diagram of \(B_4\) is 
 \begin{dynkinDiagram}[vertical shift=0,edge length=1cm]{B}{4}
-\hasse{B}{4}
+\hasse[edge length=1cm]B4
 \end{dynkinDiagram}
 \end{tcblisting}
 We shut off the default vertical shift of the Dynkin diagram, so that it starts at the origin.
@@ -133,7 +132,7 @@
 \begin{tcblisting}{title={Attaching the Dynkin diagram}}
 The Hasse diagram of \(B_4\) is 
 \begin{center}
-\hasse[attach Dynkin diagram=true]{B}{4}
+\hasse[attach Dynkin diagram=true]B4
 \end{center}
 \end{tcblisting}
 Unfortunately, attaching a Dynkin diagram looks terrible for \(D\) or \(E\) series, so a Dynkin diagram appears below.
@@ -140,12 +139,12 @@
 \begin{tcblisting}{title={Attaching the Dynkin diagram}}
 The Hasse diagram of \(D_5\) is 
 \begin{center}
-\hasse[attach Dynkin diagram=true]{D}{5}
+\hasse[attach Dynkin diagram=true]D5
 \end{center}
 \end{tcblisting}
 \begin{tcblisting}{title={Inside a \TikZ environment}}
 \begin{tikzpicture}
-\hasse{A}{4}
+\hasse A4
 \draw (4;1) circle (5pt);
 \draw[red] (2;3) circle (5pt);
 \end{tikzpicture}
@@ -152,16 +151,7 @@
 \end{tcblisting}
 In this example, we see that the roots of the Hasse diagram are \TikZ{} nodes labelled \(g;i\) for grade \(g\) (i.e. \(g\) units up the page) and index \(i\) (i.e. \(i^{\text{th}}\) root of grade \(g\) drawn on the page, starting from the left). 
 
-\section{Inherited options}
-The Lie Hasse package inherits options from the Dynkin diagrams package: the edge lengths are set with 
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/edge lengths=1.2cm}
-\end{Verbatim}
-and similarly the ordering of roots with 
-\begin{Verbatim}
-\tikzset{/Dynkin diagram/ordering=Bourbaki}
-\end{Verbatim}
-
+\newpage
 \section{Prettier}
 The package includes a more elaborate \verb!\hasseDiagrams! command, taking a list of semicolon separated Dynkin diagram identfiers.
 \begin{tcolorbox}[title={With some global options to make prettier diagrams}]
@@ -198,13 +188,22 @@
 \endgroup
 Global options:
 \begin{verbatim}
- 	edge/.style={ultra thick},
-	edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+\tikzset{/Lie Hasse,
+    edge/.style={ultra thick},
+    edge quotes/.style={
+        /Dynkin diagram/text style,
+        auto,
+        inner sep=2pt},
 \end{verbatim}
 allow to change the edges, and to change the way that labels are printed, and how close labels are to the edges.
+To give even greater control, the user can define a command \verb!\edgeQuote! of one argument, which is applied to the label placed on every edge of the Hasse diagram.
+The default is 
+\begin{verbatim}
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{#1}}
+\end{verbatim}
+which ensures that every label, which is black text by default, has a slight white outline to make it easier to read against a coloured background.
 
 
-
 \section{Root order}
 We order the roots as in the Dynkin diagram package: with orderings Adams, Bourbaki, Carter, Dynkin and Kac.
 \emph{Warning:} the default is Carter, \emph{not} Bourbaki; the default in the Dynkin diagram package is Bourbaki.
@@ -222,6 +221,10 @@
 \hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6}
 \hasseDiagrams{[ordering=Kac]E6}
 \endgroup
+The Lie Hasse package inherits the ordering of roots from the Dynkin diagrams package, so we can set it with 
+\begin{Verbatim}
+\tikzset{/Dynkin diagram/ordering=Bourbaki}
+\end{Verbatim}
 
 \section{Graph height and width}
 The \emph{height} of a Hasse diagram is the number of grades.
@@ -238,7 +241,7 @@
 \end{Verbatim}
 to store the width of \(G_2\) at grade \(3\) in a counter called \verb!\w!.
 
-Once you use \verb!\dynkin{G}{2}! or \verb!\hasse{G}{2}! or the other commands, like 
+Once you use \verb!\dynkin G2! or \verb!\hasse G2! or the other commands, like 
 \begin{Verbatim}
 \rootSystemHeight[G][2]{\h}
 \end{Verbatim}
@@ -260,7 +263,8 @@
 \hasseDiagrams{G2}
 \end{Verbatim}
 \tikzset{/Lie Hasse diagram,show name=true,show height=true}
-\hasseDiagrams{G2}
+\hasse G2
+
 The \verb!show widths! option:
 \begin{Verbatim}
 \tikzset{/Lie Hasse diagram/show widths=true}
@@ -293,11 +297,11 @@
 Here is the same Dynkin diagram, except showing, at each simple root, the coefficient of that simple root in the highest root. 
 \begin{Verbatim}
 \rootSum[E][8]{29}{1}{\rs}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
 \end{Verbatim}
 \rootSum[E][8]{29}{1}{\rs}
 \begin{center}
-\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\dynkin[expand labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
 \end{center}
 
 The option \verb!for all roots! allows execution of code once on every root.
@@ -312,7 +316,7 @@
 		root radius=.05cm
 	},
 	for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}}
-\hasseDiagrams{D5}
+\hasse D5
 \end{Verbatim}
 \begingroup
 \tikzset{/Lie Hasse diagram,
@@ -341,7 +345,7 @@
 \end{Verbatim}
 \newcommand{\foo}[2]%
 {%
-	\node[below,scale=.75] at (#1;#2) {\(#1,#2\)};%
+	\node[below,scale=.5] at (#1;#2) {\(#1,#2\)};%
 }%
 Inside a \TikZ{} or \verb!dynkinDiagram! environment:
 \begin{Verbatim}
@@ -348,8 +352,8 @@
 \tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
 	/Dynkin diagram/edge length=1.5cm}
 \begin{tikzpicture}
-	\hasse{D}{6}%
-	\forAllPositiveRootsInHasseDiagram{\foo}%
+	\hasse D6%
+	\forAllPositiveRoots{\foo}%
 \end{tikzpicture}
 \end{Verbatim}
 \begingroup
@@ -356,8 +360,8 @@
 \tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
 	/Dynkin diagram/edge length=1.5cm}
 \begin{tikzpicture}
-	\hasse{D}{6}%
-	\forAllPositiveRootsInHasseDiagram{\foo}%
+	\hasse D6%
+	\forAllPositiveRoots{\foo}%
 \end{tikzpicture}
 
 If you put this into the \verb!for all roots! option, it executes on its own:
@@ -378,19 +382,19 @@
 Hence we don't need to see every edge perfectly.
 The three dimensional effect is the default: 
 \begin{Verbatim}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
 \end{Verbatim}
 \begin{center}
-\hasse{D}{4}\hasse{E}{6}
+\hasse D4\hasse E6
 \end{center}
 We can turn it off:
 \begin{Verbatim}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
 \end{Verbatim}
 \begin{center}
-\hasse[three D=false]{D}{4}
-\hasse[three D=false]{E}{6}
+\hasse[three D=false] D4
+\hasse[three D=false] E6
 \end{center}
 or globally with \verb!\tikzset{/Lie Hasse diagram/three D=false}!.
 
@@ -430,9 +434,9 @@
 \section{Label the simple roots}
 Ringel \cite{Ringel:2013} labels his edges like
 \begin{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
 \end{Verbatim}
-\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\hasse[labels={f,e,d,c,u,b,a}]E7
 
 \section{Parabolic subgroups}
 This package offers nothing over Ringel's original pictures, except that the user can pick some simple roots whose associated edges are drawn differently.
@@ -440,12 +444,13 @@
 We let the reader explore the notation for parabolic subgroups in the Dynkin diagrams package, and use this to declare various roots compact.
 \begin{Verbatim}
 \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
 \end{Verbatim}
 \begingroup
 \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
-\hasseDiagrams{D{**x*x*x*}}
+\hasse D{**x*x*x*}
 \endgroup
+
 Our motivation comes from trying to identify the invariant vector subbundles of the tangent bundle of a rational homogeneous variety \cite{MathOverflow:123801}.
 Such diagrams are often unreadable if we don't turn off the three dimensional graphics.
 By default, noncompact root edges are not drawn.
@@ -452,35 +457,35 @@
 \begingroup
 \tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=false,three D=false}
 \begin{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
 \end{Verbatim}
-\hasseDiagrams{E{*xx*x*}}
+\hasse E{*xx*x*}
 \begin{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
 \end{Verbatim}
-\hasseDiagrams{A{x*x*}}
+\hasse A{x*x*}
 \begin{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
 \end{Verbatim}
-\hasseDiagrams{[parabolic=113]B8}
+\hasse[parabolic=113]B8
 \begin{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
 \end{Verbatim}
-\hasseDiagrams{C{**xx*x**}}
+\hasse C{**xx*x**}
 \newpage
 \begin{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
 \end{Verbatim}
-\hasseDiagrams{E{*x*x*x**}}
+\hasse E{*x*x*x**}
 \newpage
 \begin{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
 \end{Verbatim}
-\hasseDiagrams{F{**xx}}
+\hasse F{**xx}
 \begin{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
 \end{Verbatim}
-\hasseDiagrams{G{*x}}
+\hasse G{*x}
 \endgroup
 
 \section{Examples}

Modified: trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty	2024-07-08 23:42:35 UTC (rev 71750)
+++ trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty	2024-07-09 20:04:21 UTC (rev 71751)
@@ -1,24 +1,20 @@
-%                                 The Lie Hasse package.
+%	The Lie Hasse package.
+%	Version 1.01
 %
-%                                            Version 1.0
 %
+%	This package draws Hasse diagrams of root system posets of simple 
+%	Lie algebraS, in LaTeX documents, using the TikZ package.
 %
-% This package draws Hasse diagrams of root system posets of simple 
-% Lie algebraS, in LaTeX documents, using the TikZ package.
+%	Benjamin McKay
+%	b.mckay at ucc.ie
 %
-%                                          Benjamin McKay
-%                                          b.mckay at ucc.ie
-%
-%               Released under the LaTeX Project Public License v1.3c or later, see 
+%	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{lie-hasse}[2020/02/02 Lie Hasse]
+\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse]
 \RequirePackage[rgb]{xcolor}
 \RequirePackage{dynkin-diagrams}
+\RequirePackage[outline]{contour}
 \usetikzlibrary{
 	positioning,
 	fadings,
@@ -26,7 +22,7 @@
 %%%
 %%% Application programming interface: 
 %%%
-
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{\(#1\)}}
 \newif\iflie at hasse@threeD
 \lie at hasse@threeDtrue
 \xdef\lie at hasse@three at D@shift{.3}%
@@ -40,14 +36,27 @@
 \lie at hasse@show at heightfalse
 \newif\iflie at hasse@attach at dynkin@diagram
 \lie at hasse@attach at dynkin@diagramfalse
-
+\newif\iflie at hasse@show at levi
+\lie at hasse@show at levitrue
+\newif\iflie at hasse@show at unipotent@radical
+\lie at hasse@show at unipotent@radicaltrue
 \pgfkeys{ 
 	/Lie Hasse diagram/.is family,
 	/Lie Hasse diagram,
-	attach Dynkin diagram/.is if = lie at hasse@attach at dynkin@diagram,
+	attach Dynkin diagram/.is if 
+		= lie at hasse@attach at dynkin@diagram,
 	attach Dynkin diagram/.default = false,
-	edge/.style={ultra thick},
-	edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+	edge/.style = {
+		ultra thick
+	},
+	edge length/.estore in 
+		= \lie at hasse@edge at length,
+	edge length = 1cm,
+	edge quotes/.style={
+		/Dynkin diagram/text style,
+		auto,
+		inner sep=2pt
+	},
 	compact edge/.style={},
 	noncompact edge/.style={opacity=0},
 	compact root/.code={\dynkinDrawSolidRootMark{#1}},
@@ -67,7 +76,13 @@
 	show widths/.default = false,
 	show height/.is if = lie at hasse@show at height,
 	show height/.default = false,
-	z shift/.estore in = \lie at hasse@three at D@shift,
+	show Levi/.is if = lie at hasse@show at levi,
+	show Levi/.default = true,
+	show unipotent radical/.is if 
+		= lie at hasse@show at unipotent@radical,
+	show unipotent radical/.default = true,
+	z shift/.estore in 
+		= \lie at hasse@three at D@shift,
 	z shift/.default = .3,
 	top/.style={black!20,opacity=.4},
 	left/.style={black!20,opacity=.9},
@@ -90,13 +105,17 @@
 		\dynkin at integer@rank%
 	}%
 	{%
-		% Turn Satake codes into Dynkin diagram expressions in \dynkin at string.
+		% Turn Satake codes into Dynkin diagram 
+		% expressions in \dynkin at string.
 		\dynkin at grok@Satake at codes%
 	}%
-	% Expand out any digits in \dynkin at string into multiples of the various root marks.
+	% Expand out any digits in \dynkin at string 
+	% into multiples of the various root marks.
 	\expand at Dynkin@Roots at Digits%
-	% Assign to \dynkin at roots the input string \dynkin at string with all . symbols removed,
-	% so we only get the symbols representing the marks for the various roots.
+	% Assign to \dynkin at roots the input string 
+	% \dynkin at string with all . symbols removed,
+	% so we only get the symbols representing 
+	% the marks for the various roots.
 	\StrDel{\dynkin at string}{.}[\temp]%
 	\xdef\dynkin at roots{\temp}%
 	\StrLen{\dynkin at roots}[\temp]%
@@ -115,58 +134,33 @@
 {%
 	\pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}%
 }%
+\newif\iflie at hasse@B
+\newcount\dynkin at rank@plus at one%
 \NewDocumentCommand\hasse{O{}mm}%
 {%
 	\ifdefined\filldraw%
-		\IfStrEq{#1}{}%
-		{%
+		\ifx#1\empty\relax%
 			\studyHasseDiagramOfRootSystem{#2}{#3}%
-		}%
-		{%
+		\else%
 			\studyHasseDiagramOfRootSystem[#1]{#2}{#3}%
-		}%
+		\fi%
 		\label at item@count 0\relax%
 		\expandafter\forcsvlist%
-			\expandafter\add at label%
+			\expandafter\lie at hasse@add at label%
 			\expandafter{\dynkin at label@list}%
 		\ifnum\dynkin at rank=1%
 			\dynkin{A}{1}%
 		\else%
+			\global\dynkin at rank@plus at one\the\dynkin at rank\relax%
+			\global\advance\dynkin at rank@plus at one by 1\relax%
 			\add at compact@simple at roots@to at compact@roots{}%
 			\IfStrEqCase{#2}%
 			{%%
 				{A}{\hasse at A}%
-				{B}{\hasse at BC}%
-				{C}{\hasse at BC*}%
+				{B}{\global\lie at hasse@Btrue\hasse at BC}%
+				{C}{\global\lie at hasse@Bfalse\hasse at BC}%
 				{D}{\hasse at D}%
-				{E}%
-				{%
-					\ifnum\dynkin at rank=6%
-						\hasse at E@six%
-					\else%
-						\ifnum\dynkin at rank=7%
-							\hasse at E@seven%
-						\else%
-							\ifnum\dynkin at rank=8%
-								\hasse at E@eight%
-							\else
-								\ifnum\dynkin at rank>8%
-									\ClassError%
-										{Lie Hasse}%
-										{Rank of E series Hasse diagram: #3{}%
-										 exceeds 8; not defined yet}%
-										{}%
-								\fi%
-								\ifnum\dynkin at rank<6%
-									\ClassError%
-										{Lie Hasse}%
-										{Rank of E series Hasse diagram: #3{} less than 6}%
-									{}%
-								\fi%
-							\fi%
-						\fi%	
-					\fi%
-				}%
+				{E}{\hasse at E@series}%
 				{F}%
 				{%
 					\ifnum\dynkin at rank=4%
@@ -194,10 +188,11 @@
 				{Lie Hasse}%
 				{Lie algebra series #2{} not A,B,C,D,E,F or G}%
 				{}]%
+			\forAllPositiveRoots{\draw at lie@hasse at root}%
 			\draw at simple@root at labels%
 		\fi%
 		\lie at hasse@write at widths{}%
-		\forAllPositiveRootsInHasseDiagram{\doRootThing}%
+		\forAllPositiveRoots{\doRootThing}%
 		\iflie at hasse@attach at dynkin@diagram%
 			\attachDynkin%
 		\fi%
@@ -205,6 +200,35 @@
 		\begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}%
 	\fi%
 }%
+\NewDocumentCommand\hasse at E@series{}%
+{%
+	\ifnum\dynkin at rank=6%
+		\hasse at E@six%
+	\else%
+		\ifnum\dynkin at rank=7%
+			\hasse at E@seven%
+		\else%
+			\ifnum\dynkin at rank=8%
+				\hasse at E@eight%
+			\else%
+				\ifnum\dynkin at rank>8%
+					\ClassError%
+						{Lie Hasse}%
+						{Rank of E series Hasse diagram: \the\dynkin at rank{}%
+						exceeds 8; not defined yet}%
+						{}%
+				\fi%
+				\ifnum\dynkin at rank<6%
+					\ClassError%
+						{Lie Hasse}%
+						{Rank of E series Hasse diagram: \the\dynkin at rank{}%
+						less than 6; not define yet}%
+						{}%
+				\fi%
+			\fi%
+		\fi%	
+	\fi%
+}%
 \NewDocumentCommand\drawRootAsDynkinSum{mm}%
 {%
 	\rootSum{#1}{#2}{\rs}%
@@ -211,7 +235,7 @@
 	\node at (#1;#2) 
 		{%
 			\dynkin[%
-				labels=\rs,%
+				expand labels=\rs,%
 				/Lie Hasse diagram/embedded Dynkin diagram]%
 				{\dynkin at series}{\the\dynkin at rank}%
 		};%
@@ -239,25 +263,38 @@
 		}%
 	\fi%
 }%
-
-\NewDocumentCommand\backwardsGtwo{}%
+\NewDocumentCommand\hasseAttachGtwo{}%
 {%
-	\dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin at roots}%
+	\dynkin[vertical shift=0,%
+			edge length=\lie at hasse@edge at length,%
+%			label,%
+%			backwards,%
+%			x shift in edge lengths=-1
+]{G}{\dynkin at roots}%
 }%
-
 \newcount\lie at hasse@E at shift%
 \NewDocumentCommand\attachDynkin{}%
 {%
 	\IfStrEqCase{\dynkin at series}{%
-		{A}{\dynkin{A}{\dynkin at roots}}%
-		{B}{\dynkin{B}{\dynkin at roots}}%
-		{C}{\dynkin{C}{\dynkin at roots}}%
-		{D}{\dynkin[y shift in edge lengths=-1.5,label]%
-			{D}{\dynkin at roots}}%
+		{A}{\dynkin[vertical shift=0,%
+					edge length=\lie at hasse@edge at length]%
+					{A}{\dynkin at roots}}%
+		{B}{\dynkin[vertical shift=0,%
+					edge length=\lie at hasse@edge at length]%
+					{B}{\dynkin at roots}}%
+		{C}{\dynkin[vertical shift=0,%
+					edge length=\lie at hasse@edge at length]%
+					{C}{\dynkin at roots}}%
+		{D}{\dynkin[vertical shift=0,%
+					edge length=\lie at hasse@edge at length,%
+					y shift in edge lengths=-1.5,label]%
+					{D}{\dynkin at roots}}%
 		{E}%
 		{%%
 			\ifnum\dynkin at rank=6%
 				\dynkin[%
+					vertical shift=0,%
+					edge length=\lie at hasse@edge at length,%
 					upsidedown,%
 					labels*={1,...,6},%
 					y shift in edge lengths=.5]%
@@ -266,6 +303,8 @@
 				\lie at hasse@E at shift\the\dynkin at rank\relax%
 				\advance\lie at hasse@E at shift by -2\relax%
 				\dynkin[%
+					vertical shift=0,%
+					edge length=\lie at hasse@edge at length,%
 					backwards,%
 					upsidedown,%
 					label,%
@@ -274,16 +313,17 @@
 					{E}{\dynkin at roots}%
 			\fi%
 		}%%
-		{F}{\dynkin{F}{\dynkin at roots}}%
-		{G}{\backwardsGtwo{}}%
+		{F}{\dynkin[vertical shift=0,%
+					edge length=\lie at hasse@edge at length]%
+					{F}{\dynkin at roots}}%
+		{G}{\hasseAttachGtwo}%
 	}%
 	[\ClassError%
 		{Lie Hasse}%
-		{Lie algebra series \dynkin at series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}%
+		{Lie algebra series \dynkin at series{} %
+		not A,B,C,D,E,F or G when attaching Dynkin diagram}%
 		{}]%
 }%
-
-
 \newif\iflie at hasse@multiple at diagrams
 \newcommand\doHasseDiagram[1]%%
 {%
@@ -291,8 +331,7 @@
 		\ %
 	\fi%
 	\begin{tikzpicture}%
-		[show background rectangle,%
-		baseline=(current bounding box.east)]]%
+		[show background rectangle,baseline=(current bounding box.east)]%
 		\hasse#1%
 		\iflie at hasse@show at height%
 			\rootSystemHeight{\lie at hasse@height}%
@@ -327,33 +366,25 @@
 	}%
 	\begin{center}%
 		\expandafter\forscsvlist%
-			\expandafter\doHasseDiagram%
-			\expandafter{#1}%
+			\expandafter\doHasseDiagram\expandafter{#1}%
 	\end{center}%
 }%
-
-
 %%%
 %%% Package internals:
 %%%
-
-
 \pgfdeclarelayer{Dynkin middle}
 \pgfdeclarelayer{Dynkin above}
 \pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
-
-
 \newcommand*\label at list@at[1]{\csname FOOBAR-#1\endcsname}
 \newcommand*\defn at label@list at entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname}
 \def\add at to@label at list#1#2{\global\defn at label@list at entry{#1}{#2}}%
 \newcount\label at item@count%
 \label at item@count 0\relax%
-\newcommand\add at label[1]%
+\newcommand\lie at hasse@add at label[1]%
 {%
-	\advance\label at item@count by 1\relax%
+	\global\advance\label at item@count by 1\relax%
 	\global\add at to@label at list{\the\label at item@count}{#1}%
 }%
-
 \xdef\lie at hasse@compact at roots{}%
 \NewDocumentCommand\if at compact@root{mmm}%
 {%
@@ -369,9 +400,8 @@
 \dynkinOrder{\dynkin at series}{\the\dynkin at rank}.Carter::#1->\dynkin at ordering.%
 {\current at simple@root}%
 \StrChar{\dynkin at roots}{\current at simple@root}[\lie at hasse@root at marker]%
-\IfStrEq{*}{\lie at hasse@root at marker}{#2}{#3}%
+\IfStrEq{x}{\lie at hasse@root at marker}{#3}{#2}%
 }%
-
 \NewDocumentCommand\add at compact@root{m}%
 {%
 	\if at compact@root{#1}%
@@ -382,53 +412,65 @@
 		\xdef\lie at hasse@compact at roots{\temp at lie@hasse at compact@roots{  }(#1)}%
 	}%
 }%
-
 \newcount\lie at hasse@sr%
-\newcount\drpo%
 \NewDocumentCommand\add at compact@simple at roots@to at compact@roots{}%
 {%
-\lie at hasse@sr 1\relax%
-\drpo\the\dynkin at rank\relax%
-\advance\drpo by 1\relax%
-\loop%
-	\if at compact@simple at root{\the\lie at hasse@sr}%
-	{%%
-		\add at compact@root{1;\the\lie at hasse@sr}%
-	}%%
-	{%%
-	}%%
-	\advance\lie at hasse@sr by 1\relax%
-\ifnum\lie at hasse@sr<\the\drpo%
-\repeat%
+	\lie at hasse@sr 1\relax%
+	\loop%
+		\if at compact@simple at root{\the\lie at hasse@sr}%
+		{%%
+			\add at compact@root{1;\the\lie at hasse@sr}%
+		}%%
+		{%%	
+		}%%
+		\advance\lie at hasse@sr by 1\relax%
+	\ifnum\lie at hasse@sr<\the\dynkin at rank@plus at one%
+	\repeat%
 }%
-
-\newcount\drmo%
 \newcount\lie at hasse@root at count%
 \newcount\lie at hasse@root at count@b%
 \newcount\max at lie@hasse at root@count%
 \newcount\lie at hasse@reorder
-
 \NewDocumentCommand\lie at hasse@fix at order{mm}%
 {%
 	\dynkinOrder{\dynkin at series}{\dynkin at rank}.Carter::{#1}->\dynkin at ordering.{#2}%
 }%
-
 \NewDocumentCommand\draw at one@simple at root@label{mm}%
 %% \draw at one@simple at root@label{r}{s}, draw at Carter number r
 %% the root with text s.
 {%
-			\node[below,%
-				label=%
-					{%
-						[below,%
-						lie at hasse@color,%
-						/Lie Hasse diagram/edge quotes]%
-						\(\pgfkeys{/Dynkin diagram/label macro=#2}\)%
-					}%
-				]% 
-				at%
-				(1;#1)%
-				{};%
+	\if at compact@simple at root{#1}%
+	{%
+		\iflie at hasse@show at levi%
+			\global\lie at hasse@ok at roottrue%
+		\else%
+			\global\lie at hasse@ok at rootfalse%
+		\fi%
+	}%
+	{%
+		\iflie at hasse@show at unipotent@radical%
+			\global\lie at hasse@ok at roottrue%
+		\else%
+			\global\lie at hasse@ok at rootfalse%
+		\fi%
+	}%
+	\iflie at hasse@ok at root%
+		\node[%
+			below,%
+			label=%
+			{%
+				[%
+				below,%
+				lie at hasse@color,%
+				/Lie Hasse diagram/edge quotes%
+				]%
+				\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{#2}}}\)%
+			}%
+		]% 
+		at%
+		(1;#1)%
+		{};%
+	\fi%
 }%
 \NewDocumentCommand\draw at simple@root at labels{}%
 {%
@@ -471,27 +513,56 @@
 \pgfmathsetmacro{\lie at hasse@huenum}{#1/\the\dynkin at rank}%
 \global\definecolor{lie at hasse@color}{hsb}{\lie at hasse@huenum,1,.6}%
 }%
-\NewDocumentCommand\draw at lie@hasse at root{m}%
+\NewDocumentCommand\draw at lie@hasse at root{mm}%
 {%
-\if at compact@root{#1}%
-{%%
-\pgfkeys{/Lie Hasse diagram/compact root=#1}%
-}%%
-{%%
-\pgfkeys{/Lie Hasse diagram/noncompact root=#1}%
-}%%
+	\if at compact@root{#1;#2}%
+	{%%
+		\iflie at hasse@show at levi%
+			\pgfkeys{/Lie Hasse diagram/compact root={#1;#2}}%
+		\fi%
+	}%%
+	{%%
+		\iflie at hasse@show at unipotent@radical%
+			\pgfkeys{/Lie Hasse diagram/noncompact root={#1;#2}}%
+		\fi%
+	}%%
 }%
-\xdef\lie at hasse@grade at a{}
-\xdef\lie at hasse@grade at b{}
-\xdef\lie at hasse@index at a{}
-\xdef\lie at hasse@index at b{}
 \newcount\root at gpo%
 \xdef\label at text{}%
+\newif\iflie at hasse@is at levi
+\newif\iflie at hasse@ok at root
 \NewDocumentCommand\draw at lie@hasse at edge{O{}mmmm}%
 %[edge label options]{from grade}{from index}{to index}{simple root}
 {%
 	\root at gpo #2\relax%
 	\advance\root at gpo by 1\relax%
+	\if at compact@root{#2;#3}%
+	{%
+		\if at compact@simple at root{#5}%
+		{%
+			\global\lie at hasse@is at levitrue%
+			\add at compact@root{\the\root at gpo;#4}%
+		}%
+		{%
+			\global\lie at hasse@is at levifalse%
+		}%
+	}%
+	{%
+		\global\lie at hasse@is at levifalse%
+	}%
+	\iflie at hasse@is at levi%
+		\iflie at hasse@show at levi%
+			\global\lie at hasse@ok at roottrue%
+		\else%			
+			\global\lie at hasse@ok at rootfalse%
+		\fi%
+	\else%
+		\iflie at hasse@show at unipotent@radical%
+			\global\lie at hasse@ok at roottrue%
+		\else%			
+			\global\lie at hasse@ok at rootfalse%
+		\fi%
+	\fi%
 	\set at lie@hasse at color{#5}%
 	\lie at hasse@fix at order{#5}{\lie at hasse@root at count@b}%
 	\IfStrEq{\dynkin at label@list}{}%
@@ -505,31 +576,33 @@
 		}%
 	}%
 	\if at compact@simple at root{#5}%
-	{%%% Compact
-		\draw[%
-			lie at hasse@color,%
-			/Lie Hasse diagram/edge,%
-			/Lie Hasse diagram/compact edge]%
-			(#2;#3) --%
-				node[lie at hasse@color,/Lie Hasse diagram/edge quotes,#1]%
-				{\(\pgfkeys{/Dynkin diagram/label macro=\label at text}\)}%
-			(\the\root at gpo;#4);%
-		\IfSubStr{\lie at hasse@compact at roots}{#2;#3}%
-		{%% adding to a compact
-			\add at compact@root{\the\root at gpo;#4}%
-		}%%
-		{%%
-		}%%
+	{%%% Compact simple root, i.e. edge
+		\iflie at hasse@ok at root%
+			\draw[%
+				lie at hasse@color,%
+				/Lie Hasse diagram/edge,%
+				/Lie Hasse diagram/compact edge]%
+				(#2;#3)--%
+					node[lie at hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+					{\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label at text}}}\)}%
+				(\the\root at gpo;#4);%
+		\fi%
+		\iflie at hasse@is at levi%
+		\fi%
 	}%%%
 	{%%% Noncompact
-	\draw[%
-			lie at hasse@color,%
-			/Lie Hasse diagram/edge,%
-			/Lie Hasse diagram/noncompact edge]%
-			(#2;#3) --%
+		\iflie at hasse@ok at root%
+			\draw
+			[%
+				lie at hasse@color,%
+				/Lie Hasse diagram/edge,%
+				/Lie Hasse diagram/noncompact edge%
+			]%
+			(#2;#3)--%
 				node[lie at hasse@color,/Lie Hasse diagram/edge quotes,#1]%
-				{\(\pgfkeys{/Dynkin diagram/label macro=\label at text}\)}%
+				{\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label at text}}}\)}%
 			(\the\root at gpo;#4);%
+		\fi%
 	}%%%
 }%
 \newcount\A at series@grade%
@@ -555,8 +628,8 @@
 			\coordinate 
 				(\the\A at series@grade;\the\A at series@j) 
 				at 
-				({.5*\the\A at series@x*\dynkin at edge@length},
-				{.25*\the\A at series@y*\dynkin at edge@length})
+				({.5*\the\A at series@x*\lie at hasse@edge at length},
+				{.25*\the\A at series@y*\lie at hasse@edge at length})
 				{};%
 			\advance\A at series@j by 1\relax%
 			\advance\A at series@x by 2\relax%
@@ -569,59 +642,35 @@
 	\ifnum\A at series@grade<\the\max at A@series at grade%
 	\repeat%
 }%
-\newcount\A at series@grade%
-\newcount\max at A@series at grade%
-\NewDocumentCommand\draw at A@roots{}%
-{%
-	\A at series@grade 1\relax%
-	\max at A@series at grade \the\dynkin at rank\relax%
-	\advance\max at A@series at grade by 1\relax%
-	\loop%
-		\max at A@series at j\the\dynkin at rank\relax%
-		\advance\max at A@series at j by -\the\A at series@grade\relax%
-		\advance\max at A@series at j by 2\relax%
-		\A at series@j 1\relax%
-		{%
-		\loop%
-			\draw at lie@hasse at root%
-				{\the\A at series@grade;\the\A at series@j}%
-			\advance\A at series@j by 1\relax%
-			\ifnum\A at series@j<\the\max at A@series at j%
-		\repeat%
-		}%
-		\advance\A at series@grade by 1\relax%
-	\ifnum\A at series@grade<\the\max at A@series at grade%
-	\repeat%
-}%
 \newcount\maxA at i%
 \newcount\maxA at j%
 \newcount\A at lbl%
-\newcount\A at i%
-\newcount\A at j%
-\newcount\A at ipo%
+\newcount\lie at hasse@i%
+\newcount\lie at hasse@j%
+\newcount\lie at hasse@ipo%
 \newcount\A at rj%
 \newcount\A at rjmo%
 \NewDocumentCommand\draw at A@edges{}%
 {%
 	\maxA at i\the\dynkin at rank\relax%
-	\A at i 1\relax%
+	\lie at hasse@i 1\relax%
 	\loop%
 		\maxA at j \the\dynkin at rank\relax%
-		\advance\maxA at j by -\the\A at i\relax%
+		\advance\maxA at j by -\the\lie at hasse@i\relax%
 		\advance\maxA at j by 1\relax%
 		\ifnum\maxA at j>-1%
-			\A at j 1\relax%
+			\lie at hasse@j 1\relax%
 			{%
 			\loop%
-				\A at lbl\the\A at i\relax%
-				\advance\A at lbl by \the\A at j\relax%
-				\A at ipo \A at i\relax%
-				\advance\A at ipo by 1\relax%
+				\A at lbl\the\lie at hasse@i\relax%
+				\advance\A at lbl by \the\lie at hasse@j\relax%
+				\lie at hasse@ipo \lie at hasse@i\relax%
+				\advance\lie at hasse@ipo by 1\relax%
 				\draw at lie@hasse at edge[left]%
-					{\the\A at i}{\the\A at j}%
-					{\the\A at j}{\the\A at lbl}%
+					{\the\lie at hasse@i}{\the\lie at hasse@j}%
+					{\the\lie at hasse@j}{\the\A at lbl}%
 				\A at rj\the\maxA at j\relax%
-				\advance\A at rj by -\the\A at j\relax%
+				\advance\A at rj by -\the\lie at hasse@j\relax%
 				\advance\A at rj by 1\relax%
 				\A at rjmo\the\A at rj\relax%
 				\advance\A at rjmo by -1\relax%
@@ -629,15 +678,15 @@
 				\advance\A at lbl by \the\dynkin at rank%
 				\advance\A at lbl by 1%
 				\draw at lie@hasse at edge[right]%
-					{\the\A at i}{\the\A at rj}%
+					{\the\lie at hasse@i}{\the\A at rj}%
 					{\the\A at rjmo}{\the\A at lbl}%
-				\advance\A at j by 1\relax%
-			\ifnum\A at j<\the\maxA at j%
+				\advance\lie at hasse@j by 1\relax%
+			\ifnum\lie at hasse@j<\the\maxA at j%
 			\repeat%
 			}%
 		\fi%
-	\advance\A at i by 1\relax%
-	\ifnum\A at i<\the\maxA at i%
+	\advance\lie at hasse@i by 1\relax%
+	\ifnum\lie at hasse@i<\the\maxA at i%
 	\repeat%
 }%
 %% \hasse at A@width at at@grade{g}{\w} sets the counter \w to
@@ -653,7 +702,6 @@
 {%
 	\place at A@roots%
 	\draw at A@edges%
-	\draw at A@roots%
 }%
 %% \hasse at BC@width at at@grade{g}{\w} sets the counter \w to
 %% the value of the width (number of roots) at grade g of
@@ -666,8 +714,7 @@
 	\global\advance#2 by 1\relax%
 	\global\divide#2 by 2\relax%
 }%
-\newcount\tdrmt%
-\newcount\tdrmo%
+\newcount\twice at dynkin@rank at minus@one%
 \newcount\max at BC@r%
 \newcount\BC at r%
 \newcount\BC at series@x%
@@ -674,131 +721,110 @@
 \newcount\BC at series@y%
 \NewDocumentCommand\place at BC@roots{}%
 {%
-\drmo \the\dynkin at rank\relax%
-\advance\drmo by -1\relax%
-\tdrmt \the\drmo\relax%
-\advance\tdrmt by \the\drmo\relax%
-\tdrmo \the\tdrmt\relax%
-\advance\tdrmo 1\relax%
-\max at BC@r \the\dynkin at rank\relax%
-\advance\max at BC@r by 1\relax%
-\BC at r 1\relax%
-\loop%
-	\BC at series@x \the\BC at r\relax%
-	\advance\BC at series@x by -1\relax%
-	\advance\BC at series@x by \the\BC at series@x\relax%
-	\BC at series@y 1\relax%
-	{%%
+	\twice at dynkin@rank at minus@one \the\dynkin at rank\relax%
+	\advance\twice at dynkin@rank at minus@one by \the\dynkin at rank\relax%
+	\advance\twice at dynkin@rank at minus@one by -1\relax%
+	\max at BC@r \the\dynkin at rank\relax%
+	\advance\max at BC@r by 1\relax%
+	\BC at r 1\relax%
 	\loop%
-		\coordinate 
-			(\the\BC at series@y;\the\BC at r) 
-			at 
-			({.5*\the\BC at series@x*\dynkin at edge@length},
-			{.5*(\the\BC at series@y-1)*\dynkin at edge@length})
-			{};%
-		\advance\BC at series@y by 1\relax%
-		\advance\BC at series@x by 1\relax%
-		\ifnum\BC at series@x<\the\tdrmo\repeat%
-	}%%
-	\advance\BC at r by 1\relax%
-	\ifnum\BC at r<\the\max at BC@r%
-\repeat%
+		\BC at series@x \the\BC at r\relax%
+		\advance\BC at series@x by -1\relax%
+		\advance\BC at series@x by \the\BC at series@x\relax%
+		\BC at series@y 1\relax%
+		{%%
+		\loop%
+			\coordinate 
+				(\the\BC at series@y;\the\BC at r) 
+				at 
+				({.5*\the\BC at series@x*\lie at hasse@edge at length},
+				{.5*(\the\BC at series@y-1)*\lie at hasse@edge at length})
+				{};%
+			\advance\BC at series@y by 1\relax%
+			\advance\BC at series@x by 1\relax%
+		\ifnum\BC at series@x<\the\twice at dynkin@rank at minus@one\repeat%
+		}%%
+		\advance\BC at r by 1\relax%
+		\ifnum\BC at r<\the\max at BC@r%
+	\repeat%
 }%
-\newcount\max at BC@i%
+\newcount\BC at height%
+\newcount\BC at g%
+\NewDocumentCommand\draw at BC@edges{}%
+{%
+	\rootSystemHeight{\BC at height}%
+	\ifnum\BC at height>1%
+		\BC at g 1\relax%
+		\loop%
+			\draw at BC@edges at at@grade{\the\BC at g}%
+			\global\advance\BC at g by 1\relax%
+		\ifnum\BC at g<\BC at height%
+		\repeat%
+	\fi%
+}%
 \newcount\BC at i%
-\newcount\BC at series@x%
-\newcount\BC at series@y%
+\newcount\BC at width%
+\newcount\BC at width@plus at one%
+\NewDocumentCommand\draw at BC@edges at at@grade{m}%
+{%
+	\rootSystemWidthAtGrade{#1}{\BC at width}%
+	\BC at width@plus at one \BC at width\relax%
+	\advance \BC at width@plus at one by 1\relax%
+	\BC at i 1\relax%
+	{%
+	\loop%
+		\draw at BC@edges at at@root{#1}{\the\BC at i}%
+			\global\advance\BC at i by 1\relax%
+	\ifnum\BC at i<\BC at width@plus at one\repeat%
+	}%
+}%
+\newcount\BC at height%
 \newcount\BC at ii%
-\newcount\BC at series@yy%
-\newcount\BC at series@yy%
-\newcount\lbl%
+\newif\ifBC at draw%
+\newcount\lie at hasse@lbl%
 \newcount\temp at lbl%
-\NewDocumentCommand\draw at BC@edges{s}%
+\NewDocumentCommand\draw at BC@edges at at@root{mm}%
 {%
-\tdrmo \the\dynkin at rank\relax%
-\advance\tdrmo by \the\dynkin at rank\relax%
-\advance\tdrmo by -1\relax%
-\max at BC@i \the\dynkin at rank\relax%
-\advance\max at BC@i by 1\relax%
-\BC at i 1\relax%
-\loop%
-	\BC at series@x \the\BC at i\relax%
-	\advance\BC at series@x by \the\BC at i\relax%
-	\advance\BC at series@x by -2\relax%
-	\BC at series@y 1\relax%
-	{%%
-	\loop%
-		\ifnum\BC at i>1%
-			% draw an edge upward to the left
-			\BC at ii \the\BC at i\relax%
-			\advance\BC at ii  by -1\relax%
-			\BC at series@yy \the\BC at series@y\relax%
-			\advance\BC at series@yy  by 1\relax%
-			\draw at lie@hasse at edge[right]%
-				{\the\BC at series@y}{\the\BC at i}%
-				{\the\BC at ii}%
-				{\the\BC at ii}%
+	\ifnum#2>1%
+		% draw an edge upward to the left
+		\BC at ii #2\relax%
+		\advance\BC at ii by -1\relax%
+		\draw at lie@hasse at edge[right]%
+			{#1}{#2}%
+			{\the\BC at ii}
+			{\the\BC at ii}%
+	\fi%
+	\BC at drawtrue%
+	\ifodd#1
+		\ifnum#2=\the\BC at width%
+			\global\BC at drawfalse%
 		\fi%
-		\ifnum\BC at series@y>1%
-			% draw an edge downward to the left
-			\BC at series@yy \the\BC at series@y\relax%
-			\advance\BC at series@yy  by -1\relax%
-			\lbl \the\BC at i\relax%
-			\advance\lbl by \the\BC at series@y\relax%
-			\advance\lbl by -1\relax%
-			\ifnum\dynkin at rank<\the\lbl%
-				\temp at lbl \the\lbl\relax%
-				\lbl \the\dynkin at rank\relax%
-				\advance\lbl by \the\dynkin at rank%
-				\advance\lbl by -\the\temp at lbl%
+	\fi%	
+	\ifBC at draw%
+		% draw an edge upward to the right
+		\lie at hasse@lbl #2\relax%
+		\advance\lie at hasse@lbl by #1\relax%
+		\ifnum\dynkin at rank<\the\lie at hasse@lbl%
+			\temp at lbl \the\lie at hasse@lbl\relax%
+			\lie at hasse@lbl \the\dynkin at rank\relax%
+			\advance\lie at hasse@lbl by \the\dynkin at rank%
+			\advance\lie at hasse@lbl by -\the\temp at lbl%
 %% For the B series:
-				\IfBooleanF{#1}{\global\advance\lbl by 1\relax}%
-				\draw at lie@hasse at edge[left]%
-					{\the\BC at series@yy}{\the\BC at i}%
-					{\the\BC at i}%
-					{\the\lbl}%
-			\else%
-				\draw at lie@hasse at edge[left]%
-					{\the\BC at series@yy}{\the\BC at i}%
-					{\the\BC at i}%
-					{\the\lbl}%
+			\iflie at hasse@B%
+				\global\advance\lie at hasse@lbl by 1\relax%
 			\fi%
+			\draw at lie@hasse at edge[left]%
+				{#1}{#2}%
+				{#2}%
+				{\the\lie at hasse@lbl}%
+		\else%
+			\draw at lie@hasse at edge[left]%
+				{#1}{#2}%
+				{#2}%
+				{\the\lie at hasse@lbl}%
 		\fi%
-		\advance\BC at series@y by 1\relax%
-		\advance\BC at series@x by 1\relax%
-		\ifnum\BC at series@x<\the\tdrmo\repeat%
-	}%%
-	\advance\BC at i by 1\relax%
-	\ifnum\BC at i<\the\max at BC@i%
-\repeat%
+	\fi%
 }%
-\newcount\tdrpt%
-\newcount\BC at r%
-\newcount\BC at series@y%
-\newcount\maxy%
-\NewDocumentCommand\draw at BC@roots{}%
-{%
-\tdrpt \the\dynkin at rank\relax%
-\advance\tdrpt by \the\dynkin at rank\relax%
-\advance\tdrpt by 2\relax%
-\max at BC@r \the\dynkin at rank\relax%
-\advance\max at BC@r by 1\relax%
-\BC at r 1\relax%
-\loop%
-	\BC at series@y 1\relax%
-	\maxy \tdrpt\relax%
-	\advance\maxy -\the\BC at r\relax%
-	\advance\maxy -\the\BC at r\relax%
-	{%%
-	\loop%
-		\draw at lie@hasse at root{\the\BC at series@y;\the\BC at r}%
-		\advance\BC at series@y by 1\relax%
-	\ifnum\BC at series@y<\the\maxy\repeat%
-	}%%
-	\advance\BC at r by 1\relax%
-	\ifnum\BC at r<\the\max at BC@r%
-\repeat%
-}%
 \NewDocumentCommand\hasse at BC{s}% star for C:
 {%
 	\place at BC@roots%
@@ -809,7 +835,6 @@
 	{%
 		\draw at BC@edges%
 	}%
-	\draw at BC@roots%
 }%
 \NewDocumentCommand\hasse at D{}%
 {%
@@ -818,51 +843,45 @@
 	\iflie at hasse@threeD%
 		\draw at D@hasse at three@D%
 	\fi%
-	\draw at D@roots% 
 }%
-\newcount\drmt%
 \NewDocumentCommand\draw at D@hasse at three@D{}%
 {%
-		\drmo \the\dynkin at rank\relax%
-		\advance\drmo by -1\relax%
-		\drmt \the\dynkin at rank\relax%
-		\advance\drmt by -2\relax%
 		\begin{pgfonlayer}{Dynkin middle}%
 			\fill[/Lie Hasse diagram/left] 
-				(\the\drmt;1) -- 
-				(\the\drmo;1) -- 
+				(\the\dynkin at rank@minus at two;1) -- 
+				(\the\dynkin at rank@minus at one;1) -- 
 				(\the\dynkin at rank;1) -- 
-				(\the\drmo;2) --
+				(\the\dynkin at rank@minus at one;2) --
 				cycle;%
 			\fill[/Lie Hasse diagram/top] 
-				(\the\drmt;1) -- 
-				(1;\the\drmt) -- 
-				(2;\the\drmo) -- 
-				(\the\drmo;2) --
+				(\the\dynkin at rank@minus at two;1) -- 
+				(1;\the\dynkin at rank@minus at two) -- 
+				(2;\the\dynkin at rank@minus at one) -- 
+				(\the\dynkin at rank@minus at one;2) --
 				cycle;%
 			\fill[/Lie Hasse diagram/top] 
-				(\the\drmo;2) -- 
+				(\the\dynkin at rank@minus at one;2) -- 
 				(\the\dynkin at rank;1) -- 
-				(3;\the\drmo) -- 
-				(2;\the\drmo) --
+				(3;\the\dynkin at rank@minus at one) -- 
+				(2;\the\dynkin at rank@minus at one) --
 				cycle;%
 			\fill[/Lie Hasse diagram/top] 
-				(\the\drmo;1) -- 
+				(\the\dynkin at rank@minus at one;1) -- 
 				(\the\dynkin at rank;1) -- 
-				(3;\the\drmo) -- 
-				(2;\the\drmt) --
+				(3;\the\dynkin at rank@minus at one) -- 
+				(2;\the\dynkin at rank@minus at two) --
 				cycle;%
 			\fill[/Lie Hasse diagram/top]
-				(\the\drmt;1) -- 
-				(\the\drmo;1) -- 
-				(2;\the\drmt) -- 
-				(1;\the\drmt) --
+				(\the\dynkin at rank@minus at two;1) -- 
+				(\the\dynkin at rank@minus at one;1) -- 
+				(2;\the\dynkin at rank@minus at two) -- 
+				(1;\the\dynkin at rank@minus at two) --
 				cycle;%
 			\fill[/Lie Hasse diagram/left]
-				(1;\the\drmt) -- 
-				(2;\the\drmt) -- 
-				(3;\the\drmo) -- 
-				(2;\the\drmo) --
+				(1;\the\dynkin at rank@minus at two) -- 
+				(2;\the\dynkin at rank@minus at two) -- 
+				(3;\the\dynkin at rank@minus at one) -- 
+				(2;\the\dynkin at rank@minus at one) --
 				cycle;%
 		\end{pgfonlayer}%
 }%
@@ -883,9 +902,7 @@
 \newcount\D at g%
 \newcount\maxD at grd%
 \newcount\D at grd%
-\newcount\maxxD%
-\newcount\iD%
-\newcount\xxD%
+\newcount\lie at hasse@D at x%
 \newcount\sum at D%
 \NewDocumentCommand\place at D@roots{}%
 {%
@@ -918,37 +935,34 @@
 	\repeat%
 	}%
 }%
-\newcount\drpo%
 \NewDocumentCommand\place at D@root at at{mm}%
 {%
-	\xxD #1\relax%
-	\advance\xxD by #2\relax%
-	\advance\xxD by #2\relax%
-	\advance\xxD by -3\relax%
-	\drpo \the\dynkin at rank\relax%
-	\advance\drpo by 1\relax%
+	\lie at hasse@D at x #1\relax%
+	\advance\lie at hasse@D at x by #2\relax%
+	\advance\lie at hasse@D at x by #2\relax%
+	\advance\lie at hasse@D at x by -3\relax%
 	\sum at D #1\relax%
 	\advance\sum at D by #2\relax%
 	\ifnum\sum at D=\the\dynkin at rank%
 		\global\def\D at root@x%
-			{\the\xxD-\lie at hasse@three at D@shift}%
+			{\the\lie at hasse@D at x-\lie at hasse@three at D@shift}%
 	\else%
-		\ifnum\sum at D=\the\drpo%
+		\ifnum\sum at D=\the\dynkin at rank@plus at one%
 			\ifnum#1<\the\dynkin at rank%
 			\global\def\D at root@x%
-				{\the\xxD-2+\lie at hasse@three at D@shift}%
+				{\the\lie at hasse@D at x-2+\lie at hasse@three at D@shift}%
 			\else%
-				\global\def\D at root@x{\the\xxD}%
+				\global\def\D at root@x{\the\lie at hasse@D at x}%
 			\fi%
 		\else%
 			\ifnum\sum at D<\the\dynkin at rank%
-				\global\def\D at root@x{\the\xxD}%
+				\global\def\D at root@x{\the\lie at hasse@D at x}%
 			\else%
 %					if \sum at D exceeds rank+1
 				\ifnum#1<\the\dynkin at rank%
-					\global\def\D at root@x{\the\xxD-2}%
+					\global\def\D at root@x{\the\lie at hasse@D at x-2}%
 				\else%
-					\global\def\D at root@x{\the\xxD}%
+					\global\def\D at root@x{\the\lie at hasse@D at x}%
 				\fi%
 			\fi%
 		\fi%
@@ -956,7 +970,7 @@
 	\coordinate 
 		(#1;#2)
 		at 
-		({(\D at root@x)*\dynkin at edge@length/2},{(#1-1)*\dynkin at edge@length/2})
+		({(\D at root@x)*\lie at hasse@edge at length/2},{(#1-1)*\lie at hasse@edge at length/2})
 		{};%
 }%
 \NewDocumentCommand\draw at D@edges{}%
@@ -983,7 +997,8 @@
 	\D at r 1\relax%
 	{%
 	\loop%
-		\draw at D@edges at at{#1}{\the\D at r}{\the\max at D@roots}%
+%%%		\draw at D@edges at at{#1}{\the\D at r}{\the\max at D@roots}%
+		\draw at D@edges at at{#1}{\the\D at r}%
 		\advance\D at r by 1\relax%
 	\ifnum\D at r<\the\max at D@roots at plus@one%
 	\repeat%
@@ -1000,10 +1015,6 @@
 \newcount\hasse at D@label%
 \NewDocumentCommand\draw at D@edges at at{mm}%
 {%
-	\drmo\the\dynkin at rank\relax%
-	\advance\drmo by -1\relax%
-	\drpo \the\dynkin at rank\relax%
-	\advance\drpo by 1\relax%
 	\hasse at D@gpo#1\relax%
 	\advance\hasse at D@gpo by 1\relax%
 	\hasse at D@gpi#1\relax%
@@ -1035,7 +1046,7 @@
 				\xdef\hasse at D@layer{Dynkin above}%
 			\else%
 					% below or middle.
-				\ifnum\hasse at D@gpi=\the\drpo%
+				\ifnum\hasse at D@gpi=\the\dynkin at rank@plus at one%
 					\xdef\hasse at D@layer{Dynkin behind}%
 				\fi%
 			\fi%
@@ -1045,7 +1056,7 @@
 		\fi%
 	\fi%
 	\ifnum\dynkin at rank>#1%
-		\ifnum\hasse at D@gpi<\the\drpo%
+		\ifnum\hasse at D@gpi<\the\dynkin at rank@plus at one%
 		\else%
 			\global\advance\hasse at D@label -1\relax%
 		\fi%
@@ -1069,7 +1080,7 @@
 		\fi%
 	\fi%
 	\ifnum#1=1%
-		\ifnum\drmo=#2%
+		\ifnum\dynkin at rank@minus at one=#2%
 			\global\hasse at Dfalse\relax%
 		\else%
 			\xdef\hasse at D@LR{right}%
@@ -1080,13 +1091,13 @@
 		\ifnum\hasse at D@label>\the\dynkin at rank%
 			\hasse at D@label -\hasse at D@label\relax%
 			\advance\hasse at D@label \the\dynkin at rank\relax%
-			\advance\hasse at D@label \the\drmo\relax%
+			\advance\hasse at D@label \the\dynkin at rank@minus at one\relax%
 		\fi%
-		\ifnum\drmo<#1%
+		\ifnum\dynkin at rank@minus at one<#1%
 		\else%
 			\ifnum#2=1%
 			\else%
-				\ifnum\hasse at D@gpi<\the\drpo%
+				\ifnum\hasse at D@gpi<\the\dynkin at rank@plus at one%
 				\else%
 					\advance\hasse at D@label 1\relax%
 				\fi%
@@ -1099,11 +1110,11 @@
 				\global\advance\hasse at D@target by 1\relax%
 			\fi%
 		\else%
-			\ifnum\drmo=#1%
+			\ifnum\dynkin at rank@minus at one=#1%
 				\global\advance\hasse at D@target by -1\relax%
 			\fi%
 		\fi%
-		\ifnum\hasse at D@gpi=\the\drpo%
+		\ifnum\hasse at D@gpi=\the\dynkin at rank@plus at one%
 			\ifnum#2>1%
 				\xdef\hasse at D@layer{Dynkin behind}%
 				\xdef\hasse at D@LR{right}%
@@ -1112,7 +1123,7 @@
 			\ifnum\hasse at D@gpi=\the\dynkin at rank%
 				\xdef\hasse at D@layer{Dynkin above}%
 			\else%
-				\ifnum\hasse at D@gpi=\the\drmo%
+				\ifnum\hasse at D@gpi=\the\dynkin at rank@minus at one%
 					\xdef\hasse at D@layer{Dynkin above}%
 				\else%
 					\xdef\hasse at D@layer{Dynkin middle}%
@@ -1129,7 +1140,7 @@
 		\end{pgfonlayer}%
 	\fi%
 %	% Draw any other edges.
-	\ifnum\hasse at D@gpi=\the\drmo%
+	\ifnum\hasse at D@gpi=\the\dynkin at rank@minus at one%
 		\hasse at D@target#2\relax%
 		\advance\hasse at D@target by 1\relax%
 		\begin{pgfonlayer}{Dynkin behind}
@@ -1142,38 +1153,7 @@
 }%
 \newcount\maxD at grd%
 \newcount\D at grd%
-\newcount\maxxD%
 \newcount\sum at D%
-\NewDocumentCommand\draw at D@roots{}%
-{%
-	\drmo \the\dynkin at rank\relax%
-	\advance\drmo by -1\relax%
-	\maxD at grd \the\dynkin at rank\relax%
-	\advance\maxD at grd by \the\dynkin at rank\relax%
-	\advance\maxD at grd by -2\relax%
-	\D at grd 1\relax%
-	\loop%
-		% Construct the roots at grade \D at grd.
-		\draw at D@roots at at@grade{\D at grd}%
-		\advance\D at grd by 1\relax%
-	\ifnum\D at grd<\the\maxD at grd%
-	\repeat%	
-}%
-\NewDocumentCommand\draw at D@roots at at@grade{m}%
-{%
-	\hasse at D@width at at@grade{#1}{\max at D@roots}%
-	\max at D@roots at plus@one \the\max at D@roots\relax%
-	\advance\max at D@roots at plus@one 1\relax%
-	\D at r 1\relax%
-	{%
-	\loop%
-		\draw at lie@hasse at root{\the\D at grd;\the\D at r}%
-		\advance\D at r by 1\relax%
-	\ifnum\D at r<\the\max at D@roots at plus@one%
-	\repeat%
-	}%
-}%
-%}%
 \newcount\lie at hasse@grade at no
 \newcount\lie at hasse@root at no
 \def\lie at hasse@XX{}
@@ -1205,14 +1185,14 @@
 	\coordinate 
 		(\the\lie at hasse@grade at no;\the\lie at hasse@root at no) 
 		at 
-		({\lie at hasse@XX*\dynkin at edge@length/2},
-		{(\the\lie at hasse@grade at no-1)*\dynkin at edge@length/2}) {};%
+		({\lie at hasse@XX*\lie at hasse@edge at length/2},
+		{(\the\lie at hasse@grade at no-1)*\lie at hasse@edge at length/2}) {};%
 	\global\advance\lie at hasse@root at no by 1%
 }%
 \NewDocumentCommand\lie at hasse@place at root@list{m}%
 {%
 	\global\lie at hasse@root at no 1\relax%
-	\expandafter\forcsvlist\expandafter{\lie at hasse@place at root}{#1}%
+	\expandafter\forcsvlist\expandafter\lie at hasse@place at root{#1}%
 	\global\advance\lie at hasse@grade at no by 1%
 }%
 \NewDocumentCommand\lie at hasse@place at roots{m}%
@@ -1224,26 +1204,6 @@
 	}%
 	\expandafter\docsvlist\expandafter{#1}%
 }%
-\NewDocumentCommand\lie at hasse@draw at root{m}%
-{%
-	\draw at lie@hasse at root{\the\lie at hasse@grade at no;\the\lie at hasse@root at no}%
-	\global\advance\lie at hasse@root at no by 1%
-}%
-\NewDocumentCommand\lie at hasse@root at draw@list{m}%
-{%
-	\global\lie at hasse@root at no 1\relax%
-	\expandafter\forcsvlist\expandafter{\lie at hasse@draw at root}{#1}%
-	\global\advance\lie at hasse@grade at no by 1%
-}%
-\NewDocumentCommand\lie at hasse@draw at roots{m}%
-{%
-	\global\lie at hasse@grade at no 1\relax%
-	\renewcommand*{\do}[1]%
-	{%
-		\lie at hasse@root at draw@list{##1}%
-	}%
-	\expandafter\docsvlist\expandafter{#1}%
-}%
 \newcount\lie at hasse@grade at no@plus at one%
 \newcount\lie at hasse@edge at count%
 \def\lie at hasse@edge at go{%
@@ -1256,7 +1216,8 @@
 {%
 	\global\advance\lie at hasse@edge at count  by 1\relax%
 	\begin{pgfonlayer}{Dynkin above}%
-	\lie at hasse@finish at edge#1!%
+%%?	\lie at hasse@finish at edge#1!%
+	\lie at hasse@finish at edge#1\relax%
 	\end{pgfonlayer}%
 }%
 \def\lie at hasse@process at edge@behind#1!%
@@ -1289,13 +1250,12 @@
 \NewDocumentCommand\lie at hasse@process at edge@lists{m}%
 {%
 	\global\lie at hasse@grade at no 1\relax%
-	\expandafter\forcsvlist\expandafter{\lie at hasse@process at edge@list}{#1}%
+	\expandafter\forcsvlist\expandafter\lie at hasse@process at edge@list{#1}%
 }%
 \NewDocumentCommand\hasse at X{mm}%
 {%
 	\lie at hasse@place at roots{#1}%
 	\lie at hasse@process at edge@lists{#2}%
-	\lie at hasse@draw at roots{#1}%
 }%
 \NewDocumentCommand\hasse at E@six at width@at at grade{mm}%
 {%
@@ -1323,7 +1283,11 @@
 		#2 1%
 	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
 }%
-% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer.
+% In the following code, edges are described by grade: 
+% in grade g, the expression i+r<j. means an edge from 
+% g;i to (g+1);j labelled by root r, with a label on 
+% the left; use > instead of < to get the right. Use a 
+% star in front to get this edge on the higher layer.
 \NewDocumentCommand\hasse at E@six{}%
 {%
 \hasse at X%
@@ -1353,13 +1317,45 @@
 }%%%
 \iflie at hasse@threeD%
 \begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;%
-\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(2;1) -- 
+		(5;3) -- 
+		(2;5) -- 
+		(1;5) -- 
+		(2;4) -- 
+		(1;3) -- 
+		(2;2) -- 
+		(1;2) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(2;3) -- 
+		(4;1) -- 
+		(6;2) -- 
+		(4;5) -- cycle;%
+	\fill[/Lie Hasse diagram/right] 
+		(1;3) -- 
+		(2;3) -- 
+		(4;5) -- 
+		(3;5) -- cycle;%
+	\fill[/Lie Hasse diagram/left] 
+		(3;1) -- 
+		(4;1) -- 
+		(2;3) -- 
+		(1;3) -- cycle;%
+	\fill[/Lie Hasse diagram/left] 
+		(4;3) -- 
+		(5;1) -- 
+		(6;1) -- 
+		(5;2) -- cycle;%
+	\fill[/Lie Hasse diagram/right] 
+		(4;3) -- 
+		(5;2) -- 
+		(6;3) -- 
+		(5;4) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(5;2) -- 
+		(7;1) -- 
+		(9;1) -- 
+		(7;3) -- cycle;%
 \end{pgfonlayer}%
 \fi%
 }%
@@ -1399,7 +1395,6 @@
 		#2 1%
 	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
 }%
-
 \NewDocumentCommand\hasse at E@seven{}%
 {%
 \hasse at X%
@@ -1457,20 +1452,64 @@
 }%%%
 \iflie at hasse@threeD%
 \begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) -- 
-	(2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;%
-\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(2;1) -- 
+		(6;3) -- 
+		(2;6) -- 
+		(1;6) -- 
+		(2;5) -- 
+		(1;4) -- 
+		(2;3) -- 
+		(1;3) -- 
+		(2;2) -- 
+		(1;2) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(5;1) -- 
+		(7;3) -- 
+		(4;6) -- 
+		(2;4) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(7;1) -- 
+		(9;3) -- 
+		(7;5) -- 
+		(5;4) -- cycle;%
+	\fill[/Lie Hasse diagram/top] 
+		(9;1) -- 
+		(12;1) -- 
+		(13;1) -- 
+		(14;1) -- 
+		(11;3) -- 
+		(7;2) -- cycle;%
+	\fill[/Lie Hasse diagram/right] 
+		(1;4) -- 
+		(2;4) -- 
+		(4;6) -- 
+		(3;6) -- cycle;%
+	\fill[/Lie Hasse diagram/left] 
+		(4;1) -- 
+		(5;1) -- 
+		(2;4) -- 
+		(1;4) -- cycle;%
+	\fill[/Lie Hasse diagram/left] 
+		(4;4) -- 
+		(6;1) -- 
+		(8;1) -- 
+		(7;2) -- 
+		(6;2) -- 
+		(5;4) -- cycle;%
+	\fill[/Lie Hasse diagram/right] 
+		(4;4) -- 
+		(5;4) -- 
+		(6;5) -- 
+		(5;6) -- cycle;%
+	\fill[/Lie Hasse diagram/right] 
+		(6;2) -- 
+		(7;2) -- 
+		(9;4) -- 
+		(8;4) -- cycle;%
 \end{pgfonlayer}%
 \fi%
 }%
-
 \NewDocumentCommand\hasse at E@eight at width@at at grade{mm}%
 {%
 	\ifnum#1=1%
@@ -1527,7 +1566,6 @@
 		#2 1%
 	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
 }%
-
 \NewDocumentCommand\hasse at E@eight{}%
 {%
 \hasse at X{%
@@ -1754,11 +1792,11 @@
 {{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}%
 {% grades:
 {% 1
-1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3},
+1+2<1,*2+3>2,*3+4>3,*2+1<1,*3+2<2,4+3>3},
 {% 2
-*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3},
+*1+3<1,*2+4>3,*2+1<1,*2+3>2,3+2>3},
 {% 3
-*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3},
+*1+3<1,1+4>2,*2+4>3,*2+1<1,3+1>2,*3+3>3},
 {% 4
 *1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3},
 {% 5
@@ -2026,8 +2064,8 @@
 	}%
 	\global\root at sum@resetfalse%
 }%
-\xdef\my at root@sum{}%
-\xdef\my at fixed@root at sum{}%
+\xdef\lie at hasse@root at sum{}%
+\xdef\lie at hasse@fixed at root@sum{}%
 \NewDocumentCommand\rootSum{oommm}%
 {%
 	\IfValueT{#1}%
@@ -2053,15 +2091,15 @@
 	\fi%
 	\IfStrEqCase{\dynkin at series}%
 	{%
-		{A}{\hasse at A@root at sum{#3}{#4}{\my at root@sum}}%
-		{B}{\hasse at B@root at sum{#3}{#4}{\my at root@sum}}%
-		{C}{\hasse at C@root at sum{#3}{#4}{\my at root@sum}}%
-		{D}{\hasse at D@root at sum{#3}{#4}{\my at root@sum}}%
-		{E}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
-		{F}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
-		{G}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
+		{A}{\hasse at A@root at sum{#3}{#4}{\lie at hasse@root at sum}}%
+		{B}{\hasse at B@root at sum{#3}{#4}{\lie at hasse@root at sum}}%
+		{C}{\hasse at C@root at sum{#3}{#4}{\lie at hasse@root at sum}}%
+		{D}{\hasse at D@root at sum{#3}{#4}{\lie at hasse@root at sum}}%
+		{E}{\xdef\lie at hasse@root at sum{\exceptional at root@sum{#3;#4}}}%
+		{F}{\xdef\lie at hasse@root at sum{\exceptional at root@sum{#3;#4}}}%
+		{G}{\xdef\lie at hasse@root at sum{\exceptional at root@sum{#3;#4}}}%
 	}%
-	\StrSubstitute{\my at root@sum}{.}{,}[#5]%
+	\StrSubstitute{\lie at hasse@root at sum}{.}{,}[#5]%
 }%
 %% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset
 %% of the root system G2. \rootSystemHeight{\h} uses the current root system.
@@ -2451,7 +2489,7 @@
 4;1=3.1,%
 5;1=3.2}%
 }%
-\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}%
+\NewDocumentCommand\forAllPositiveRoots{m}%
 {%
 	\rootSystemHeight{\lie at hasse@height}%
 	\foreach \root at grady in {1,...,\the\lie at hasse@height}%



More information about the tex-live-commits mailing list.