diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty | 758 |
1 files changed, 689 insertions, 69 deletions
diff --git a/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty b/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty index 0cfa1f27095..36f506b51fa 100644 --- a/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty +++ b/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty @@ -1,8 +1,8 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pmdraw}[2024-04-09 v1.3 pmdraw] +\ProvidesPackage{pmdraw}[2024-06-02 v1.4 pmdraw] % *------------------------------* -% |2````````````````````````````3| +% |7````````````````````````````4| % |`````____````____`````````````| % |````|MFMF\ /MFMF|````````````| % |````|MF|MF\/MF|MF|````````````| @@ -14,7 +14,7 @@ % |``````````````|MF|````````````| % |``````````````|MF|````````````| % |``````````````|MF|````````````| -% |1````````````````````````````1| +% |3````````````````````````````4| % *------------------------------* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -42,8 +42,28 @@ \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 + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@edgesAddedUncover>{% Uncovers added edges + \foreach \x in {#1,...,#2} {% For each vertex in range + \ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges + \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge + \else% If hiding top vertices + \phantom{% + \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge + }% + \fi% + }% + }% + }{% If not in beamer + \foreach \x in {#1,...,#2} {% For each vertex in range + \ifnum\value{pmdraw@ifEdgesAdded}=0% If drawing added edges + \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge + \else% If hiding top vertices + \phantom{% + \draw[dotted,thick,apply style/.expand once=\pmdraw@drawAedgesOptions] (\x,0) -- (\x,-\pmdraw@diagSep);% Draw concatenation edge + }% + \fi% + }% }% \pmdraw@AedgesLoop% Restart for loop } @@ -111,6 +131,44 @@ } \let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% Draws lower non-transversal edge from #1 vertex to #2 vertex, assumes #1<#2 +\newcommand{\pmdraw@drawNoLabelBa}{-1}% 1st vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBb}{-1}% 2nd vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBc}{-1}% 3rd vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBd}{-1}% 4th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBe}{-1}% 5th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBf}{-1}% 6th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBg}{-1}% 7th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBh}{-1}% 8th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelBi}{-1}% 9th vertex to skip label in bottom row +\newcommand{\pmdraw@drawNoLabelTa}{-1}% 1st vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTb}{-1}% 2nd vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTc}{-1}% 3rd vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTd}{-1}% 4th vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTe}{-1}% 5th vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTf}{-1}% 6th vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTg}{-1}% 7th vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTh}{-1}% 8th vertex to skip label in top row +\newcommand{\pmdraw@drawNoLabelTi}{-1}% 9th vertex to skip label in top row + +\newcommand{\pmdraw@drawNoVertexBa}{-1}% 1st vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBb}{-1}% 2nd vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBc}{-1}% 3rd vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBd}{-1}% 4th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBe}{-1}% 5th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBf}{-1}% 6th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBg}{-1}% 7th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBh}{-1}% 8th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexBi}{-1}% 9th vertex to skip in bottom row +\newcommand{\pmdraw@drawNoVertexTa}{-1}% 1st vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTb}{-1}% 2nd vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTc}{-1}% 3rd vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTd}{-1}% 4th vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTe}{-1}% 5th vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTf}{-1}% 6th vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTg}{-1}% 7th vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTh}{-1}% 8th vertex to skip in top row +\newcommand{\pmdraw@drawNoVertexTi}{-1}% 9th vertex to skip in top row + \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 @@ -145,6 +203,10 @@ \fill[apply style/.expand once=\pmdraw@drawVertexOptions] (#1,#2) circle (.17);% } +\newcommand{\pmdraw@edgeUncover}{1-}% Sets the uncover options of edge +\newcommand{\pmdraw@edgesAddedUncover}{1-}% Sets the uncover options of added edges +\newcommand{\pmdraw@edgesUncover}{1-}% Sets the uncover options of edges + \newcommand{\pmdraw@hookAfterBrick}{}% Hook after drawing a brick \newcommand{\pmdraw@hookAfterDiagram}{}% Hook after drawing a diagram \newcommand{\pmdraw@hookBeforeBrick}{}% Hook before drawing a brick @@ -165,6 +227,7 @@ \renewcommand{\pmdraw@diagSep}{1}% Resets vertical space between product diagrams \renewcommand{\pmdraw@drawAedgesOptions}{}% Resets draw options for added edges in product diagram \let\pmdraw@drawDots\pmdraw@drawDotsDefault% Resets drawing of dots between bricks + \renewcommand{\pmdraw@edgesAddedUncover}{1-}% Resets the uncover options of added edges \renewcommand{\pmdraw@hookAfterDiagram}{}% Clears hook after drawing a diagram \renewcommand{\pmdraw@hookBeforeDiagram}{}% Clears hook before drawing a diagram \renewcommand{\pmdraw@ifGrid}{0}% Hides grid @@ -177,12 +240,16 @@ \setcounter{pmdraw@bottomShift}{0}% Resets shift on right end of bottom row of brick \setcounter{pmdraw@topShift}{0}% Resets shift on right end of top row of brick \setcounter{pmdraw@ifDiagWDotsFirst}{1}% Reset if drawing first brick of diagram + \setcounter{pmdraw@ifEdgesAdded}{0}% Resets boolean if hiding added edges } \newcommand{\pmdraw@rowSep}{2}% Vertical separation between rows of vertices in brick \newcommand{\pmdraw@tikz}{}% Tikz options +\newcommand{\pmdraw@verticesBottomUncover}{1-}% Sets the uncover options of bottom vertices +\newcommand{\pmdraw@verticesTopUncover}{1-}% Sets the uncover options of top vertices + \newcommand{\pmdraw@vertexSep}{0}% Vertical separation between bottom row of top diagram and top row of bottom diagram in product diagram not for added edges %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -210,6 +277,18 @@ \newcounter{pmdraw@ifDiagWDotsFirst}% In drawing with dots, boolean if drawing first brick of diagram \setcounter{pmdraw@ifDiagWDotsFirst}{1} +\newcounter{pmdraw@ifEdge}% Boolean if hiding edge +\setcounter{pmdraw@ifEdge}{0} +\newcounter{pmdraw@ifEdgesAdded}% Boolean if hiding added edges +\setcounter{pmdraw@ifEdgesAdded}{0} +\newcounter{pmdraw@ifEdges}% Boolean if hiding edges +\setcounter{pmdraw@ifEdges}{0} + +\newcounter{pmdraw@ifVerticesBottom}% Boolean if hiding bottom row of vertices +\setcounter{pmdraw@ifVerticesBottom}{0} +\newcounter{pmdraw@ifVerticesTop}% Boolean if hiding top row of vertices +\setcounter{pmdraw@ifVerticesTop}{0} + \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 @@ -257,6 +336,61 @@ \define@key{pmdraw@brick}{vertices}{% Sets the draw options of vertices \renewcommand{\pmdraw@drawVertexOptions}{#1}% } +\define@key{pmdraw@brick}{no vertex bottom 1}{% Sets 1st vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBa}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 2}{% Sets 2nd vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBb}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 3}{% Sets 3rd vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBc}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 4}{% Sets 4th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBd}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 5}{% Sets 5th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBe}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 6}{% Sets 6th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBf}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 7}{% Sets 7th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBg}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 8}{% Sets 8th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBh}{#1}% +} +\define@key{pmdraw@brick}{no vertex bottom 9}{% Sets 9th vertex to skip in bottom row + \renewcommand{\pmdraw@drawNoVertexBi}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 1}{% Sets 1st vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTa}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 2}{% Sets 2nd vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTb}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 3}{% Sets 3rd vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTc}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 4}{% Sets 4th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTd}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 5}{% Sets 5th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTe}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 6}{% Sets 6th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTf}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 7}{% Sets 7th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTg}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 8}{% Sets 8th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTh}{#1}% +} +\define@key{pmdraw@brick}{no vertex top 9}{% Sets 9th vertex to skip in top row + \renewcommand{\pmdraw@drawNoVertexTi}{#1}% +} + \define@key{pmdraw@brick}{vertices options}{% Sets the draw command of vertices \renewcommand{\pmdraw@drawVertex}[2]{#1}% } @@ -283,6 +417,61 @@ \setcounter{pmdraw@labelStartT}{#1}% } +\define@key{pmdraw@brick}{no label bottom 1}{% Sets 1st label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBa}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 2}{% Sets 2nd label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBb}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 3}{% Sets 3rd label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBc}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 4}{% Sets 4th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBd}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 5}{% Sets 5th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBe}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 6}{% Sets 6th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBf}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 7}{% Sets 7th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBg}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 8}{% Sets 8th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBh}{#1}% +} +\define@key{pmdraw@brick}{no label bottom 9}{% Sets 9th label to skip in bottom row + \renewcommand{\pmdraw@drawNoLabelBi}{#1}% +} +\define@key{pmdraw@brick}{no label top 1}{% Sets 1st label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTa}{#1}% +} +\define@key{pmdraw@brick}{no label top 2}{% Sets 2nd label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTb}{#1}% +} +\define@key{pmdraw@brick}{no label top 3}{% Sets 3rd label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTc}{#1}% +} +\define@key{pmdraw@brick}{no label top 4}{% Sets 4th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTd}{#1}% +} +\define@key{pmdraw@brick}{no label top 5}{% Sets 5th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTe}{#1}% +} +\define@key{pmdraw@brick}{no label top 6}{% Sets 6th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTf}{#1}% +} +\define@key{pmdraw@brick}{no label top 7}{% Sets 7th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTg}{#1}% +} +\define@key{pmdraw@brick}{no label top 8}{% Sets 8th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTh}{#1}% +} +\define@key{pmdraw@brick}{no label top 9}{% Sets 9th label to skip in top row + \renewcommand{\pmdraw@drawNoLabelTi}{#1}% +} + \define@key{pmdraw@brick}{labels bottom draw}{% Sets the draw options for labels of bottom vertices \renewcommand{\pmdraw@drawLabelBDrawOptions}{#1}% } @@ -299,7 +488,7 @@ \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 +\define@key{pmdraw@brick}{labels top options}{% Sets the draw command of labels of top vertices \renewcommand{\pmdraw@drawLabelTop}[3]{#1}% } @@ -314,6 +503,20 @@ \renewcommand{\pmdraw@drawDotsNodeOptions}{#1}% } +\define@key{pmdraw@brick}{vertices bottom phantom}[]{% Does not draw bottom vertices + \setcounter{pmdraw@ifVerticesBottom}{1}% +} +\define@key{pmdraw@brick}{vertices top phantom}[]{% Does not draw top vertices + \setcounter{pmdraw@ifVerticesTop}{1}% +} + +\define@key{pmdraw@brick}{vertices bottom uncover}{% Sets the uncover options of bottom vertices + \renewcommand{\pmdraw@verticesBottomUncover}{#1}% +} +\define@key{pmdraw@brick}{vertices top uncover}{% Sets the uncover options of top vertices + \renewcommand{\pmdraw@verticesTopUncover}{#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 @@ -374,6 +577,14 @@ \renewcommand{\pmdraw@ifTedgesFirst}{1}% } +\define@key{pmdraw@brick}{edges phantom}[]{% Does not draw edges + \setcounter{pmdraw@ifEdges}{1}% +} + +\define@key{pmdraw@brick}{edges uncover}{% Sets the uncover options of edges + \renewcommand{\pmdraw@edgesUncover}{#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 @@ -414,6 +625,12 @@ \renewcommand{\pmdraw@drawUedgesDraw}[2]{#1}% \renewcommand{\pmdraw@drawLedgesDraw}[2]{#1}% } +\define@key{pmdraw@NTedges}{phantom}[]{% Does not draw edge + \setcounter{pmdraw@ifEdge}{1}% +} +\define@key{pmdraw@NTedges}{uncover}{% Sets the uncover options of edge + \renewcommand{\pmdraw@edgeUncover}{#1}% +} \define@key{pmdraw@Tedges}{height}{% Sets manual height of transversal edge \tikzmath{% \pmdraw{Tlevel} = #1;% @@ -426,6 +643,12 @@ \define@key{pmdraw@Tedges}{options}{% Sets the draw command of transversal edge \renewcommand{\pmdraw@drawTedgesDraw}[2]{#1}% } +\define@key{pmdraw@Tedges}{phantom}[]{% Does not draw edge + \setcounter{pmdraw@ifEdge}{1}% +} +\define@key{pmdraw@Tedges}{uncover}{% Sets the uncover options of edge + \renewcommand{\pmdraw@edgeUncover}{#1}% +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -485,6 +708,12 @@ \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 phantom}[]{% Does not draw added edges + \setcounter{pmdraw@ifEdgesAdded}{1}% +} +\define@key{pmdraw@diagram}{edges added uncover}{% Sets the uncover options of added edges + \renewcommand{\pmdraw@edgesAddedUncover}{#1}% +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -684,11 +913,47 @@ \fi% \fi% \foreach \x in {1,...,\value{pmdraw@degreeB}} {% For each vertex in row - \pmdraw@drawVertex{\x + \value{pmdraw@blankB}}{0}% Draw lower vertex - \ifnum\pmdraw@ifLabelsB=1% If drawing labels - \pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label - \stepcounter{pmdraw@labelStartB}% Update label counter + \ifnum\pmdraw@drawNoVertexBa=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBb=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBc=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBd=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBe=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBf=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBg=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBh=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexBi=\x\else% If not skipping vertex + \pmdraw@drawVertex{\x + \value{pmdraw@blankB}}{0}% Draw lower vertex + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% \fi% + \ifnum\pmdraw@drawNoLabelBa=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBb=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBc=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBd=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBe=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBf=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBg=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBh=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelBi=\x\else% If not skipping label + \ifnum\pmdraw@ifLabelsB=1% If drawing labels + \pmdraw@drawLabelBottom{\x + \value{pmdraw@blankT}}{0}{\thepmdraw@labelStartB}% Draw label + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \stepcounter{pmdraw@labelStartB}% Update label counter }% } \newcommand{\pmdraw@drawBrickInit}[1]{% Initialises the drawing of a brick @@ -708,53 +973,269 @@ \setkeys{pmdraw@brick}{levels,#1}% Processes options and set default levels \pmdraw@hookBeforeBrick% Hook before drawing brick \ifnum\pmdraw@ifEdgesFirst=0% If drawing vertices first - \pmdraw@drawTopVertices% Draw base diagram - \pmdraw@drawBottomVertices% Draw base diagram - \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first - \pmdraw@UedgesLoop% Draws upper edges - #2% - \pmdEmpty% - \pmdraw@LedgesLoop% Draws lower edges - #3% - \pmdEmpty% - \pmdraw@TedgesLoop% Draws transversals - #4% - \pmdEmpty% - \else% If drawing transversal first - \pmdraw@TedgesLoop% Draws transversals - #4% - \pmdEmpty% - \pmdraw@UedgesLoop% Draws upper edges - #2% - \pmdEmpty% - \pmdraw@LedgesLoop% Draws lower edges - #3% - \pmdEmpty% - \fi% + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@verticesTopUncover>{% Uncovers top vertices + \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices + \pmdraw@drawTopVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawTopVertices% Draw base diagram + }% + \fi% + }% + \uncover<\pmdraw@verticesBottomUncover>{% Uncovers bottom vertices + \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices + \pmdraw@drawBottomVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawBottomVertices% Draw base diagram + }% + \fi% + }% + \uncover<\pmdraw@edgesUncover>{% Uncovers edges + \ifnum\value{pmdraw@ifEdges}=0% If drawing edges + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + \else% If hiding edges + \phantom{% + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + }% + \fi% + }% + }{% If not in beamer + \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices + \pmdraw@drawTopVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawTopVertices% Draw base diagram + }% + \fi% + \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices + \pmdraw@drawBottomVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawBottomVertices% Draw base diagram + }% + \fi% + \ifnum\value{pmdraw@ifEdges}=0% If drawing edges + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + \else% If hiding edges + \phantom{% + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + }% + \fi% + }% \else% If drawing edges first - \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first - \pmdraw@UedgesLoop% Draws upper edges - #2% - \pmdEmpty% - \pmdraw@LedgesLoop% Draws lower edges - #3% - \pmdEmpty% - \pmdraw@TedgesLoop% Draws transversals - #4% - \pmdEmpty% - \else% If drawing transversal first - \pmdraw@TedgesLoop% Draws transversals - #4% - \pmdEmpty% - \pmdraw@UedgesLoop% Draws upper edges - #2% - \pmdEmpty% - \pmdraw@LedgesLoop% Draws lower edges - #3% - \pmdEmpty% - \fi% - \pmdraw@drawTopVertices% Draw base diagram - \pmdraw@drawBottomVertices% Draw base diagram + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@edgesUncover>{% Uncovers edges + \ifnum\value{pmdraw@ifEdges}=0% If drawing edges + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + \else% If hiding edges + \phantom{% + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + }% + \fi% + }% + \uncover<\pmdraw@verticesTopUncover>{% Uncovers top vertices + \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices + \pmdraw@drawTopVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawTopVertices% Draw base diagram + }% + \fi% + }% + \uncover<\pmdraw@verticesBottomUncover>{% Uncovers bottm vertices + \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices + \pmdraw@drawBottomVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawBottomVertices% Draw base diagram + }% + \fi% + }% + }{% If not in beamer + \ifnum\value{pmdraw@ifEdges}=0% If drawing edges + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + \else% If hiding edges + \phantom{% + \ifnum\pmdraw@ifTedgesFirst=0% If drawing non-transversals first + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \else% If drawing transversal first + \pmdraw@TedgesLoop% Draws transversals + #4% + \pmdEmpty% + \pmdraw@UedgesLoop% Draws upper edges + #2% + \pmdEmpty% + \pmdraw@LedgesLoop% Draws lower edges + #3% + \pmdEmpty% + \fi% + }% + \fi% + \ifnum\value{pmdraw@ifVerticesTop}=0% If drawing top vertices + \pmdraw@drawTopVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawTopVertices% Draw base diagram + }% + \fi% + \ifnum\value{pmdraw@ifVerticesBottom}=0% If drawing bottom vertices + \pmdraw@drawBottomVertices% Draw base diagram + \else% If hiding top vertices + \phantom{% + \pmdraw@drawBottomVertices% Draw base diagram + }% + \fi% + }% \fi% \pmdraw@hookAfterBrick% Hook after drawing brick % Resets user keys and other flags to default values @@ -767,6 +1248,42 @@ \renewcommand{\pmdraw@drawLabelTDrawOptions}{}% \renewcommand{\pmdraw@drawLabelTNodeOptions}{}% \renewcommand{\pmdraw@drawLedgesDrawOptions}{}% + \renewcommand{\pmdraw@drawNoLabelBa}{-1}% + \renewcommand{\pmdraw@drawNoLabelBb}{-1}% + \renewcommand{\pmdraw@drawNoLabelBc}{-1}% + \renewcommand{\pmdraw@drawNoLabelBd}{-1}% + \renewcommand{\pmdraw@drawNoLabelBe}{-1}% + \renewcommand{\pmdraw@drawNoLabelBf}{-1}% + \renewcommand{\pmdraw@drawNoLabelBg}{-1}% + \renewcommand{\pmdraw@drawNoLabelBh}{-1}% + \renewcommand{\pmdraw@drawNoLabelBi}{-1}% + \renewcommand{\pmdraw@drawNoLabelTa}{-1}% + \renewcommand{\pmdraw@drawNoLabelTb}{-1}% + \renewcommand{\pmdraw@drawNoLabelTc}{-1}% + \renewcommand{\pmdraw@drawNoLabelTd}{-1}% + \renewcommand{\pmdraw@drawNoLabelTe}{-1}% + \renewcommand{\pmdraw@drawNoLabelTf}{-1}% + \renewcommand{\pmdraw@drawNoLabelTg}{-1}% + \renewcommand{\pmdraw@drawNoLabelTh}{-1}% + \renewcommand{\pmdraw@drawNoLabelTi}{-1}% + \renewcommand{\pmdraw@drawNoVertexBa}{-1}% + \renewcommand{\pmdraw@drawNoVertexBb}{-1}% + \renewcommand{\pmdraw@drawNoVertexBc}{-1}% + \renewcommand{\pmdraw@drawNoVertexBd}{-1}% + \renewcommand{\pmdraw@drawNoVertexBe}{-1}% + \renewcommand{\pmdraw@drawNoVertexBf}{-1}% + \renewcommand{\pmdraw@drawNoVertexBg}{-1}% + \renewcommand{\pmdraw@drawNoVertexBh}{-1}% + \renewcommand{\pmdraw@drawNoVertexBi}{-1}% + \renewcommand{\pmdraw@drawNoVertexTa}{-1}% + \renewcommand{\pmdraw@drawNoVertexTb}{-1}% + \renewcommand{\pmdraw@drawNoVertexTc}{-1}% + \renewcommand{\pmdraw@drawNoVertexTd}{-1}% + \renewcommand{\pmdraw@drawNoVertexTe}{-1}% + \renewcommand{\pmdraw@drawNoVertexTf}{-1}% + \renewcommand{\pmdraw@drawNoVertexTg}{-1}% + \renewcommand{\pmdraw@drawNoVertexTh}{-1}% + \renewcommand{\pmdraw@drawNoVertexTi}{-1}% \renewcommand{\pmdraw@drawTedgesDrawOptions}{}% \renewcommand{\pmdraw@drawUedgesDrawOptions}{}% \renewcommand{\pmdraw@drawVertexOptions}{}% @@ -776,6 +1293,9 @@ \renewcommand{\pmdraw@ifLabelsB}{0}% \renewcommand{\pmdraw@ifLabelsT}{0}% \renewcommand{\pmdraw@ifTedgesFirst}{0}% + \renewcommand{\pmdraw@edgesUncover}{1-}% + \renewcommand{\pmdraw@verticesBottomUncover}{1-}% + \renewcommand{\pmdraw@verticesTopUncover}{1-}% \let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault% \let\pmdraw@drawLabelTop\pmdraw@drawLabelTopDefault% \let\pmdraw@drawLabelBottom\pmdraw@drawLabelBottomDefault% @@ -783,6 +1303,9 @@ \setcounter{pmdraw@blankT}{0}% \setcounter{pmdraw@labelStartB}{1}% \setcounter{pmdraw@labelStartT}{1}% + \setcounter{pmdraw@ifEdges}{0}% + \setcounter{pmdraw@ifVerticesBottom}{0}% + \setcounter{pmdraw@ifVerticesTop}{0}% } \newcommand{\pmdraw@drawLedges}[3][]{% Draws lower non-transversal edge, #1 options, #2 L vertex, #3 R vertex \setcounter{pmdraw@NTlevel}{1}% Store default level of edge @@ -796,28 +1319,105 @@ \pmdraw{edgeHeight}=\pmdraw@NTedgesHeight;% Set manual height }% \fi% - \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@edgeUncover>{% Uncovers edge + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% + }{% If not in beamer + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawLedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% % Resets user keys and other flags to default values \renewcommand{\pmdraw@NTedgesHeight}{-1000}% + \renewcommand{\pmdraw@edgeUncover}{1-}% + \setcounter{pmdraw@ifEdge}{0}% \let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% \pmdraw@LedgesLoop% Restart for loop } \newcommand{\pmdraw@drawTedges}[3][]{% Draws transversal edge, #1 options, #2 upper vertex, #3 lower vertex \setkeys{pmdraw@Tedges}{#1}% Processes options - \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge - \let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% Resets user keys and other flags to default values + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@edgeUncover>{% Uncovers edge + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% + }{% If not in beamer + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawTedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% + % Resets user keys and other flags to default values + \renewcommand{\pmdraw@edgeUncover}{1-}% + \setcounter{pmdraw@ifEdge}{0}% + \let\pmdraw@drawTedgesDraw\pmdraw@drawTedgesDrawDefault% \pmdraw@TedgesLoop% Restart for loop } \newcommand{\pmdraw@drawTopVertices}{% Draws top row of vertices - \setcounter{pmdraw@topTotal}{\value{pmdraw@blankT}}% Store size of top row of vertices - \addtocounter{pmdraw@topTotal}{\value{pmdraw@degreeT}}% Store size of top row of vertices - \foreach \x in {1,...,\value{pmdraw@degreeT}} {% For each vertex in row - \pmdraw@drawVertex{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper vertex - \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% - }% + \setcounter{pmdraw@topTotal}{\value{pmdraw@blankT}}% Store size of top row of vertices + \addtocounter{pmdraw@topTotal}{\value{pmdraw@degreeT}}% Store size of top row of vertices + \foreach \x in {1,...,\value{pmdraw@degreeT}} {% For each vertex in row + \ifnum\pmdraw@drawNoVertexTa=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTb=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTc=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTd=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTe=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTf=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTg=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTh=\x\else% If not skipping vertex + \ifnum\pmdraw@drawNoVertexTi=\x\else% If not skipping vertex + \pmdraw@drawVertex{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}% Draw upper vertex + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \ifnum\pmdraw@drawNoLabelTa=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTb=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTc=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTd=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTe=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTf=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTg=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTh=\x\else% If not skipping label + \ifnum\pmdraw@drawNoLabelTi=\x\else% If not skipping label + \ifnum\pmdraw@ifLabelsT=1% If drawing labels + \pmdraw@drawLabelTop{\x + \value{pmdraw@blankT}}{\pmdraw@rowSep}{\thepmdraw@labelStartT}% Draw label + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \stepcounter{pmdraw@labelStartT}% Update label counter + }% } \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 @@ -831,9 +1431,29 @@ \pmdraw{edgeHeight}=\pmdraw@rowSep-\pmdraw@NTedgesHeight;% Set manual height }% \fi% - \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge + \@ifclassloaded{beamer}{% If in beamer + \uncover<\pmdraw@edgeUncover>{% Uncovers edge + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% + }{% If not in beamer + \ifnum\value{pmdraw@ifEdge}=0% If drawing edge + \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge + \else% If hiding edge + \phantom{% + \pmdraw@drawUedgesDraw{#2}{#3}% Draw edge + }% + \fi% + }% % Resets user keys and other flags to default values \renewcommand{\pmdraw@NTedgesHeight}{-1000}% + \renewcommand{\pmdraw@edgeUncover}{1-}% + \setcounter{pmdraw@ifEdge}{0}% \let\pmdraw@drawLedgesDraw\pmdraw@drawLedgesDrawDefault% \let\pmdraw@drawUedgesDraw\pmdraw@drawUedgesDrawDefault% \pmdraw@UedgesLoop% Restart for loop |