summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-10 03:03:23 +0000
committerNorbert Preining <norbert@preining.info>2024-01-10 03:03:23 +0000
commitcdb8117b8f1ac752d1927b82759c5be9f0ec0ab5 (patch)
treeebd07d36ab12076de3523b744cc87f975747f3e0 /graphics
parent140e2f7f1509acd423172e2895d0d7839e5b88c6 (diff)
CTAN sync 202401100303
Diffstat (limited to 'graphics')
-rw-r--r--graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.pdfbin200040 -> 213685 bytes
-rw-r--r--graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.tex48
-rw-r--r--graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.pdfbin195676 -> 214166 bytes
-rw-r--r--graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.tex86
-rw-r--r--graphics/pgf/contrib/thematicpuzzle/tex/thematicpuzzle.sty80
-rw-r--r--graphics/pmdraw/README.md13
-rw-r--r--graphics/pmdraw/pmdraw.pdfbin377485 -> 377618 bytes
-rw-r--r--graphics/pmdraw/pmdraw.sty531
-rw-r--r--graphics/pmdraw/pmdraw.tex19
9 files changed, 432 insertions, 345 deletions
diff --git a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.pdf b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.pdf
index d61e0bcadf..e06746fada 100644
--- a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.pdf
+++ b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.tex b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.tex
index e47d51601c..48abe55779 100644
--- a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.tex
+++ b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-en.tex
@@ -25,8 +25,8 @@
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.0}
-\def\TPdate{17/12/2023}
+\def\TPversion{0.1.1}
+\def\TPdate{09/01/2024}
\usepackage{soul}
\usepackage{codehigh}
\usepackage{tabularray}
@@ -72,14 +72,16 @@
\vfill
\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
-\ThematicPuzzle{A,B,C,D,E,F,G,H}
+\ThematicPuzzle[BgColors={yellow!50,purple!50}]{A,B,C,D,E,F,G,H}
\end{tcolorbox}
\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
\ThematicPuzzle[Thickness=1.25pt,Scale=2.75,BgColors={yellow!10,orange!10,green!10,teal!10,purple!10},Labels={Angry,Python,Cool,Apple,Battery},BorderColor=darkgray,IconsColor=teal!50!black]{\faAngry,\faPython,\faAngellist,\faApple*,\faBatteryHalf}
\end{tcolorbox}
-\vfill~
+\vfill
+
+\hfill{\footnotesize\itshape Tks to quark67 for his feedbacks.}
\pagebreak
@@ -132,9 +134,8 @@ To load the package, simply add in the preamble :
The useful and loaded packages are:
\begin{itemize}
- \item \MontreCode{tikz};
- \item \MontreCode{fontawesome5};
- \item \MontreCode{simplekv}, \MontreCode{listofitems} and \MontreCode{xstring}.
+ \item \MontreCode{tikz}, \MontreCode{fontawesome5} et \MontreCode{xintexpr} ;
+ \item \MontreCode{simplekv}, \MontreCode{listofitems} et \MontreCode{xstring}.
\end{itemize}
\vfill
@@ -143,7 +144,8 @@ The useful and loaded packages are:
\begin{quote}
\begin{verbatim}
-0.1.0: Initial release
+0.1.1 : Enhancements for colors
+0.1.0 : Initial release
\end{verbatim}
\end{quote}
@@ -151,7 +153,7 @@ The useful and loaded packages are:
\section{The macro}
-\subsection{General usage, keyx and options}
+\subsection{General usage, keys and options}
In order to create a \textit{theme puzzle}, the command is:
@@ -167,9 +169,9 @@ The \textsf{keys}, optional and between \MontreCode{[...]}, are:
\begin{itemize}
\item \MontreCode{Thickness} := thickness of the lines (\MontreCode{1pt} by default);
\item \MontreCode{Scale} := global scale of the figure (\MontreCode{1} by default);
- \item \MontreCode{BgColors} := background color (\MontreCode{empty} by default);
- \item \MontreCode{BorderColor} := color(s) (if necessary separated by \MontreCode{,}) of the borders (\MontreCode{black} by default);
- \item \MontreCode{Labels} := (optional) labels of the themes (\MontreCode{empty} by default);
+ \item \MontreCode{BgColors} := background color(s) (see paragraph on colors);
+ \item \MontreCode{BorderColor} := color(s) of the borders (\MontreCode{black} by default);
+ \item \MontreCode{Labels} := (optional) labels of the themes (\MontreCode{\{\}} by default);
\item \MontreCode{ScaleLabels} := label scale (\MontreCode{1.15} by default);
\item \MontreCode{FontLabels} := label font (\MontreCode{\textbackslash tiny\textbackslash sffamily} by default);
\item \MontreCode{IconsColor} := color of icons and labels (\MontreCode{black} by default).
@@ -177,12 +179,30 @@ The \textsf{keys}, optional and between \MontreCode{[...]}, are:
\medskip
-The optional argument, between \MontreCode{<...>}, corresponds to specific options (in \TikZ language) to pass to the created environment.
+The optional argument, between \MontreCode{<...>}, corresponds to specific options (in \TikZ\ language) to pass to the created environment.
\smallskip
The obligatory argument, between \MontreCode{\{...\}}, corresponds to the list of decorations (in the form of \textit{characters}) of the different puzzle pieces, within form \MontreCode{\{deco<1>,deco<2>,...,deco<n>\}}
+\subsection{The colors of the boxes}
+
+Concerning the color of the boxes, it's the key \MontreCode{BgColors} which is in charge.
+
+It can work in several ways:
+
+\begin{itemize}
+ \item by default it is empty, which does not color the boxes ;
+ \item it can be given in a single form, via \MontreCode{BgColors=mycolor}, in which case all the boxes are of the same color;
+ \item we can give it in the form of a list \MontreCode{BgColors=\{mycolorA,mycolorB,...\}} and:
+ \begin{itemize}
+ \item in the case where the number of colors is sufficient, they are used one after the other;
+ \item otherwise, the code takes care of \textit{repeating} the pattern of the proposed colors.
+ \end{itemize}
+\end{itemize}
+
+\pagebreak
+
\subsection{Examples}
\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
@@ -190,7 +210,7 @@ The obligatory argument, between \MontreCode{\{...\}}, corresponds to the list o
\end{tcblisting}
\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
-\ThematicPuzzle[Labels={Maths,History,Geo,Chemistry}]%
+\ThematicPuzzle[Labels={Maths,History,Geo,Chemistry},BgColors={yellow!25,red!25}]%
{\faAngry,\faArchway,\faAtlas,\faAtom}
\end{tcblisting}
diff --git a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.pdf b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.pdf
index 17569a6dd3..191204c1b1 100644
--- a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.pdf
+++ b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.tex b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.tex
index 427ce2fdc4..e8d4a20d01 100644
--- a/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.tex
+++ b/graphics/pgf/contrib/thematicpuzzle/doc/thematicpuzzle-doc-fr.tex
@@ -24,8 +24,8 @@
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.0}
-\def\TPdate{17/12/2023}
+\def\TPversion{0.1.1}
+\def\TPdate{09/01/2024}
\usepackage{soul}
\usepackage{codehigh}
\usepackage{tabularray}
@@ -71,14 +71,18 @@
\vfill
\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
-\PuzzleThemes{A,B,C,D,E,F,G,H}
+\PuzzleThemes[CouleursFond={yellow!50,purple!50}]{A,B,C,D,E,F,G,H}
\end{tcolorbox}
\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
-\PuzzleThemes[Epaisseur=1.25pt,Echelle=2.75,CouleursFond={yellow!10,orange!10,green!10,teal!10,purple!10},Labels={Probas,Stats,Python,Suites,Matrices},CouleurBord=darkgray,CouleurIcones=teal!50!black]{\ThemProbas,\ThemStats,\ThemPython,\ThemSuites,\ThemMatrices}
+\PuzzleThemes[Epaisseur=1.25pt,Echelle=2.75,CouleursFond={yellow!10,orange!10,green!10,teal!10,purple!10},Labels={Probas,Stats,Python,Suites,Matrices},CouleurBord=darkgray,CouleurIcones=teal!75!black]{\ThemProbas,\ThemStats,\ThemPython,\ThemSuites,\ThemMatrices}
\end{tcolorbox}
-\vfill~
+\vfill
+
+\hfill{\footnotesize\itshape Merci à quark67 pour ses retours.}
+
+\vspace*{5mm}
\pagebreak
@@ -131,8 +135,7 @@ Pour charger le package, il suffit d'ajouter dans le préambule :
Les packages utiles, et chargés sont :
\begin{itemize}
- \item \MontreCode{tikz} ;
- \item \MontreCode{fontawesome5} ;
+ \item \MontreCode{tikz}, \MontreCode{fontawesome5} et \MontreCode{xintexpr} ;
\item \MontreCode{simplekv}, \MontreCode{listofitems} et \MontreCode{xstring}.
\end{itemize}
@@ -142,6 +145,7 @@ Les packages utiles, et chargés sont :
\begin{quote}
\begin{verbatim}
+0.1.1 : Amélioration de la gestion des couleurs
0.1.0 : Version initiale
\end{verbatim}
\end{quote}
@@ -168,9 +172,9 @@ Les \textsf{clés}, optionnelles et entre \MontreCode{[...]}, sont :
\begin{itemize}
\item \MontreCode{Epaisseur} := épaisseur des traits (\MontreCode{1pt} par défaut) ;
\item \MontreCode{Echelle} := échelle globale de la figure (\MontreCode{1} par défaut) ;
- \item \MontreCode{CouleursFond} := couleur de fond (\MontreCode{vide} par défaut) ;
- \item \MontreCode{CouleurBord} := couleur(s) (si besoin séparées par des \MontreCode{,}) des bordures (\MontreCode{black} par défaut) ;
- \item \MontreCode{Labels} := libellés (optionnels) des thèmes (\MontreCode{vide} par défaut) ;
+ \item \MontreCode{CouleursFond} := couleur(s) de fond (voir paragraphe sur les couleurs) ;
+ \item \MontreCode{CouleurBord} := couleur des bordures (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Labels} := libellés (optionnels) des thèmes (\MontreCode{\{\}} par défaut) ;
\item \MontreCode{EchelleLabels} := échelle des libellés (\MontreCode{1.15} par défaut) ;
\item \MontreCode{PoliceLabels} := police des libellés (\MontreCode{\textbackslash tiny\textbackslash sffamily} par défaut) ;
\item \MontreCode{CouleurIcones} := couleur des icônes et les libellés (\MontreCode{black} par défaut).
@@ -184,12 +188,28 @@ L'argument optionnel, entre \MontreCode{<...>}, correspond à des options spéci
L'argument obligatoire, entre \MontreCode{\{...\}}, correspond à la liste des décorations (sous forme de \textit{caractères}) des différentes pièces de puzzle, sous la forme \MontreCode{\{Déco<1>,Déco<2>,...,Déco<n>\}}
+\subsection{Les couleurs des cases}
+
+Concernant la couleur de cases, c'est la clé \MontreCode{CouleursFond} qui en est en charge.
+
+Elle peut fonctionner de plusieurs manières :
+
+\begin{itemize}
+ \item par défaut elle est vide, ce qui ne colorie pas les cases ;
+ \item on peut la donner sous forme unique, via \MontreCode{CouleursFond=macouleur}, au quel cas toutes les cases sont de la même couleur ;
+ \item on peut la donner sous forme d'une liste \MontreCode{CouleursFond=\{macouleurA,macouleurB,...\}} et :
+ \begin{itemize}
+ \item dans le cas où le nombre de couleurs est suffisant, elles sont utilisées l'une après l'autre ;
+ \item dans le cas contraire, le code se charge de \textit{répéter} le motif des couleurs proposées.
+ \end{itemize}
+\end{itemize}
+
\subsection{Raccourcis pour certaines décorations}
-Des \textit{raccourcis} francisés ont été créés dans le package, pour des saisies simplifiées d décoration :
+Des \textit{raccourcis} francisés ont été créés dans le package, pour des saisies simplifiées des décorations :
\begin{center}
- \begin{tblr}{hlines,colspec={Q[m,l]Q[m,l]}}
+ \begin{tblr}{hlines,colspec={Q[m,l]Q[m,c]}}
\fakeverb{\ThemProbas} & \ThemProbas \\
\fakeverb{\ThemStats} & \ThemStats \\
\fakeverb{\ThemChimie} & \ThemChimie \\
@@ -200,6 +220,9 @@ Des \textit{raccourcis} francisés ont été créés dans le package, pour des s
\fakeverb{\ThemCalculs} & \ThemCalculs \\
\fakeverb{\ThemMatrices} & \ThemMatrices \\
\fakeverb{\ThemGeometrie} & \ThemGeometrie \\
+ \end{tblr}
+ \hspace{1cm}
+ \begin{tblr}{hlines,colspec={Q[m,l]Q[m,c]}}
\fakeverb{\ThemEspace} & \ThemEspace \\
\fakeverb{\ThemPhysique} & \ThemPhysique \\
\fakeverb{\ThemFonctions} & \ThemFonctions \\
@@ -219,7 +242,8 @@ Des \textit{raccourcis} francisés ont été créés dans le package, pour des s
\end{tcblisting}
\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
-\PuzzleThemes[Labels={Maths,Histoire,Géo,Chimie}]{\faAngry,\faArchway,\faAtlas,\faAtom}
+\PuzzleThemes[Labels={Maths,Histoire,Géo,Chimie},CouleursFond={yellow!25,red!25}]%
+ {\faAngry,\faArchway,\faAtlas,\faAtom}
\end{tcblisting}
\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
@@ -240,8 +264,42 @@ Des \textit{raccourcis} francisés ont été créés dans le package, pour des s
[Epaisseur=2pt,Echelle=1.25,
CouleursFond={yellow!10,orange!10,red!10,teal!10,purple!10},
Labels={Probas,Stats,Python,Suites,Matrices},CouleurBord=brown,
- CouleurIcones=teal!50!black]%
+ CouleurIcones=teal!75!black]%
{\ThemProbas,\ThemStats,\ThemPython,\ThemSuites,\ThemMatrices}
\end{tcblisting}
+\pagebreak
+
+\section{La commande en anglais}
+
+Le package propose également la commande et ses clés en version anglaise.
+
+\begin{quote}
+\begin{verbatim}
+%----commande anglaise
+\ThematicPuzzle[clés]<options tikz>{liste des décorations}
+\end{verbatim}
+\end{quote}
+
+Les \textsf{clés}, toujours optionnelles et entre \MontreCode{[...]}, sont :
+
+\begin{itemize}
+ \item \MontreCode{Thickness} ;
+ \item \MontreCode{Scale} ;
+ \item \MontreCode{BgColors} ;
+ \item \MontreCode{BorderColor} ;
+ \item \MontreCode{Labels} ;
+ \item \MontreCode{ScaleLabels} ;
+ \item \MontreCode{FontLabels} ;
+ \item \MontreCode{IconsColor}.
+\end{itemize}
+
+\begin{tcblisting}{colframe=lightgray,colback=lightgray!5}
+\ThematicPuzzle%
+ [Thickness=2pt,Scale=1.25,
+ BgColors={yellow!10,orange!10,red!10,teal!10,purple!10,gray!10},
+ IconsColor=teal!75!black]%
+ {P,Y,T,H,O,N}
+\end{tcblisting}
+
\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/thematicpuzzle/tex/thematicpuzzle.sty b/graphics/pgf/contrib/thematicpuzzle/tex/thematicpuzzle.sty
index 96576c24f3..763fa906ee 100644
--- a/graphics/pgf/contrib/thematicpuzzle/tex/thematicpuzzle.sty
+++ b/graphics/pgf/contrib/thematicpuzzle/tex/thematicpuzzle.sty
@@ -2,13 +2,15 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{thematicpuzzle}[2023/12/17 0.1.0 Present 'puzzle' with different thematics, in TikZ]
+\ProvidesPackage{thematicpuzzle}[2024/01/09 0.1.1 Present 'puzzle' with different thematics, in TikZ]
+% 0.1.1 Enhancments for colors
% 0.1.0 Initial version
%====PACKAGES
\RequirePackage{tikz}
\RequirePackage{simplekv}
\RequirePackage{xstring}
+\RequirePackage{xintexpr}
\RequirePackage{listofitems}
\RequirePackage{fontawesome5}
@@ -69,11 +71,27 @@
\readlist*\PuzzleListeAlea{\puzztmpalea}%
\IfSubStr{\puzzthmbg}{,}%
{%
- \readlist*\PuzzleListeCouleurs{\puzzthmbg}%
+ \StrCount{\puzzthmbg}{,}[\puzznbvirg]%
+ \xintifboolexpr{\puzznbvirg < \PuzzleListeThemeslen}%
+ {%
+ \xdef\nbrepet{\fpeval{round(\PuzzleListeThemeslen/(\puzznbvirg+1),0,1)}}%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ \foreach \i in {2,...,\nbrepet}{%
+ \xdef\puzzlstcol{\puzzlstcol,\puzzthmbg}%
+ }%
+ }%
+ {%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ }%
}%
{%
- \xdef\puzzthmbgcol{\puzzthmbg}%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ \foreach \i in {2,...,\PuzzleListeThemeslen}{%
+ \xdef\puzzlstcol{\puzzlstcol,\puzzthmbg}%
+ }%
}%
+ \readlist*\PuzzleListeCouleurs{\puzzlstcol}%
+ %environnement tikz
\begin{tikzpicture}[scale=\puzzthmscale,transform shape,#2]%
%styles
\tikzset{bordure/.style={\puzzthmbc,line width={0.5*\puzzthmscale*\puzzthmthick}}}%
@@ -82,11 +100,7 @@
{\tikzset{fond/.style={}}}%
{\tikzset{fond/.style={fill=\puzzthmbgcol}}}%
%1ère pièce
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[1]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[1]{\puzzthmbgcol}%
\itemtomacro\PuzzleListeAlea[1]{\tmprand}%
\draw[bordure,fond] (\tmprounded,0) -- (1,0) .. controls (1+\tmprand*0.66*0.00,0.0) and (1+\tmprand*0.66*-0.04,0.4) ..
(1+\tmprand*0.66*0.04,0.4) .. controls (1+\tmprand*0.66*0.11,0.4) and (1+\tmprand*0.66*0.26,0.2) ..
@@ -98,11 +112,7 @@
\xdef\ipu{\inteval{\i+1}}%
\itemtomacro\PuzzleListeAlea[\i]{\tmprandg}%
\itemtomacro\PuzzleListeAlea[\ipu]{\tmprandd}%
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[\ipu]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[\ipu]{\puzzthmbgcol}%
\draw[bordure,fond] (\i,0) .. controls (\i+\tmprandg*0.66*0.00,0.0) and (\i+\tmprandg*0.66*-0.04,0.4) ..
(\i+\tmprandg*0.66*0.04,0.4) .. controls (\i+\tmprandg*0.66*0.11,0.4) and (\i+\tmprandg*0.66*0.26,0.2) ..
(\i+\tmprandg*0.66*0.26,0.5) .. controls (\i+\tmprandg*0.66*0.26,0.8) and (\i+\tmprandg*0.66*0.11,0.6) ..
@@ -115,11 +125,7 @@
(\ipu+\tmprandd*0.66*0.00,0.0) -- (\ipu,0) -- (\i,0);
}%
%dernière pièce
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[-1]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[\PuzzleListeThemeslen]{\puzzthmbgcol}%
\itemtomacro\PuzzleListeAlea[-1]{\tmprand}%
\draw[bordure,fond] (\puzzthmnb-1,0) .. controls (\puzzthmnb-1+\tmprand*0.66*0.00,0.0) and (\puzzthmnb-1+\tmprand*0.66*-0.04,0.4) ..
(\puzzthmnb-1+\tmprand*0.66*0.04,0.4) .. controls (\puzzthmnb-1+\tmprand*0.66*0.11,0.4) and (\puzzthmnb-1+\tmprand*0.66*0.26,0.2) ..
@@ -177,11 +183,27 @@
\readlist*\PuzzleListeAlea{\puzztmpalea}%
\IfSubStr{\puzzthmbg}{,}%
{%
- \readlist*\PuzzleListeCouleurs{\puzzthmbg}%
+ \StrCount{\puzzthmbg}{,}[\puzznbvirg]%
+ \xintifboolexpr{\puzznbvirg < \PuzzleListeThemeslen}%
+ {%
+ \xdef\nbrepet{\fpeval{round(\PuzzleListeThemeslen/(\puzznbvirg+1),0,1)}}%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ \foreach \i in {2,...,\nbrepet}{%
+ \xdef\puzzlstcol{\puzzlstcol,\puzzthmbg}%
+ }%
+ }%
+ {%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ }%
}%
{%
- \xdef\puzzthmbgcol{\puzzthmbg}%
+ \xdef\puzzlstcol{\puzzthmbg}%
+ \foreach \i in {2,...,\PuzzleListeThemeslen}{%
+ \xdef\puzzlstcol{\puzzlstcol,\puzzthmbg}%
+ }%
}%
+ \readlist*\PuzzleListeCouleurs{\puzzlstcol}%
+ %environnement tikz
\begin{tikzpicture}[scale=\puzzthmscale,transform shape,#2]%
%styles
\tikzset{border/.style={\puzzthmbc,line width={0.5*\puzzthmscale*\puzzthmthick}}}%
@@ -190,11 +212,7 @@
{\tikzset{background/.style={}}}%
{\tikzset{background/.style={fill=\puzzthmbgcol}}}%
%1ère pièce
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[1]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[1]{\puzzthmbgcol}%
\itemtomacro\PuzzleListeAlea[1]{\tmprand}%
\draw[border,background] (\tmprounded,0) -- (1,0) .. controls (1+\tmprand*0.66*0.00,0.0) and (1+\tmprand*0.66*-0.04,0.4) ..
(1+\tmprand*0.66*0.04,0.4) .. controls (1+\tmprand*0.66*0.11,0.4) and (1+\tmprand*0.66*0.26,0.2) ..
@@ -206,11 +224,7 @@
\xdef\ipu{\inteval{\i+1}}%
\itemtomacro\PuzzleListeAlea[\i]{\tmprandg}%
\itemtomacro\PuzzleListeAlea[\ipu]{\tmprandd}%
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[\ipu]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[\ipu]{\puzzthmbgcol}%
\draw[border,background] (\i,0) .. controls (\i+\tmprandg*0.66*0.00,0.0) and (\i+\tmprandg*0.66*-0.04,0.4) ..
(\i+\tmprandg*0.66*0.04,0.4) .. controls (\i+\tmprandg*0.66*0.11,0.4) and (\i+\tmprandg*0.66*0.26,0.2) ..
(\i+\tmprandg*0.66*0.26,0.5) .. controls (\i+\tmprandg*0.66*0.26,0.8) and (\i+\tmprandg*0.66*0.11,0.6) ..
@@ -223,11 +237,7 @@
(\ipu+\tmprandd*0.66*0.00,0.0) -- (\ipu,0) -- (\i,0);
}%
%dernière pièce
- \IfSubStr{\puzzthmbg}{,}%
- {%
- \itemtomacro\PuzzleListeCouleurs[-1]{\puzzthmbgcol}%
- }%
- {}%
+ \itemtomacro\PuzzleListeCouleurs[\PuzzleListeThemeslen]{\puzzthmbgcol}%
\itemtomacro\PuzzleListeAlea[-1]{\tmprand}%
\draw[border,background] (\puzzthmnb-1,0) .. controls (\puzzthmnb-1+\tmprand*0.66*0.00,0.0) and (\puzzthmnb-1+\tmprand*0.66*-0.04,0.4) ..
(\puzzthmnb-1+\tmprand*0.66*0.04,0.4) .. controls (\puzzthmnb-1+\tmprand*0.66*0.11,0.4) and (\puzzthmnb-1+\tmprand*0.66*0.26,0.2) ..
diff --git a/graphics/pmdraw/README.md b/graphics/pmdraw/README.md
index f23321eb2a..bf3990436a 100644
--- a/graphics/pmdraw/README.md
+++ b/graphics/pmdraw/README.md
@@ -3,10 +3,10 @@ pmdraw
<!--
-README V1.1 2023-11-14
+README V1.2 2024-01-10
*------------------------------*
-|3````````````````````````````7|
+|3```````````````````````````2|
|`````____````____`````````````|
|````|MFMF\ /MFMF|````````````|
|````|MF|MF\/MF|MF|````````````|
@@ -18,12 +18,11 @@ README V1.1 2023-11-14
|``````````````|MF|````````````|
|``````````````|MF|````````````|
|``````````````|MF|````````````|
-|8````````````````````````````7|
+|3````````````````````````````4|
*------------------------------*
-->
-The `pmdraw` package allows you to draw elements of the Partition
-Monoids, commonly referred to as diagrams. The package provides a lot of
+The `pmdraw` package allows you to draw elements of the diagram monoids, commonly referred to as diagrams. The package provides a lot of
flexibility to draw most diagrams and can be customised as needed.
The package makes use of the `tikz` and `keyval` packages.
@@ -54,7 +53,7 @@ Author
License
-------
-Copyright 2023-10-16 Matthias Fresacher
+Copyright 2023-10-16 (original release) & 2024, Matthias Fresacher
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -72,4 +71,4 @@ Contents
This work consists of the files `pmdraw.sty`, `pmdraw.tex` and the
examples in the folder `examples`, in addition to the derived file
-`pmdraw.pdf`.
+`pmdraw.pdf`. \ No newline at end of file
diff --git a/graphics/pmdraw/pmdraw.pdf b/graphics/pmdraw/pmdraw.pdf
index 6335dcefb5..de0d091292 100644
--- a/graphics/pmdraw/pmdraw.pdf
+++ b/graphics/pmdraw/pmdraw.pdf
Binary files differ
diff --git a/graphics/pmdraw/pmdraw.sty b/graphics/pmdraw/pmdraw.sty
index fb2c77e70c..20d8bad74b 100644
--- a/graphics/pmdraw/pmdraw.sty
+++ b/graphics/pmdraw/pmdraw.sty
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{pmdraw}[2023-11-14 v1.1 pmdraw]
+\ProvidesPackage{pmdraw}[2024-01-10 v1.2 pmdraw]
% *------------------------------*
-% |0````````````````````````````4|
+% |4````````````````````````````7|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -14,7 +14,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |9````````````````````````````0|
+% |8````````````````````````````4|
% *------------------------------*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36,125 +36,125 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\pmdraw@braceLabel}{} % Label of brace
+\newcommand{\pmdraw@braceLabel}{}% Label of brace
-\newcommand{\pmdraw@diagSep}{1} % Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
+\newcommand{\pmdraw@diagSep}{1}% Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
-\newcommand{\pmdraw@drawAedgesOptions}{} % Draw options for added edges in product diagram
-\newcommand{\pmdraw@drawAedges}[2]{ % Draws added edges in product diagram from #1 vertex to #2 vertex, assumes #1<#2
- \foreach \x in {#1,...,#2} { % For each vertex in range
- \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep); % Draw concatenation edge
- }
- \pmdraw@AedgesLoop % Restart for loop
+\newcommand{\pmdraw@drawAedgesOptions}{}% Draw options for added edges in product diagram
+\newcommand{\pmdraw@drawAedges}[2]{% Draws added edges in product diagram from #1 vertex to #2 vertex, assumes #1<#2
+ \foreach \x in {#1,...,#2} {% For each vertex in range
+ \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge
+ }%
+ \pmdraw@AedgesLoop% Restart for loop
}
-\newcommand{\pmdraw@drawBraceDrawOptions}{} % Draw options for brace
-\newcommand{\pmdraw@drawBraceNodeOptions}{} % Node options for brace
-\newcommand{\pmdraw@drawBraceDefault}[3]{ % Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2 - DEFAULT
- \ifnum\pmdraw@ifProdDiag=1 % If drawing a product diagram or if placing brace above diagram
+\newcommand{\pmdraw@drawBraceDrawOptions}{}% Draw options for brace
+\newcommand{\pmdraw@drawBraceNodeOptions}{}% Node options for brace
+\newcommand{\pmdraw@drawBraceDefault}[3]{% Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2 - DEFAULT
+ \ifnum\pmdraw@ifProdDiag=1% If drawing a product diagram or if placing brace above diagram
\draw[
very thick,
decorate,
decoration={calligraphic brace,amplitude=6pt},
apply style/.expand once=\pmdraw@drawBraceDrawOptions
- ] (#1-0.17,\pmdraw@rowSep+0.5) -- (#2+0.17,\pmdraw@rowSep+0.5)
+ ] (#1-0.17,\pmdraw@rowSep+0.5) -- (#2+0.17,\pmdraw@rowSep+0.5)
node[
pos=0.5,
above=6pt,
apply style/.expand once=\pmdraw@drawBraceNodeOptions
- ] {\(#3\)}; % Draw brace on top of diagram
- \else % If not drawing a product diagram or if placing brace below diagram
+ ] {\(#3\)};% Draw brace on top of diagram
+ \else% If not drawing a product diagram or if placing brace below diagram
\draw[
very thick,
decorate,
decoration={calligraphic brace,mirror,amplitude=6pt},
apply style/.expand once=\pmdraw@drawBraceDrawOptions
- ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
+ ] (#1-0.17,-0.5) -- (#2+0.17,-0.5)
node[
pos=0.5,
below=6pt,
apply style/.expand once=\pmdraw@drawBraceNodeOptions
- ] {\(#3\)}; % Draw brace on bottom of diagram
+ ] {\(#3\)};% Draw brace on bottom of diagram
\fi%
}
-\let\pmdraw@drawBrace\pmdraw@drawBraceDefault % Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2
-
-\newcommand{\pmdraw@drawDotsDrawOptions}{} % Draw options for dots between bricks
-\newcommand{\pmdraw@drawDotsNodeOptions}{} % Node options for dots between bricks
-\newcommand{\pmdraw@drawDotsDefault}[2]{ % Draws dots between bricks at (#1,#2) - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawDotsDrawOptions] (#1,#2) node[apply style/.expand once=\pmdraw@drawDotsNodeOptions] {\(\dots\)};
-}
-\let\pmdraw@drawDots\pmdraw@drawDotsDefault % Draws dots between bricks at (#1,#2)
-
-\newcommand{\pmdraw@drawLabelBDrawOptions}{} % Draw options for label of a vertex in bottom row
-\newcommand{\pmdraw@drawLabelBNodeOptions}{} % Node options for label of a vertex in bottom row
-\newcommand{\pmdraw@drawLabelBottomDefault}[3]{ % For bottom row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawLabelBDrawOptions] (#1,#2) node[below=6pt,apply style/.expand once=\pmdraw@drawLabelBNodeOptions] {\(#3'\)};
-}
-\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault % For bottom row, draws the label #3 for a vertex at (#1,#2)
-
-\newcommand{\pmdraw@drawLabelTDrawOptions}{} % Draw options for label of a vertex in top row
-\newcommand{\pmdraw@drawLabelTNodeOptions}{} % Node options for label of a vertex in top row
-\newcommand{\pmdraw@drawLabelTopDefault}[3]{ % For top row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawLabelTDrawOptions] (#1,#2) node[above=6pt,apply style/.expand once=\pmdraw@drawLabelTNodeOptions] {\(#3\)};
-}
-\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault % For top row, draws the label #3 for a vertex at (#1,#2)
-
-\newcommand{\pmdraw@drawLedgesDrawOptions}{} % Draw options for lower non-transversal edges
-\newcommand{\pmdraw@drawLedgesDrawDefault}[2]{ % Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight}); % Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}); % Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight}); % Draw right arc
-}
-\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault % Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
-
-\newcommand{\pmdraw@drawTedgesDrawOptions}{} % Draw options for transversal edges
-\newcommand{\pmdraw@drawTedgesDrawDefault}[2]{ % Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row - DEFAULT
- \ifnum\pmdraw@ifTedgeHorizontal=0 % If drawing a straight line edge
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1,\pmdraw@rowSep) -- (#2,0); % Draw straight line
- \else % If transversal edge is drawn horizontally
- \ifnum#1>#2 % If edge goes from top right to bottom left
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (180:90:\pmdraw{Tlevel}); % Draw bottom arch
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2+\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
- \else % If edge goes from top left to bottom right
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (0:90:\pmdraw{Tlevel}); % Draw bottom arch
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2-\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel}); % Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}}); % Draw top arc
+\let\pmdraw@drawBrace\pmdraw@drawBraceDefault% Draws brace a brace starting from #1 vertex to #2 vertex with label #3, assumes #1<#2
+
+\newcommand{\pmdraw@drawDotsDrawOptions}{}% Draw options for dots between bricks
+\newcommand{\pmdraw@drawDotsNodeOptions}{}% Node options for dots between bricks
+\newcommand{\pmdraw@drawDotsDefault}[2]{% Draws dots between bricks at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawDotsDrawOptions] (#1,#2) node[apply style/.expand once=\pmdraw@drawDotsNodeOptions] {\(\dots\)};%
+}
+\let\pmdraw@drawDots\pmdraw@drawDotsDefault% Draws dots between bricks at (#1,#2)
+
+\newcommand{\pmdraw@drawLabelBDrawOptions}{}% Draw options for label of a vertex in bottom row
+\newcommand{\pmdraw@drawLabelBNodeOptions}{}% Node options for label of a vertex in bottom row
+\newcommand{\pmdraw@drawLabelBottomDefault}[3]{% For bottom row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLabelBDrawOptions] (#1,#2) node[below=6pt,apply style/.expand once=\pmdraw@drawLabelBNodeOptions] {\(#3'\)};%
+}
+\let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault% For bottom row, draws the label #3 for a vertex at (#1,#2)
+
+\newcommand{\pmdraw@drawLabelTDrawOptions}{}% Draw options for label of a vertex in top row
+\newcommand{\pmdraw@drawLabelTNodeOptions}{}% Node options for label of a vertex in top row
+\newcommand{\pmdraw@drawLabelTopDefault}[3]{% For top row, draws the label #3 for a vertex at (#1,#2) - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLabelTDrawOptions] (#1,#2) node[above=6pt,apply style/.expand once=\pmdraw@drawLabelTNodeOptions] {\(#3\)};%
+}
+\let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault% For top row, draws the label #3 for a vertex at (#1,#2)
+
+\newcommand{\pmdraw@drawLedgesDrawOptions}{}% Draw options for lower non-transversal edges
+\newcommand{\pmdraw@drawLedgesDrawDefault}[2]{% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1,0) arc (180:90:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawLedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw{edgeHeight}) arc (90:0:\pmdraw{edgeHeight});% Draw right arc
+}
+\let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
+
+\newcommand{\pmdraw@drawTedgesDrawOptions}{}% Draw options for transversal edges
+\newcommand{\pmdraw@drawTedgesDrawDefault}[2]{% Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row - DEFAULT
+ \ifnum\pmdraw@ifTedgeHorizontal=0% If drawing a straight line edge
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1,\pmdraw@rowSep) -- (#2,0);% Draw straight line
+ \else% If transversal edge is drawn horizontally
+ \ifnum#1>#2% If edge goes from top right to bottom left
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (180:90:\pmdraw{Tlevel});% Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2+\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1-\pmdraw@rowSep+\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1-\pmdraw@rowSep+\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:360:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
+ \else% If edge goes from top left to bottom right
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2,0) arc (0:90:\pmdraw{Tlevel});% Draw bottom arch
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#2-\pmdraw{Tlevel},\pmdraw{Tlevel}) -- (#1+\pmdraw@rowSep-\pmdraw{Tlevel}, \pmdraw{Tlevel});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawTedgesDrawOptions] (#1+\pmdraw@rowSep-\pmdraw{Tlevel},\pmdraw{Tlevel}) arc (270:180:{\pmdraw@rowSep-\pmdraw{Tlevel}});% Draw top arc
\fi%
- \renewcommand{\pmdraw@ifTedgeHorizontal}{0} % Reset flag to default
+ \renewcommand{\pmdraw@ifTedgeHorizontal}{0}% Reset flag to default
\fi%
}
-\let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault % Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row
+\let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% Draws transversal edge from #1 vertex in top row to #2 vertex in bottom row
-\newcommand{\pmdraw@drawUedgesDrawOptions}{} % Draw options for upper non-transversal edges
-\newcommand{\pmdraw@drawUedgesDrawDefault}[2]{ % Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight}); % Draw left arch
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}); % Draw straight line
- \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight}); % Draw right arc
+\newcommand{\pmdraw@drawUedgesDrawOptions}{}% Draw options for upper non-transversal edges
+\newcommand{\pmdraw@drawUedgesDrawDefault}[2]{% Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 - DEFAULT
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1,\pmdraw@rowSep) arc (180:270:\pmdraw{edgeHeight});% Draw left arch
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#1+\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) -- (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight});% Draw straight line
+ \draw[apply style/.expand once=\pmdraw@drawUedgesDrawOptions] (#2-\pmdraw{edgeHeight},\pmdraw@rowSep-\pmdraw{edgeHeight}) arc (270:360:\pmdraw{edgeHeight});% Draw right arc
}
-\let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault % Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
+\let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault% Draws upper non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2
-\newcommand{\pmdraw@drawVertexOptions}{} % Draw options for vertices
-\newcommand{\pmdraw@drawVertex}[2]{ % Draws a vertex at (#1,#2)
- \fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);
+\newcommand{\pmdraw@drawVertexOptions}{}% Draw options for vertices
+\newcommand{\pmdraw@drawVertex}[2]{% Draws a vertex at (#1,#2)
+ \fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);%
}
-\newcommand{\pmdraw@hookAfterBrick}{} % Hook after drawing a brick
-\newcommand{\pmdraw@hookAfterDiagram}{} % Hook after drawing a diagram
-\newcommand{\pmdraw@hookBeforeBrick}{} % Hook before drawing a brick
-\newcommand{\pmdraw@hookBeforeDiagram}{} % Hook before drawing a diagram
+\newcommand{\pmdraw@hookAfterBrick}{}% Hook after drawing a brick
+\newcommand{\pmdraw@hookAfterDiagram}{}% Hook after drawing a diagram
+\newcommand{\pmdraw@hookBeforeBrick}{}% Hook before drawing a brick
+\newcommand{\pmdraw@hookBeforeDiagram}{}% Hook before drawing a diagram
-\newcommand{\pmdraw@ifDiagWDots}{0} % Boolean if drawing a diagram with dots
-\newcommand{\pmdraw@ifEdgesFirst}{0} % Boolean if drawing edges before vertices
-\newcommand{\pmdraw@ifGrid}{0} % Boolean if displaying helper grid
-\newcommand{\pmdraw@ifLabelsB}{0} % Boolean if displaying labels for vertices in bottom row
-\newcommand{\pmdraw@ifLabelsT}{0} % Boolean if displaying labels for vertices in top row
-\newcommand{\pmdraw@ifProdDiag}{0} % Boolean if drawing a product diagram
-\newcommand{\pmdraw@ifTedgesFirst}{0} % Boolean if drawing transversal edges before non-transversal edges
-\newcommand{\pmdraw@ifTedgeHorizontal}{0} % Boolean if transversal edge is drawn horizontally
+\newcommand{\pmdraw@ifDiagWDots}{0}% Boolean if drawing a diagram with dots
+\newcommand{\pmdraw@ifEdgesFirst}{0}% Boolean if drawing edges before vertices
+\newcommand{\pmdraw@ifGrid}{0}% Boolean if displaying helper grid
+\newcommand{\pmdraw@ifLabelsB}{0}% Boolean if displaying labels for vertices in bottom row
+\newcommand{\pmdraw@ifLabelsT}{0}% Boolean if displaying labels for vertices in top row
+\newcommand{\pmdraw@ifProdDiag}{0}% Boolean if drawing a product diagram
+\newcommand{\pmdraw@ifTedgesFirst}{0}% Boolean if drawing transversal edges before non-transversal edges
+\newcommand{\pmdraw@ifTedgeHorizontal}{0}% Boolean if transversal edge is drawn horizontally
-\newcommand{\pmdraw@NTedgesHeight}{-1000} % Height of non-transversal edges if manually set, a value of -1000 sets height automatically
+\newcommand{\pmdraw@NTedgesHeight}{-1000}% Height of non-transversal edges if manually set, a value of -1000 sets height automatically
\newcommand{\pmdraw@reset}{% Resets user keys and other flags to default values after drawing diagram
\renewcommand{\pmdraw@diagSep}{1}% Resets vertical space between product diagrams
@@ -165,7 +165,7 @@
\renewcommand{\pmdraw@ifGrid}{0}% Hides grid
\renewcommand{\pmdraw@ifDiagWDots}{0}% Reset if drawing a diagram with dots
\renewcommand{\pmdraw@rowSep}{2}% Resets vertical separation between rows of vertices in brick
- \renewcommand{\pmdraw@tikz}{} % Resets tikz options
+ \renewcommand{\pmdraw@tikz}{}% Resets tikz options
\setcounter{pmdraw@blankB}{0}% Resets number of blank vertices in bottom row to the left of brick
\setcounter{pmdraw@blankT}{0}% Resets number of blank vertices in top row to the left of brick
\setcounter{pmdraw@bottomShift}{0}% Resets shift on right end of bottom row of brick
@@ -173,9 +173,9 @@
\setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram
}
-\newcommand{\pmdraw@rowSep}{2} % Vertical separation between rows of vertices in brick
+\newcommand{\pmdraw@rowSep}{2}% Vertical separation between rows of vertices in brick
-\newcommand{\pmdraw@tikz}{} % Tikz options
+\newcommand{\pmdraw@tikz}{}% Tikz options
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -185,32 +185,32 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcounter{pmdraw@blankB} % Number of blank vertices in bottom row to the left of brick
-\newcounter{pmdraw@blankT} % Number of blank vertices in top row to the left of brick
+\newcounter{pmdraw@blankB}% Number of blank vertices in bottom row to the left of brick
+\newcounter{pmdraw@blankT}% Number of blank vertices in top row to the left of brick
-\newcounter{pmdraw@bottomTotal} % Size of bottom row of brick
-\newcounter{pmdraw@bottomShift} % Shift on right end of bottom row of brick
+\newcounter{pmdraw@bottomTotal}% Size of bottom row of brick
+\newcounter{pmdraw@bottomShift}% Shift on right end of bottom row of brick
-\newcounter{pmdraw@braceL} % Left starting vertex of brace
-\newcounter{pmdraw@braceR} % Right terminating vertex of brace
+\newcounter{pmdraw@braceL}% Left starting vertex of brace
+\newcounter{pmdraw@braceR}% Right terminating vertex of brace
-\newcounter{pmdraw@brickShift} % Shift required for bricks after dots in diagram with dots
+\newcounter{pmdraw@brickShift}% Shift required for bricks after dots in diagram with dots
-\newcounter{pmdraw@degreeB} % Degree (number of vertices) of bottom row of brick
-\newcounter{pmdraw@degreeT} % Degree (number of vertices) of top row of brick
+\newcounter{pmdraw@degreeB}% Degree (number of vertices) of bottom row of brick
+\newcounter{pmdraw@degreeT}% Degree (number of vertices) of top row of brick
-\newcounter{pmdraw@ifDiagWDotsFirst} % In drawing with dots, boolean if drawing first brick of diagram
+\newcounter{pmdraw@ifDiagWDotsFirst}% In drawing with dots, boolean if drawing first brick of diagram
\setcounter{pmdraw@ifDiagWDotsFirst}{1}
-\newcounter{pmdraw@labelStartB} % Starting value of labels of vertices in bottom row
+\newcounter{pmdraw@labelStartB}% Starting value of labels of vertices in bottom row
\setcounter{pmdraw@labelStartB}{1}
-\newcounter{pmdraw@labelStartT} % Starting value of labels of vertices in top row
+\newcounter{pmdraw@labelStartT}% Starting value of labels of vertices in top row
\setcounter{pmdraw@labelStartT}{1}
-\newcounter{pmdraw@NTlevel} % Level corresponding to a height for a non-transversal edge
+\newcounter{pmdraw@NTlevel}% Level corresponding to a height for a non-transversal edge
-\newcounter{pmdraw@topTotal} % Size of top row of brick
-\newcounter{pmdraw@topShift} % Shift on right end of top row of brick
+\newcounter{pmdraw@topTotal}% Size of top row of brick
+\newcounter{pmdraw@topShift}% Shift on right end of top row of brick
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -224,167 +224,166 @@
% https://tex.stackexchange.com/a/64237
\tikzset{apply style/.code={\tikzset{#1}}}
-\define@key{pmdraw@brick}{degree}{ % Sets degree (number of vertices per row) of diagram
- \setcounter{pmdraw@degreeB}{#1} % Sets degree (number of vertices per row) for bottom row
- \setcounter{pmdraw@degreeT}{#1} % Sets degree (number of vertices per row) for top row
+\define@key{pmdraw@brick}{degree}{% Sets degree (number of vertices per row) of diagram
+ \setcounter{pmdraw@degreeB}{#1}% Sets degree (number of vertices per row) for bottom row
+ \setcounter{pmdraw@degreeT}{#1}% Sets degree (number of vertices per row) for top row
}
-\define@key{pmdraw@brick}{degree bottom}{ % Sets degree (number of vertices per row) for bottom row
- \setcounter{pmdraw@degreeB}{#1}
+\define@key{pmdraw@brick}{degree bottom}{% Sets degree (number of vertices per row) for bottom row
+ \setcounter{pmdraw@degreeB}{#1}%
}
-\define@key{pmdraw@brick}{degree top}{ % Sets degree (number of vertices per row) for top row
- \setcounter{pmdraw@degreeT}{#1}
+\define@key{pmdraw@brick}{degree top}{% Sets degree (number of vertices per row) for top row
+ \setcounter{pmdraw@degreeT}{#1}%
}
-\define@key{pmdraw@brick}{blank bottom}{ % Sets the number of blank vertices on left of bottom row
- \setcounter{pmdraw@blankB}{#1}
+\define@key{pmdraw@brick}{blank bottom}{% Sets the number of blank vertices on left of bottom row
+ \setcounter{pmdraw@blankB}{#1}%
}
-\define@key{pmdraw@brick}{blank top}{ % Sets the number of blank vertices on left of top row
- \setcounter{pmdraw@blankT}{#1}
+\define@key{pmdraw@brick}{blank top}{% Sets the number of blank vertices on left of top row
+ \setcounter{pmdraw@blankT}{#1}%
}
-\define@key{pmdraw@brick}{row sep}{ % Sets vertical separation between rows of vertices in brick
- \renewcommand{\pmdraw@rowSep}{#1}
+\define@key{pmdraw@brick}{row sep}{% Sets vertical separation between rows of vertices in brick
+ \renewcommand{\pmdraw@rowSep}{#1}%
}
-\define@key{pmdraw@brick}{vertices}{ % Sets the draw options of vertices
- \renewcommand{\pmdraw@drawVertexOptions}{#1}
+\define@key{pmdraw@brick}{vertices}{% Sets the draw options of vertices
+ \renewcommand{\pmdraw@drawVertexOptions}{#1}%
}
-\define@key{pmdraw@brick}{vertices options}{ % Sets the draw command of vertices
- \renewcommand{\pmdraw@drawVertex}[2]{#1}
+\define@key{pmdraw@brick}{vertices options}{% Sets the draw command of vertices
+ \renewcommand{\pmdraw@drawVertex}[2]{#1}%
}
-\define@key{pmdraw@brick}{labels}[]{ % Draws labels for vertices
- \renewcommand{\pmdraw@ifLabelsB}{1}
- \renewcommand{\pmdraw@ifLabelsT}{1}
+\define@key{pmdraw@brick}{labels}[]{% Draws labels for vertices
+ \renewcommand{\pmdraw@ifLabelsB}{1}%
+ \renewcommand{\pmdraw@ifLabelsT}{1}%
}
-\define@key{pmdraw@brick}{labels bottom}[]{ % Draws labels for bottom vertices
- \renewcommand{\pmdraw@ifLabelsB}{1}
+\define@key{pmdraw@brick}{labels bottom}[]{% Draws labels for bottom vertices
+ \renewcommand{\pmdraw@ifLabelsB}{1}%
}
-\define@key{pmdraw@brick}{labels top}[]{ % Draws labels for top vertices
- \renewcommand{\pmdraw@ifLabelsT}{1}
+\define@key{pmdraw@brick}{labels top}[]{% Draws labels for top vertices
+ \renewcommand{\pmdraw@ifLabelsT}{1}%
}
-\define@key{pmdraw@brick}{labels start}{ % Sets starting number for vertex labels
- \setcounter{pmdraw@labelStartT}{#1}
- \setcounter{pmdraw@labelStartB}{#1}
+\define@key{pmdraw@brick}{labels start}{% Sets starting number for vertex labels
+ \setcounter{pmdraw@labelStartT}{#1}%
+ \setcounter{pmdraw@labelStartB}{#1}%
}
-\define@key{pmdraw@brick}{labels bottom start}{ % Sets starting number for bottom vertex labels
- \setcounter{pmdraw@labelStartB}{#1}
+\define@key{pmdraw@brick}{labels bottom start}{% Sets starting number for bottom vertex labels
+ \setcounter{pmdraw@labelStartB}{#1}%
}
-\define@key{pmdraw@brick}{labels top start}{ % Sets starting number for top vertex labels
- \setcounter{pmdraw@labelStartT}{#1}
+\define@key{pmdraw@brick}{labels top start}{% Sets starting number for top vertex labels
+ \setcounter{pmdraw@labelStartT}{#1}%
}
-\define@key{pmdraw@brick}{labels bottom draw}{ % Sets the draw options for labels of bottom vertices
- \renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}
+\define@key{pmdraw@brick}{labels bottom draw}{% Sets the draw options for labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{labels bottom node}{ % Sets the node options for labels of bottom vertices
- \renewcommand{\pmdraw@drawLabelBNodeOptions}{#1}
+\define@key{pmdraw@brick}{labels bottom node}{% Sets the node options for labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBNodeOptions}{#1}%
}
-\define@key{pmdraw@brick}{labels top draw}{ % Sets the draw options for labels of top vertices
- \renewcommand{\pmdraw@drawLabelTDrawOptions}{#1}
+\define@key{pmdraw@brick}{labels top draw}{% Sets the draw options for labels of top vertices
+ \renewcommand{\pmdraw@drawLabelTDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{labels top node}{ % Sets the node options for labels of top vertices
- \renewcommand{\pmdraw@drawLabelTNodeOptions}{#1}
+\define@key{pmdraw@brick}{labels top node}{% Sets the node options for labels of top vertices
+ \renewcommand{\pmdraw@drawLabelTNodeOptions}{#1}%
}
-\define@key{pmdraw@brick}{labels bottom options}{ % Sets the draw command of labels of bottom vertices
- \renewcommand{\pmdraw@drawLabelBottom}[3]{#1}
+\define@key{pmdraw@brick}{labels bottom options}{% Sets the draw command of labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelBottom}[3]{#1}%
}
-\define@key{pmdraw@brick}{labels top options}{ % Sets the draw command of labels of bottom vertices
- \renewcommand{\pmdraw@drawLabelTop}[3]{#1}
+\define@key{pmdraw@brick}{labels top options}{% Sets the draw command of labels of bottom vertices
+ \renewcommand{\pmdraw@drawLabelTop}[3]{#1}%
}
-\define@key{pmdraw@brick}{no dots}[]{ % Does not draw dots in bricks
- \setcounter{pmdraw@ifDiagWDotsFirst}{1}
+\define@key{pmdraw@brick}{no dots}[]{% Does not draw dots in bricks
+ \setcounter{pmdraw@ifDiagWDotsFirst}{1}%
}
-\define@key{pmdraw@brick}{dots draw}{ % Sets the draw options for drawing of dots
- \renewcommand{\pmdraw@drawDotsDrawOptions}{#1}
+\define@key{pmdraw@brick}{dots draw}{% Sets the draw options for drawing of dots
+ \renewcommand{\pmdraw@drawDotsDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{dots node}{ % Sets the node options for drawing of dots
- \renewcommand{\pmdraw@drawDotsNodeOptions}{#1}
+\define@key{pmdraw@brick}{dots node}{% Sets the node options for drawing of dots
+ \renewcommand{\pmdraw@drawDotsNodeOptions}{#1}%
}
-
-\define@key{pmdraw@brick}{levels}[1]{ % Sets number of horizontal levels for non-transversal edges and evenly spaces them
- \tikzmath{
- \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
- \pmdraw{edgeSepL} = \pmdraw{edgeSepU}; % Calculates vertical separation between each edge
- }
+\define@key{pmdraw@brick}{levels}[1]{% Sets number of horizontal levels for non-transversal edges and evenly spaces them
+ \tikzmath{%
+ \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
+ \pmdraw{edgeSepL} = \pmdraw{edgeSepU};% Calculates vertical separation between each edge
+ }%
}
-\define@key{pmdraw@brick}{levels bottom}{ % Sets number of horizontal levels for lower non-transversal edges and evenly spaces them
- \tikzmath{
- \pmdraw{edgeSepL} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
- }
+\define@key{pmdraw@brick}{levels bottom}{% Sets number of horizontal levels for lower non-transversal edges and evenly spaces them
+ \tikzmath{%
+ \pmdraw{edgeSepL} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
+ }%
}
-\define@key{pmdraw@brick}{levels top}{ % Sets number of horizontal levels for upper non-transversal edges and evenly spaces them
- \tikzmath{
- \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1); % Calculates vertical separation between each edge
- }
+\define@key{pmdraw@brick}{levels top}{% Sets number of horizontal levels for upper non-transversal edges and evenly spaces them
+ \tikzmath{%
+ \pmdraw{edgeSepU} = (0.5*\pmdraw@rowSep)/(#1 + 1);% Calculates vertical separation between each edge
+ }%
}
-\define@key{pmdraw@brick}{levels sep}{ % Sets vertical separation of horizontal levels for non-transversal edges
- \tikzmath{
- \pmdraw{edgeSepU} = #1;
- \pmdraw{edgeSepL} = \pmdraw{edgeSepU};
- }
+\define@key{pmdraw@brick}{levels sep}{% Sets vertical separation of horizontal levels for non-transversal edges
+ \tikzmath{%
+ \pmdraw{edgeSepU} = #1;%
+ \pmdraw{edgeSepL} = \pmdraw{edgeSepU};%
+ }%
}
-\define@key{pmdraw@brick}{levels sep bottom}{ % Sets vertical separation of lower horizontal levels for non-transversal edges
- \tikzmath{
- \pmdraw{edgeSepL} = #1;
- }
+\define@key{pmdraw@brick}{levels sep bottom}{% Sets vertical separation of lower horizontal levels for non-transversal edges
+ \tikzmath{%
+ \pmdraw{edgeSepL} = #1;%
+ }%
}
-\define@key{pmdraw@brick}{levels sep top}{ % Sets vertical separation of upper horizontal levels for non-transversal edges
- \tikzmath{
- \pmdraw{edgeSepU} = #1;
- }
+\define@key{pmdraw@brick}{levels sep top}{% Sets vertical separation of upper horizontal levels for non-transversal edges
+ \tikzmath{%
+ \pmdraw{edgeSepU} = #1;%
+ }%
}
-\define@key{pmdraw@brick}{edges}{ % Sets the draw options of all edges
- \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
- \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
- \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}
+\define@key{pmdraw@brick}{edges}{% Sets the draw options of all edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
+ \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{edges non-transversal}{ % Sets the draw options of non-transversal edges
- \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
- \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
+\define@key{pmdraw@brick}{edges non-transversal}{% Sets the draw options of non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{edges upper}{ % Sets the draw options of upper non-transversal edges
- \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}
+\define@key{pmdraw@brick}{edges upper}{% Sets the draw options of upper non-transversal edges
+ \renewcommand{\pmdraw@drawUedgesDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{edges lower}{ % Sets the draw options of lower non-transversal edges
- \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}
+\define@key{pmdraw@brick}{edges lower}{% Sets the draw options of lower non-transversal edges
+ \renewcommand{\pmdraw@drawLedgesDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{edges transversal}{ % Sets the draw options of transversal edges
- \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}
+\define@key{pmdraw@brick}{edges transversal}{% Sets the draw options of transversal edges
+ \renewcommand{\pmdraw@drawTedgesDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{edges first}[]{ % Draws edges before vertices
- \renewcommand{\pmdraw@ifEdgesFirst}{1}
+\define@key{pmdraw@brick}{edges first}[]{% Draws edges before vertices
+ \renewcommand{\pmdraw@ifEdgesFirst}{1}%
}
-\define@key{pmdraw@brick}{transversals first}[]{ % Draws transversal edges before non-transversal edges
- \renewcommand{\pmdraw@ifTedgesFirst}{1}
+\define@key{pmdraw@brick}{transversals first}[]{% Draws transversal edges before non-transversal edges
+ \renewcommand{\pmdraw@ifTedgesFirst}{1}%
}
-\define@key{pmdraw@brick}{brace}{ % Draws a brace
- \setkeys{pmdraw@brace}{#1} % Processes details of brace
- \pmdraw@drawBrace{\value{pmdraw@braceL}}{\value{pmdraw@braceR}}{\pmdraw@braceLabel} % Draws brace
- \let\pmdraw@drawBrace\pmdraw@drawBraceDefault % Resets brace options if changed
+\define@key{pmdraw@brick}{brace}{% Draws a brace
+ \setkeys{pmdraw@brace}{#1}% Processes details of brace
+ \pmdraw@drawBrace{\value{pmdraw@braceL}}{\value{pmdraw@braceR}}{\pmdraw@braceLabel}% Draws brace
+ \let\pmdraw@drawBrace\pmdraw@drawBraceDefault% Resets brace options if changed
}
-\define@key{pmdraw@brick}{brace draw}{ % Sets the draw options for drawing of brace
- \renewcommand{\pmdraw@drawBraceDrawOptions}{#1}
+\define@key{pmdraw@brick}{brace draw}{% Sets the draw options for drawing of brace
+ \renewcommand{\pmdraw@drawBraceDrawOptions}{#1}%
}
-\define@key{pmdraw@brick}{brace node}{ % Sets the node options for drawing of brace
- \renewcommand{\pmdraw@drawBraceNodeOptions}{#1}
+\define@key{pmdraw@brick}{brace node}{% Sets the node options for drawing of brace
+ \renewcommand{\pmdraw@drawBraceNodeOptions}{#1}%
}
-\define@key{pmdraw@brick}{decorate before}{ % Hook for decorations before brick is drawn
- \renewcommand{\pmdraw@hookBeforeBrick}{#1}
+\define@key{pmdraw@brick}{decorate before}{% Hook for decorations before brick is drawn
+ \renewcommand{\pmdraw@hookBeforeBrick}{#1}%
}
-\define@key{pmdraw@brick}{decorate after}{ % Hook for decorations after brick is drawn
- \renewcommand{\pmdraw@hookAfterBrick}{#1}
+\define@key{pmdraw@brick}{decorate after}{% Hook for decorations after brick is drawn
+ \renewcommand{\pmdraw@hookAfterBrick}{#1}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -394,25 +393,25 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\define@key{pmdraw@NTedges}{level}{ % Sets level of non-transversal edge
- \setcounter{pmdraw@NTlevel}{#1}
+\define@key{pmdraw@NTedges}{level}{% Sets level of non-transversal edge
+ \setcounter{pmdraw@NTlevel}{#1}%
}
-\define@key{pmdraw@NTedges}{height}{ % Sets manual height of non-transversal edge
- \renewcommand{\pmdraw@NTedgesHeight}{#1}
+\define@key{pmdraw@NTedges}{height}{% Sets manual height of non-transversal edge
+ \renewcommand{\pmdraw@NTedgesHeight}{#1}%
}
-\define@key{pmdraw@NTedges}{options}{ % Sets the draw command of non-transversal edge
- \renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}
- \renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}
+\define@key{pmdraw@NTedges}{options}{% Sets the draw command of non-transversal edge
+ \renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}%
+ \renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}%
}
-\define@key{pmdraw@Tedges}{height}{ % Sets manual height of transversal edge
- \tikzmath{
- \pmdraw{Tlevel} = #1;
- }
- \renewcommand{\pmdraw@ifTedgeHorizontal}{1} % Flags manual height
+\define@key{pmdraw@Tedges}{height}{% Sets manual height of transversal edge
+ \tikzmath{%
+ \pmdraw{Tlevel} = #1;%
+ }%
+ \renewcommand{\pmdraw@ifTedgeHorizontal}{1}% Flags manual height
}
-\define@key{pmdraw@Tedges}{options}{ % Sets the draw command of transversal edge
- \renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}
+\define@key{pmdraw@Tedges}{options}{% Sets the draw command of transversal edge
+ \renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -422,20 +421,20 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\define@key{pmdraw@brace}{left}{ % Sets starting position of brace
- \setcounter{pmdraw@braceL}{#1}
+\define@key{pmdraw@brace}{left}{% Sets starting position of brace
+ \setcounter{pmdraw@braceL}{#1}%
}
-\define@key{pmdraw@brace}{right}{ % Sets terminating position of brace
- \setcounter{pmdraw@braceR}{#1}
+\define@key{pmdraw@brace}{right}{% Sets terminating position of brace
+ \setcounter{pmdraw@braceR}{#1}%
}
-\define@key{pmdraw@brace}{label}{ % Sets label of brace
- \renewcommand{\pmdraw@braceLabel}{#1}
+\define@key{pmdraw@brace}{label}{% Sets label of brace
+ \renewcommand{\pmdraw@braceLabel}{#1}%
}
-\define@key{pmdraw@brace}{above}[]{ % Set flag to draw brace above diagram
- \renewcommand{\pmdraw@ifProdDiag}{1}
+\define@key{pmdraw@brace}{above}[]{% Set flag to draw brace above diagram
+ \renewcommand{\pmdraw@ifProdDiag}{1}%
}
-\define@key{pmdraw@brace}{options}{ % Sets the draw command of brace
- \renewcommand{\pmdraw@drawBrace}[3]{#1}
+\define@key{pmdraw@brace}{options}{% Sets the draw command of brace
+ \renewcommand{\pmdraw@drawBrace}[3]{#1}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -445,30 +444,30 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\define@key{pmdraw@diagram}{row sep}{ % Sets vertical separation between rows of vertices in diagram
- \renewcommand{\pmdraw@rowSep}{#1}
+\define@key{pmdraw@diagram}{row sep}{% Sets vertical separation between rows of vertices in diagram
+ \renewcommand{\pmdraw@rowSep}{#1}%
}
-\define@key{pmdraw@diagram}{tikz}{ % Sets the tikz options
- \renewcommand{\pmdraw@tikz}{#1}
+\define@key{pmdraw@diagram}{tikz}{% Sets the tikz options
+ \renewcommand{\pmdraw@tikz}{#1}%
}
-\define@key{pmdraw@diagram}{dots options}{ % Sets the draw command of dots between bricks
- \renewcommand{\pmdraw@drawDots}[2]{#1}
+\define@key{pmdraw@diagram}{dots options}{% Sets the draw command of dots between bricks
+ \renewcommand{\pmdraw@drawDots}[2]{#1}%
}
-\define@key{pmdraw@diagram}{grid}[]{ % Flag for drawing coordinate grid
- \renewcommand{\pmdraw@ifGrid}{1}
+\define@key{pmdraw@diagram}{grid}[]{% Flag for drawing coordinate grid
+ \renewcommand{\pmdraw@ifGrid}{1}%
}
-\define@key{pmdraw@diagram}{decorate before}{ % Hook before drawing diagrams
- \renewcommand{\pmdraw@hookBeforeDiagram}{#1}
+\define@key{pmdraw@diagram}{decorate before}{% Hook before drawing diagrams
+ \renewcommand{\pmdraw@hookBeforeDiagram}{#1}%
}
-\define@key{pmdraw@diagram}{decorate after}{ % Hook after drawing diagrams
- \renewcommand{\pmdraw@hookAfterDiagram}{#1}
+\define@key{pmdraw@diagram}{decorate after}{% Hook after drawing diagrams
+ \renewcommand{\pmdraw@hookAfterDiagram}{#1}%
}
-\define@key{pmdraw@diagram}{diagram sep}{ % Sets vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
- \renewcommand{\pmdraw@diagSep}{#1}
+\define@key{pmdraw@diagram}{diagram sep}{% Sets vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram
+ \renewcommand{\pmdraw@diagSep}{#1}%
}
-\define@key{pmdraw@diagram}{edges added}{ % Sets the draw options for drawing of added edges in product diagram
- \renewcommand{\pmdraw@drawAedgesOptions}{#1}
+\define@key{pmdraw@diagram}{edges added}{% Sets the draw options for drawing of added edges in product diagram
+ \renewcommand{\pmdraw@drawAedgesOptions}{#1}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -478,12 +477,12 @@
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\pmdBrick}[4][]{ % Draws brick
+\newcommand{\pmdBrick}[4][]{% Draws brick
% #1 Options
% #2 Upper non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
% #3 Lower non-transversal edges, as list [<options>]{<left vertex>}{<right vertex>}, eg [level=1]{2}{3}
% #4 Transversals, as list [<options>]{<upper vertex>}{<lower vertex>}, eg [level=1]{2}{3}
- \pmdDiagram{{[#1]{#2}{#3}{#4}}} % Uses complete diagram method to draw brick
+ \pmdDiagram{{[#1]{#2}{#3}{#4}}}% Uses complete diagram method to draw brick
}
\newcommand{\pmdDiagram}[2][]{% Draws diagram
@@ -524,7 +523,7 @@
\pmdraw@reset% Resets user keys and other flags to default values
}
-\newcommand{\pmdEmpty}{} % Indicates no edges, internally halts input loops, always is = {}
+\newcommand{\pmdEmpty}{}% Indicates no edges, internally halts input loops, always is = {}
\newcommand{\pmdProduct}[4][]{% Draws product diagram
% #1 Options
@@ -606,27 +605,27 @@
\newcommand{\pmdraw@AedgesLoop}{% Starts loop for added edges in product diagram
\@ifnextchar\pmdEmpty{}{% If not at end of list
\pmdraw@drawAedges% Draw each edge
- }
+ }%
}
\newcommand{\pmdraw@bricksLoop}{% Starts loop to iterate over each brick in diagram
\@ifnextchar\pmdEmpty{}{% If not at end of list
\pmdraw@drawBrickInit% Draw each brick
- }
+ }%
}
\newcommand{\pmdraw@LedgesLoop}{% Starts loop for lower non-transversal edges
\@ifnextchar\pmdEmpty{}{% If not at end of list
\pmdraw@drawLedges% Draw each edge
- }
+ }%
}
\newcommand{\pmdraw@TedgesLoop}{% Starts loop for transversal edges
\@ifnextchar\pmdEmpty{}{% If not at end of list
\pmdraw@drawTedges% Draw each edge
- }
+ }%
}
\newcommand{\pmdraw@UedgesLoop}{% Starts loop for upper non-transversal edges
\@ifnextchar\pmdEmpty{}{% If not at end of list
\pmdraw@drawUedges% Draw each edge
- }
+ }%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -673,7 +672,7 @@
\ifnum\pmdraw@ifLabelsB=1% If drawing labels
\pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label
\stepcounter{pmdraw@labelStartB}% Update label counter
- \fi
+ \fi%
}%
}
\newcommand{\pmdraw@drawBrickInit}[1]{% Initialises the drawing of a brick
@@ -716,7 +715,7 @@
#3%
\pmdEmpty%
\fi%
- \else % If drawing edges first
+ \else% If drawing edges first
\ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first
\pmdraw@UedgesLoop% Draws upper edges
#2%
@@ -801,20 +800,20 @@
\ifnum\pmdraw@ifLabelsT=1% If drawing labels
\pmdraw@drawLabelTop{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}{\thepmdraw@labelStartT}% Draw label
\stepcounter{pmdraw@labelStartT}% Update label counter
- \fi
+ \fi%
}%
}
\newcommand{\pmdraw@drawUedges}[3][]{% Draws upper non-transversal edge, #1 options, #2 L vertex, #3 R vertex
\setcounter{pmdraw@NTlevel}{1}% Store default level of edge
\setkeys{pmdraw@NTedges}{#1}% Processes options
\ifdim\pmdraw@NTedgesHeight pt=-1000pt% If using default heights
- \tikzmath{
+ \tikzmath{%
\pmdraw{edgeHeight}=\value{pmdraw@NTlevel}*\pmdraw{edgeSepU};% Calculates height based on level of edge
- }
+ }%
\else% If using manual heights
- \tikzmath{
+ \tikzmath{%
\pmdraw{edgeHeight}=\pmdraw@rowSep-\pmdraw@NTedgesHeight;% Set manual height
- }
+ }%
\fi%
\pmdraw@drawUedgesDraw{#2}{#3}% Draw edge
% Resets user keys and other flags to default values
diff --git a/graphics/pmdraw/pmdraw.tex b/graphics/pmdraw/pmdraw.tex
index 48518dba79..d5ce4ee4ea 100644
--- a/graphics/pmdraw/pmdraw.tex
+++ b/graphics/pmdraw/pmdraw.tex
@@ -1,7 +1,7 @@
\documentclass{ltxdoc}
% *------------------------------*
-% |2````````````````````````````4|
+% |3````````````````````````````7|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -13,7 +13,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |2````````````````````````````2|
+% |2````````````````````````````6|
% *------------------------------*
\usepackage{pmdraw}
@@ -26,13 +26,13 @@
\hypersetup{colorlinks, linkcolor=blue, urlcolor=blue}
\title{The \textsf{pmdraw} package\thanks{This document
- corresponds to \textsf{pmdraw}~v1.1, 2023-11-14.}}
+ corresponds to \textsf{pmdraw}~v1.2, 2024-01-10.}}
\author{Matthias Fresacher \\ \texttt{matthias.ypg37@slmail.me}}
\maketitle
\begin{abstract}
-The \texttt{pmdraw} package allows you to draw elements of the Partition Monoids, commonly referred to as diagrams. The package provides a lot of flexibility to draw most diagrams and can be customised as needed.
+The \texttt{pmdraw} package allows you to draw elements of the diagram monoids, commonly referred to as diagrams. The package provides a lot of flexibility to draw most diagrams and can be customised as needed.
\end{abstract}
\tableofcontents
@@ -42,9 +42,9 @@ The \texttt{pmdraw} package allows you to draw elements of the Partition Monoids
\subsection{Motivation}
-Partition monoids and their closely related algebras are well studied objects with applications in theoretical physics and representation theory in mathematics. The elements of these monoids are called diagrams because they can be drawn graphically as a graph following certain conventions.
+Diagram monoids and their closely related algebras are well studied objects with applications in theoretical physics and representation theory in mathematics. The elements of these monoids are called diagrams because they can be drawn graphically as a graph following certain conventions.
-My PhD thesis examines properties of these partition monoids and hence I needed to draw a large number of diagrams in a neat and consistent way. This thesis work formed the basis of this package with only customisability and the manual needed to be added to complete this package.
+My PhD thesis examines properties of these diagram monoids and hence I needed to draw a large number of diagrams in a neat and consistent way. This thesis work formed the basis of this package with only customisability and the manual needed to be added to complete this package.
\subsection{Acknowledgments}
@@ -77,7 +77,8 @@ I would like this package to be as perfect as it can be but I will need your hel
The following are a list of currently known bugs that will be addressed:
\begin{enumerate}
- \item None at the moment
+ \item When the radius of the arc for non-transversal edges is too large compared to the distance between the two nodes, the arcs overlap. The current solution is to manually specify a \texttt{level} or \texttt{height} that makes the arcs smaller.
+ \item Baseline adjustments are hard coded so when changing \texttt{scale} or text size, for example, the vertical position of diagrams is likely to be incorrect. The current solution is to manually adjust the \texttt{baseline} within the \texttt{tikz} key.
\end{enumerate}
\subsection{Incompatibilities}
@@ -1770,7 +1771,7 @@ For the drawing order of a diagram and product diagram, see the \texttt{decorate
\subsection{Edge options} \label{sec: edge/options}
-\subsubsection{non-transversal edge options} \label{sec: NT edge/options}
+\subsubsection{Non-transversal edge options} \label{sec: NT edge/options}
\DescribeMacro{level}
specifies the horizontal level of a non-transversal edges. Default is one.
@@ -2393,7 +2394,7 @@ The following options can be used for both diagrams (\verb`\pmdDiagram`) and pro
same as \texttt{row sep} option in bricks but applied to all bricks within (product) diagram.
\DescribeMacro{tikz}
-passes through options to \texttt{tikz} environment. Specifically, the options in \verb`\begin{tikzpicture}[<options>]`. The default is no argument. However there are some default options passed to \texttt{tikz} automatically. This are \texttt{scale=.5}, and an adjustment to the \texttt{baseline} depending on the current typesetting mode and a \texttt{grid} key if the grid is activated.
+passes through options to \texttt{tikz} environment. Specifically, the options in \verb`\begin{tikzpicture}[<options>]`. The default is no argument. However there are some default options passed to \texttt{tikz} automatically. These are an adjustment to the \texttt{baseline} depending on the current typesetting mode and a \texttt{grid} key if the grid is activated.
\begin{center}
\begin{minipage}{\dimexpr0.85\textwidth-2\fboxrule-2\fboxsep\relax}
\begin{minipage}[c]{0.4\linewidth}