summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty')
-rw-r--r--graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty120
1 files changed, 102 insertions, 18 deletions
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