summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-03-06 03:03:24 +0000
committerNorbert Preining <norbert@preining.info>2024-03-06 03:03:24 +0000
commite500c9e5fc807971a29d8544e9e2fad59f670fb5 (patch)
treecdd0816a3fe3605126e1946c386f860fe5bacd1c /graphics/pgf/contrib
parent262a8b0c9d7aa383a7d1ec3a2efa25817abfc2d6 (diff)
CTAN sync 202403060303
Diffstat (limited to 'graphics/pgf/contrib')
-rw-r--r--graphics/pgf/contrib/adigraph/adigraph.sty2
-rw-r--r--graphics/pgf/contrib/adigraph/adigraph_documentation.pdfbin204715 -> 296366 bytes
-rw-r--r--graphics/pgf/contrib/adigraph/adigraph_documentation.tex11
-rw-r--r--graphics/pgf/contrib/adigraph/adigraph_working_test.pdfbin32107 -> 56673 bytes
-rw-r--r--graphics/pgf/contrib/adigraph/adigraph_working_test.tex2
-rw-r--r--graphics/pgf/contrib/twoxtwogame/README.md28
-rw-r--r--graphics/pgf/contrib/twoxtwogame/twoxtwogame.pdfbin465201 -> 0 bytes
-rw-r--r--graphics/pgf/contrib/twoxtwogame/twoxtwogame.sty1367
-rw-r--r--graphics/pgf/contrib/twoxtwogame/twoxtwogame_bibtex.bib63
-rw-r--r--graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.pdfbin0 -> 458421 bytes
-rw-r--r--graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.tex892
11 files changed, 1913 insertions, 452 deletions
diff --git a/graphics/pgf/contrib/adigraph/adigraph.sty b/graphics/pgf/contrib/adigraph/adigraph.sty
index e472ebd59f..df427a809d 100644
--- a/graphics/pgf/contrib/adigraph/adigraph.sty
+++ b/graphics/pgf/contrib/adigraph/adigraph.sty
@@ -7,7 +7,7 @@
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
%
-\def\AdigraphVersionNumber{v1.7.1}
+\def\AdigraphVersionNumber{v1.7.2}
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{adigraph}
diff --git a/graphics/pgf/contrib/adigraph/adigraph_documentation.pdf b/graphics/pgf/contrib/adigraph/adigraph_documentation.pdf
index 949814b056..479eae7c56 100644
--- a/graphics/pgf/contrib/adigraph/adigraph_documentation.pdf
+++ b/graphics/pgf/contrib/adigraph/adigraph_documentation.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/adigraph/adigraph_documentation.tex b/graphics/pgf/contrib/adigraph/adigraph_documentation.tex
index 6bcf6a0c8a..7112fdfa89 100644
--- a/graphics/pgf/contrib/adigraph/adigraph_documentation.tex
+++ b/graphics/pgf/contrib/adigraph/adigraph_documentation.tex
@@ -2,16 +2,16 @@
\title{Adigraph, \AdigraphVersionNumber}
\author{Luca Cappelletti}
-\date{December 2018}
+\date{March 2024}
\usepackage{adigraph}
\usepackage{xcolor}
\usepackage[colorlinks=true,urlcolor=blue,pdfpagelabels,hyperindex=false]{hyperref}
\usepackage{minted}
-\usepackage{multicol}
\usepackage{graphicx} % for images and generally graphics
\usepackage{caption} % enabling of nice captions
\usepackage{subcaption} % and subcaptions of images
+\usepackage{multicol}
\definecolor{mintedbackground}{rgb}{0.95,0.95,0.95}
\setminted{
bgcolor=mintedbackground,
@@ -37,13 +37,6 @@
% THE FOLLOWING CENTERS ALL FLOATING ITEMS BY DEFAULT %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\makeatletter
-\g@addto@macro\@floatboxreset\centering
-\makeatother
-
-\makeatletter
-\apptocmd\subcaption@minipage{\centering}{}{}
-\makeatother
\makeatletter
\providecommand*\setfloatlocations[2]{\@namedef{fps@#1}{#2}}
diff --git a/graphics/pgf/contrib/adigraph/adigraph_working_test.pdf b/graphics/pgf/contrib/adigraph/adigraph_working_test.pdf
index 749a1dff1c..df498d28e1 100644
--- a/graphics/pgf/contrib/adigraph/adigraph_working_test.pdf
+++ b/graphics/pgf/contrib/adigraph/adigraph_working_test.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/adigraph/adigraph_working_test.tex b/graphics/pgf/contrib/adigraph/adigraph_working_test.tex
index b0a5376e06..b13899cd1d 100644
--- a/graphics/pgf/contrib/adigraph/adigraph_working_test.tex
+++ b/graphics/pgf/contrib/adigraph/adigraph_working_test.tex
@@ -5,7 +5,7 @@
\title{Adigraph, \AdigraphVersionNumber, small working test}
\author{Luca Cappelletti}
-\date{November 2018}
+\date{March 2024}
\begin{document}
\maketitle
diff --git a/graphics/pgf/contrib/twoxtwogame/README.md b/graphics/pgf/contrib/twoxtwogame/README.md
index 3856e3f087..ca22ad54b1 100644
--- a/graphics/pgf/contrib/twoxtwogame/README.md
+++ b/graphics/pgf/contrib/twoxtwogame/README.md
@@ -6,10 +6,12 @@ scientific publications. Commands include producing graphical representations
of 2x2 games, plotting the equilibria in 2x2 games, and game embeddings for 2x2
games.
+
## Installation
Simply include the `twoxtwogame.sty` file in your working directory.
+
## Usage
Include in the preamble the `twoxtwogame` package.
@@ -29,6 +31,31 @@ equilibrium.
For further information, please refer to the included package documentation:
`twoxtwogame_doc.pdf` which can be built from `twoxtwogame_doc.tex`.
+
+## Citing this package
+
+Please use the following citation when using this package:
+```
+@misc{marris2024_twoxtwogame,
+ title={Visualizing 2x2 Normal-Form Games: twoxtwogame LaTeX Package},
+ author={Luke Marris and Ian Gemp and Siqi Liu and Joel Z. Leibo and Georgios Piliouras},
+ year={2024},
+ eprint={2402.16985},
+ archivePrefix={arXiv},
+ primaryClass={cs.GT},
+ url={https://arxiv.org/abs/2402.16985},
+}
+```
+
+
+## Contributing
+
+If considering contributoing to the package, please read CONTRIBUTING.md.
+This package is maintained on
+[GitHub](https://github.com/google-deepmind/twoxtwogame) and mirrored on
+[CTAN](https://ctan.org/pkg/twoxtwogame).
+
+
## License and disclaimer
Copyright 2024 DeepMind Technologies Limited
@@ -49,4 +76,3 @@ either express or implied. See the licenses for the specific language governing
permissions and limitations under those licenses.
This is not an official Google product.
-
diff --git a/graphics/pgf/contrib/twoxtwogame/twoxtwogame.pdf b/graphics/pgf/contrib/twoxtwogame/twoxtwogame.pdf
deleted file mode 100644
index bc3b5bcd45..0000000000
--- a/graphics/pgf/contrib/twoxtwogame/twoxtwogame.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pgf/contrib/twoxtwogame/twoxtwogame.sty b/graphics/pgf/contrib/twoxtwogame/twoxtwogame.sty
index a42e6606fc..ac1845a1f3 100644
--- a/graphics/pgf/contrib/twoxtwogame/twoxtwogame.sty
+++ b/graphics/pgf/contrib/twoxtwogame/twoxtwogame.sty
@@ -12,7 +12,7 @@
% See the License for the specific language governing permissions and
% limitations under the License.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{twoxtwogame}[2024/02/23 v0.1 Tools for 2x2 Games]
+\ProvidesPackage{twoxtwogame}[2024/03/05 v0.2 Tools for 2x2 Games]
\RequirePackage{tikz}
\RequirePackage{tikz-3dplot}
@@ -21,10 +21,9 @@
\RequirePackage{tikzscale}
\RequirePackage{pgfmath-xfp}
\RequirePackage{ifthen}
-\usetikzlibrary{arrows.meta,patterns,shapes,calc,positioning,external}
+\usetikzlibrary{arrows.meta,patterns,patterns.meta,shapes,calc,positioning,external,fillbetween}
\RequirePackage{amsthm, amsmath, amsfonts, amssymb, mathtools}
\RequirePackage{etoolbox}
-\RequirePackage{bubblesort}
\makeatletter
@@ -89,7 +88,7 @@
% Row player.
\tikzset{graph,player color=\@graphkey{row player color},player x offset=\@graphkey{row player x offset},player y offset=\@graphkey{row player y offset}}%
\@playerordgraph[#1]{#2}{#3}{#4}{#5}
-
+
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt = #5 pt} \AND \lengthtest{#6 pt = #7 pt} \AND \lengthtest{#7 pt = #8 pt} \AND \lengthtest{#8 pt = #9 pt}}{
\fill[\@graphkey{point color}] (-\@graphkey{point offset},-\@graphkey{point offset}) circle[radius=\@graphkey{point radius}];
\fill[\@graphkey{point color}] (-\@graphkey{point offset},+\@graphkey{point offset}) circle[radius=\@graphkey{point radius}];
@@ -107,12 +106,78 @@
\DeclareRobustCommand{\@playerordgraph}[5][]{%
% Ordinal rankings.
- \ifthenelse{\lengthtest{#2 pt = #3 pt} \OR \lengthtest{#2 pt = #4 pt} \OR \lengthtest{#2 pt = #5 pt} \OR \lengthtest{#3 pt = #4 pt} \OR \lengthtest{#3 pt = #5 pt} \OR \lengthtest{#4 pt = #5 pt}}{
- % DO NOTHING.
- }{
- \doublebubblesort{{#2}{#3}{#4}{#5}}{\order}{{-- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}}}{-- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}}}{-- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}}}{-- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}}}}{\nodes}
- \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \nodes;
- }
+ \ifthenelse{\lengthtest{#2 pt < #3 pt} \AND \lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#2 pt < #3 pt} \AND \lengthtest{#3 pt < #5 pt} \AND \lengthtest{#5 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#2 pt < #4 pt} \AND \lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#2 pt < #4 pt} \AND \lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#2 pt < #5 pt} \AND \lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#2 pt < #5 pt} \AND \lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #2 pt} \AND \lengthtest{#2 pt < #4 pt} \AND \lengthtest{#4 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #2 pt} \AND \lengthtest{#2 pt < #5 pt} \AND \lengthtest{#5 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #5 pt} \AND \lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#3 pt < #5 pt} \AND \lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt < #3 pt} \AND \lengthtest{#3 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt < #5 pt} \AND \lengthtest{#5 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt < #2 pt} \AND \lengthtest{#2 pt < #5 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt < #5 pt} \AND \lengthtest{#5 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #3 pt} \AND \lengthtest{#3 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #4 pt} \AND \lengthtest{#4 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #2 pt} \AND \lengthtest{#2 pt < #4 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt < #3 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
+ \ifthenelse{\lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt < #2 pt}}{
+ \draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
+ }{}
% Triple Ties.
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#2 pt = #4 pt} \AND \lengthtest{#2 pt < #5 pt}}{
@@ -162,204 +227,204 @@
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#4 pt = #5 pt} \AND \lengthtest{#4 pt > #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#3 pt = #5 pt} \AND \lengthtest{#3 pt > #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#3 pt = #4 pt} \AND \lengthtest{#3 pt > #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#4 pt = #5 pt} \AND \lengthtest{#4 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#3 pt = #5 pt} \AND \lengthtest{#3 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#3 pt = #4 pt} \AND \lengthtest{#3 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
% High Ties
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt > #4 pt} \AND \lengthtest{#4 pt > #5 pt}}{
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt > #5 pt} \AND \lengthtest{#5 pt > #4 pt}}{
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#4 pt > #3 pt} \AND \lengthtest{#3 pt > #5 pt}}{
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#4 pt > #5 pt} \AND \lengthtest{#5 pt > #3 pt}}{
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#5 pt > #3 pt} \AND \lengthtest{#3 pt > #4 pt}}{
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#5 pt > #4 pt} \AND \lengthtest{#4 pt > #3 pt}}{
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt > #2 pt} \AND \lengthtest{#2 pt > #5 pt}}{
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt > #5 pt} \AND \lengthtest{#5 pt > #2 pt}}{
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #5 pt} \AND \lengthtest{#5 pt > #2 pt} \AND \lengthtest{#2 pt > #4 pt}}{
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #5 pt} \AND \lengthtest{#5 pt > #4 pt} \AND \lengthtest{#4 pt > #2 pt}}{
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#4 pt = #5 pt} \AND \lengthtest{#5 pt > #2 pt} \AND \lengthtest{#2 pt > #3 pt}}{
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#4 pt = #5 pt} \AND \lengthtest{#5 pt > #3 pt} \AND \lengthtest{#3 pt > #2 pt}}{
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
% Low Ties
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt < #5 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt < #5 pt} \AND \lengthtest{#5 pt < #4 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt < #5 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #4 pt} \AND \lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #3 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #4 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#2 pt = #5 pt} \AND \lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #3 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt < #5 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt < #5 pt} \AND \lengthtest{#5 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #5 pt} \AND \lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #4 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#3 pt = #5 pt} \AND \lengthtest{#5 pt < #4 pt} \AND \lengthtest{#4 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#4 pt = #5 pt} \AND \lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt < #3 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
\ifthenelse{\lengthtest{#4 pt = #5 pt} \AND \lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt < #2 pt}}{
\draw[{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}-, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
-
+
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[line width=\@graphkey{line width}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
% Mid Ties:
\ifthenelse{\lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt = #3 pt} \AND \lengthtest{#3 pt < #4 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -369,7 +434,7 @@
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
\ifthenelse{\lengthtest{#5 pt < #2 pt} \AND \lengthtest{#2 pt = #4 pt} \AND \lengthtest{#4 pt < #3 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -378,7 +443,7 @@
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
\ifthenelse{\lengthtest{#4 pt < #2 pt} \AND \lengthtest{#2 pt = #5 pt} \AND \lengthtest{#5 pt < #3 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -387,7 +452,7 @@
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
\ifthenelse{\lengthtest{#5 pt < #3 pt} \AND \lengthtest{#3 pt = #4 pt} \AND \lengthtest{#4 pt < #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -396,7 +461,7 @@
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
\ifthenelse{\lengthtest{#4 pt < #3 pt} \AND \lengthtest{#3 pt = #5 pt} \AND \lengthtest{#5 pt < #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -405,7 +470,7 @@
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}};
}{}
-
+
\ifthenelse{\lengthtest{#3 pt < #4 pt} \AND \lengthtest{#4 pt = #5 pt} \AND \lengthtest{#5 pt < #2 pt}}{
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pthree{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
\draw[-{Latex[length=\@graphkey{arrow length},width=\@graphkey{arrow width}]}, line width=\@graphkey{line width}, \@graphkey{player color}] \@ptwo{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pfour{\@graphkey{player x offset}}{\@graphkey{player y offset}} -- \@pone{\@graphkey{player x offset}}{\@graphkey{player y offset}};
@@ -498,7 +563,7 @@
\@graphkey{column player color},
] (-\@graphkey{point offset},-\@graphkey{point offset}) -- (+\@graphkey{point offset},-\@graphkey{point offset});
}{}
-
+
\fill[\@graphkey{point color}] (-\@graphkey{point offset},-\@graphkey{point offset}) circle[radius=\@graphkey{point radius}];
\fill[\@graphkey{point color}] (-\@graphkey{point offset},+\@graphkey{point offset}) circle[radius=\@graphkey{point radius}];
\fill[\@graphkey{point color}] (+\@graphkey{point offset},-\@graphkey{point offset}) circle[radius=\@graphkey{point radius}];
@@ -537,158 +602,564 @@
\brgraph[#1]{1}{0}{0}{0}{0}{0}{0}{0}}
\DeclareRobustCommand{\nullbrgraph}[1][]{%
\brgraph[#1]{0}{0}{0}{0}{0}{0}{0}{0}}
-
-
+
+
\DeclareRobustCommand{\brname}[8]{%
- \ifthenelse{\lengthtest{#3 pt > #1 pt}}{%
- \def\rowa{01}%
- }{%
- \ifthenelse{\lengthtest{#3 pt < #1 pt}}{%
- \def\rowa{10}%
- }{%
- \def\rowa{00}%
- }%
- }%
- \ifthenelse{\lengthtest{#4 pt > #2 pt}}{%
- \def\rowb{01}%
- }{%
- \ifthenelse{\lengthtest{#4 pt < #2 pt}}{%
- \def\rowb{10}%
- }{%
- \def\rowb{00}%
- }%
- }%
- \ifthenelse{\lengthtest{#6 pt > #5 pt}}{%
- \def\cola{01}%
- }{%
- \ifthenelse{\lengthtest{#6 pt < #5 pt}}{%
- \def\cola{10}%
- }{%
- \def\cola{00}%
- }%
- }%
- \ifthenelse{\lengthtest{#8 pt > #7 pt}}{%
- \def\colb{01}%
- }{%
- \ifthenelse{\lengthtest{#8 pt < #7 pt}}{%
- \def\colb{10}%
- }{%
- \def\colb{00}%
- }%
- }%
- \ifthenelse{%
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
- }{Null}{}%
- \ifthenelse{%
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
- }{Dress}{}%
- \ifthenelse{%
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
- }{Horseplay}{}%
- \ifthenelse{%
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
- }{Ignorance}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) %
- }{Dominant}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
- }{Coordination}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) %
- }{Cycle}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
- }{Samaritan}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
- }{Hazard}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
- }{Safety}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
- }{Aidos}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
- }{Picnic}{}%
- \ifthenelse{%
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) %
- }{Daredevil}{}%
- \ifthenelse{%
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) %
- }{Fossick}{}%
- \ifthenelse{%
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
- \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
- \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) %
- }{Heist}{}%
+ \ifthenelse{\lengthtest{#1 pt = #3 pt}}{% BEGIN( xxx)
+ \ifthenelse{\lengthtest{#2 pt = #4 pt}}{% BEGIN( xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN( x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( )
+ %Equal,Equal,Equal,Equal
+ Null
+ }{% END( )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ←)
+ %Equal,Equal,Equal,Left
+ Dress
+ }% END( ←)
+ {% BEGIN( →)
+ %Equal,Equal,Equal,Right
+ Dress
+ }}% END( →)
+ }{% END( x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN( ←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ← )
+ %Equal,Equal,Left,Equal
+ Dress
+ }{% END( ← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ←←)
+ %Equal,Equal,Left,Left
+ Ignorance
+ }% END( ←←)
+ {% BEGIN( ←→)
+ %Equal,Equal,Left,Right
+ Horseplay
+ }}% END( ←→)
+ }% END( ←x)
+ {% BEGIN( →x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( → )
+ %Equal,Equal,Right,Equal
+ Dress
+ }{% END( ← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( →←)
+ %Equal,Equal,Right,Left
+ Horseplay
+ }% END( →←)
+ {% BEGIN( →→)
+ %Equal,Equal,Right,Right
+ Ignorance
+ }}% END( →→)
+ }}% END( →x)
+ }{% END( xx)
+ \ifthenelse{\lengthtest{#2 pt > #4 pt}}{% BEGIN( ↑xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN( ↑ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↑ )
+ %Equal,Up,Equal,Equal
+ Dress
+ }{% END( ↑ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↑ ←)
+ %Equal,Up,Equal,Left
+ Daredevil
+ }% END( ↑ ←)
+ {% BEGIN( ↑ →)
+ %Equal,Up,Equal,Right
+ Heist
+ }}% END( ↑ →)
+ }{% END( ↑ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN( ↑←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↑← )
+ %Equal,Up,Left,Equal
+ Heist
+ }{% END( ↑← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↑←←)
+ %Equal,Up,Left,Left
+ Aidos
+ }% END( ↑←←)
+ {% BEGIN( ↑←→)
+ %Equal,Up,Left,Right
+ Hazard
+ }}% END( ↑←→)
+ }% END( ↑←x)
+ {% BEGIN( ↑→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↑→ )
+ %Equal,Up,Right,Equal
+ Fossick
+ }{% END( ↑→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↑→←)
+ %Equal,Up,Right,Left
+ Safety
+ }% END( ↑→←)
+ {% BEGIN( ↑→→)
+ %Equal,Up,Right,Right
+ Picnic
+ }}% END( ↑→→)
+ }}% END( ↑→x)
+ }% END( ↑xx)
+ {% BEGIN( ↓xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN( ↓ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↓ )
+ %Equal,Down,Equal,Equal
+ Dress
+ }{% END( ↓ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↓ ←)
+ %Equal,Down,Equal,Left
+ Heist
+ }% END( ↓ ←)
+ {% BEGIN( ↓ →)
+ %Equal,Down,Equal,Right
+ Fossick
+ }}% END( ↓ →)
+ }{% END( ↓ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN( ↓←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↓← )
+ %Equal,Down,Left,Equal
+ Daredevil
+ }{% END( ↓← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↓←←)
+ %Equal,Down,Left,Left
+ Aidos
+ }% END( ↓←←)
+ {% BEGIN( ↓←→)
+ %Equal,Down,Left,Right
+ Safety
+ }}% END( ↓←→)
+ }% END( ↓←x)
+ {% BEGIN( ↓→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN( ↓→ )
+ %Equal,Down,Right,Equal
+ Heist
+ }{% END( ↓→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN( ↓→←)
+ %Equal,Down,Right,Left
+ Hazard
+ }% END( ↓→←)
+ {% BEGIN( ↓→→)
+ %Equal,Down,Right,Right
+ Picnic
+ }}% END( ↓→→)
+ }}% END( ↓→x)
+ }}% END( ↓xx)
+ }{% END( xxx)
+ \ifthenelse{\lengthtest{#1 pt > #3 pt}}{% BEGIN(↑xxx)
+ \ifthenelse{\lengthtest{#2 pt = #4 pt}}{% BEGIN(↑ xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↑ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑ )
+ %Up,Equal,Equal,Equal
+ Dress
+ }{% END(↑ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑ ←)
+ %Up,Equal,Equal,Left
+ Heist
+ }% END(↑ ←)
+ {% BEGIN(↑ →)
+ %Up,Equal,Equal,Right
+ Daredevil
+ }}% END(↑ →)
+ }{% END(↑ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↑ ←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑ ← )
+ %Up,Equal,Left,Equal
+ Fossick
+ }{% END(↑ ← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑ ←←)
+ %Up,Equal,Left,Left
+ Picnic
+ }% END(↑ ←←)
+ {% BEGIN(↑ ←→)
+ %Up,Equal,Left,Right
+ Safety
+ }}% END(↑ ←→)
+ }% END(↑ ←x)
+ {% BEGIN(↑ →x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑ → )
+ %Up,Equal,Right,Equal
+ Heist
+ }{% END(↑ → )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑ →←)
+ %Up,Equal,Right,Left
+ Hazard
+ }% END(↑ →←)
+ {% BEGIN(↑ →→)
+ %Up,Equal,Right,Right
+ Aidos
+ }}% END(↑ →→)
+ }}% END(↑ →x)
+ }{% END(↑ xx)
+ \ifthenelse{\lengthtest{#2 pt > #4 pt}}{% BEGIN(↑↑xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↑↑ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↑ )
+ %Up,Up,Equal,Equal
+ Ignorance
+ }{% END(↑↑ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↑ ←)
+ %Up,Up,Equal,Left
+ Aidos
+ }% END(↑↑ ←)
+ {% BEGIN(↑↑ →)
+ %Up,Up,Equal,Right
+ Aidos
+ }}% END(↑↑ →)
+ }{% END(↑↑ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↑↑←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↑← )
+ %Up,Up,Left,Equal
+ Picnic
+ }{% END(↑↑← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↑←←)
+ %Up,Up,Left,Left
+ Dominant
+ }% END(↑↑←←)
+ {% BEGIN(↑↑←→)
+ %Up,Up,Left,Right
+ Samaritan
+ }}% END(↑↑←→)
+ }% END(↑↑←x)
+ {% BEGIN(↑↑→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↑→ )
+ %Up,Up,Right,Equal
+ Picnic
+ }{% END(↑↑→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↑→←)
+ %Up,Up,Right,Left
+ Samaritan
+ }% END(↑↑→←)
+ {% BEGIN(↑↑→→)
+ %Up,Up,Right,Right
+ Dominant
+ }}% END(↑↑→→)
+ }}% END(↑↑→x)
+ }% END(↑↑xx)
+ {% BEGIN(↑↓xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↑↓ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↓ )
+ %Up,Down,Equal,Equal
+ Horseplay
+ }{% END(↑↓ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↓ ←)
+ %Up,Down,Equal,Left
+ Hazard
+ }% END(↑↓ ←)
+ {% BEGIN(↑↓ →)
+ %Up,Down,Equal,Right
+ Safety
+ }}% END(↑↓ →)
+ }{% END(↑↓ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↑↓←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↓← )
+ %Up,Down,Left,Equal
+ Safety
+ }{% END(↑↓← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↓←←)
+ %Up,Down,Left,Left
+ Samaritan
+ }% END(↑↓←←)
+ {% BEGIN(↑↓←→)
+ %Up,Down,Left,Right
+ Coordination
+ }}% END(↑↓←→)
+ }% END(↑↓←x)
+ {% BEGIN(↑↓→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↑↓→ )
+ %Up,Down,Right,Equal
+ Hazard
+ }{% END(↑↓→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↑↓→←)
+ %Up,Down,Right,Left
+ Cycle
+ }% END(↑↓→←)
+ {% BEGIN(↑↓→→)
+ %Up,Down,Right,Right
+ Samaritan
+ }}% END(↑↓→→)
+ }}% END(↑↓→x)
+ }}% END(↑↓xx)
+ }% END(↑xxx)
+ {% BEGIN(↓xxx)
+ \ifthenelse{\lengthtest{#2 pt = #4 pt}}{% BEGIN(↓ xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↓ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓ )
+ %Down,Equal,Equal,Equal
+ Dress
+ }{% END(↓ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓ ←)
+ %Down,Equal,Equal,Left
+ Fossick
+ }% END(↓ ←)
+ {% BEGIN(↓ →)
+ %Down,Equal,Equal,Right
+ Heist
+ }}% END(↓ →)
+ }{% END(↓ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↓ ←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓ ← )
+ %Down,Equal,Equal,Equal
+ Dress
+ }{% END(↓ ← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓ ←←)
+ %Down,Equal,Equal,Left
+ Picnic
+ }% END(↓ ←←)
+ {% BEGIN(↓ ←→)
+ %Down,Equal,Equal,Right
+ Hazard
+ }}% END(↓ ←→)
+ }% END(↓ ←x)
+ {% BEGIN(↓ →x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓ → )
+ %Down,Equal,Right,Equal
+ Daredevil
+ }{% END(↓ → )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓ →←)
+ %Down,Equal,Right,Left
+ Safety
+ }% END(↓ →←)
+ {% BEGIN(↓ →→)
+ %Down,Equal,Right,Right
+ Aidos
+ }}% END(↓ →→)
+ }}% END(↓ →x)
+ }{% END(↓ xx)
+ \ifthenelse{\lengthtest{#2 pt > #4 pt}}{% BEGIN(↓↑xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↓↑ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↑ )
+ %Down,Up,Equal,Equal
+ Horseplay
+ }{% END(↓↑ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↑ ←)
+ %Down,Up,Equal,Left
+ Safety
+ }% END(↓↑ ←)
+ {% BEGIN(↓↑ →)
+ %Down,Up,Equal,Right
+ Hazard
+ }}% END(↓↑ →)
+ }{% END(↓↑ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↓↑←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↑← )
+ %Down,Up,Left,Equal
+ Hazard
+ }{% END(↓↑← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↑←←)
+ %Down,Up,Left,Left
+ Samaritan
+ }% END(↓↑←←)
+ {% BEGIN(↓↑←→)
+ %Down,Up,Left,Right
+ Cycle
+ }}% END(↓↑←→)
+ }% END(↓↑←x)
+ {% BEGIN(↓↑→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↑→ )
+ %Down,Up,Right,Equal
+ Safety
+ }{% END(↓↑→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↑→←)
+ %Down,Up,Right,Left
+ Coordination
+ }% END(↓↑→←)
+ {% BEGIN(↓↑→→)
+ %Down,Up,Right,Right
+ Samaritan
+ }}% END(↓↑→→)
+ }}% END(↓ →x)
+ }% END(↓↑xx)
+ {% BEGIN(↓↓xx)
+ \ifthenelse{\lengthtest{#5 pt = #6 pt}}{% BEGIN(↓↓ x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↓ )
+ %Down,Down,Equal,Equal
+ Ignorance
+ }{% END(↓↓ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↓ ←)
+ %Down,Down,Equal,Left
+ Picnic
+ }% END(↓↓ ←)
+ {% BEGIN(↓↓ →)
+ %Down,Down,Equal,Right
+ Picnic
+ }}% END(↓↓ →)
+ }{% END(↓↓ x)
+ \ifthenelse{\lengthtest{#5 pt > #6 pt}}{% BEGIN(↓↓←x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↓← )
+ %Down,Down,Left,Equal
+ Aidos
+ }{% END(↓↓← )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↓←←)
+ %Down,Down,Left,Left
+ Dominant
+ }% END(↓↓←←)
+ {% BEGIN(↓↓←→)
+ %Down,Down,Left,Right
+ Samaritan
+ }}% END(↓↓←→)
+ }% END(↓↓←x)
+ {% BEGIN(↓↓→x)
+ \ifthenelse{\lengthtest{#7 pt = #8 pt}}{% BEGIN(↓↓→ )
+ %Down,Down,Right,Equal
+ Aidos
+ }{% END(↓↓→ )
+ \ifthenelse{\lengthtest{#7 pt > #8 pt}}{% BEGIN(↓↓→←)
+ %Down,Down,Right,Left
+ Samaritan
+ }% END(↓↓→←)
+ {% BEGIN(↓↓→→)
+ %Down,Down,Right,Right
+ Dominant
+ }}% END(↓↓→→)
+ }}% END(↓↓→x)
+ }}% END(↓↓xx)
+ }}% END(↓xxx)
}
+
+% \DeclareRobustCommand{\brnameB}[8]{%
+% \ifthenelse{\lengthtest{#3 pt > #1 pt}}{%
+% \def\rowa{01}%
+% }{%
+% \ifthenelse{\lengthtest{#3 pt < #1 pt}}{%
+% \def\rowa{10}%
+% }{%
+% \def\rowa{00}%
+% }%
+% }%
+% \ifthenelse{\lengthtest{#4 pt > #2 pt}}{%
+% \def\rowb{01}%
+% }{%
+% \ifthenelse{\lengthtest{#4 pt < #2 pt}}{%
+% \def\rowb{10}%
+% }{%
+% \def\rowb{00}%
+% }%
+% }%
+% \ifthenelse{\lengthtest{#6 pt > #5 pt}}{%
+% \def\cola{01}%
+% }{%
+% \ifthenelse{\lengthtest{#6 pt < #5 pt}}{%
+% \def\cola{10}%
+% }{%
+% \def\cola{00}%
+% }%
+% }%
+% \ifthenelse{\lengthtest{#8 pt > #7 pt}}{%
+% \def\colb{01}%
+% }{%
+% \ifthenelse{\lengthtest{#8 pt < #7 pt}}{%
+% \def\colb{10}%
+% }{%
+% \def\colb{00}%
+% }%
+% }%
+% \ifthenelse{%
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
+% }{Null}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
+% }{Dress}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
+% }{Horseplay}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{00}\) %
+% }{Ignorance}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) %
+% }{Dominant}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
+% }{Coordination}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) %
+% }{Cycle}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
+% }{Samaritan}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
+% }{Hazard}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{01}\) %
+% }{Safety}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
+% }{Aidos}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{10}\) %
+% }{Picnic}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) %
+% }{Daredevil}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) %
+% }{Fossick}{}%
+% \ifthenelse{%
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{01} \AND \equal{\rowb}{00} \AND \equal{\cola}{10} \AND \equal{\colb}{00}\) \OR %
+% \(\equal{\rowa}{10} \AND \equal{\rowb}{00} \AND \equal{\cola}{00} \AND \equal{\colb}{10}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{10} \AND \equal{\cola}{00} \AND \equal{\colb}{01}\) \OR %
+% \(\equal{\rowa}{00} \AND \equal{\rowb}{01} \AND \equal{\cola}{01} \AND \equal{\colb}{00}\) %
+% }{Heist}{}%
+% }
+
\DeclareRobustCommand{\jointgraph}[5][%
border color=.,%
color=.,%
@@ -698,7 +1169,7 @@
\begin{tikzpicture}[anchor=center]
% Border.
\draw[draw=\@graphkey{border color},line width=0.02em] (-0.35em,-0.35em) rectangle (0.35em,0.35em);
-
+
% Joint.
\fill[fill=\@graphkey{color},opacity=#2] (-0.05em,0.05em) rectangle (-0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity=#3] (0.05em,0.05em) rectangle (0.3em, 0.3em);
@@ -720,13 +1191,13 @@
% Border.
\draw[draw=\@graphkey{border color},line width=0.02em] (-0.35em,-0.35em) rectangle (0.35em,0.35em);
\draw[draw=\@graphkey{column player color},line width=0.02em] (-0.35em,0.4em) -- (0.35em,0.4em);
-
+
% Joint.
\fill[fill=\@graphkey{color},opacity={#2 /(#2 + #3)}] (-0.05em,0.05em) rectangle (-0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity={#3 /(#2 + #3)}] (0.05em,0.05em) rectangle (0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity={#4 /(#4 + #5)}] (-0.05em,-0.05em) rectangle (-0.3em, -0.3em);
\fill[fill=\@graphkey{color},opacity={#5 /(#4 + #5)}] (0.05em,-0.05em) rectangle (0.3em, -0.3em);
-
+
% Marginal.
\fill[fill=\@graphkey{row player color},opacity={#2 + #3}] (-0.4em,0.05em) rectangle (-0.65em, 0.3em);
\fill[fill=\@graphkey{row player color},opacity={#3 + #5}] (-0.4em,-0.05em) rectangle (-0.65em, -0.3em);
@@ -746,13 +1217,13 @@
% Border.
\draw[draw=\@graphkey{border color},line width=0.02em] (-0.35em,-0.35em) rectangle (0.35em,0.35em);
\draw[draw=\@graphkey{row player color},line width=0.02em] (-0.4em,-0.35em) -- (-0.4em,0.35em);
-
+
% Joint.
\fill[fill=\@graphkey{color},opacity={#2 /(#2 + #4)}] (-0.05em,0.05em) rectangle (-0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity={#3 /(#3 + #5)}] (0.05em,0.05em) rectangle (0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity={#4 /(#2 + #4)}] (-0.05em,-0.05em) rectangle (-0.3em, -0.3em);
\fill[fill=\@graphkey{color},opacity={#5 /(#3 + #5)}] (0.05em,-0.05em) rectangle (0.3em, -0.3em);
-
+
% Marginal.
\fill[fill=\@graphkey{column player color},opacity={#2 + #4}] (-0.05em,0.4em) rectangle (-0.3em, 0.65em);
\fill[fill=\@graphkey{column player color},opacity={#3 + #5}] (0.05em,0.4em) rectangle (0.3em, 0.65em);
@@ -771,11 +1242,11 @@
\raisebox{-0.15em}{%
\begin{tikzpicture}[anchor=center]
\draw[draw=\@graphkey{border color},line width=0.02em] (-0.35em,-0.35em) rectangle (0.35em,0.35em);
-
+
% Marginal.
\fill[fill=\@graphkey{row player color},opacity={#2 + #3}] (-0.4em,0.05em) rectangle (-0.65em, 0.3em);
\fill[fill=\@graphkey{row player color},opacity={#3 + #5}] (-0.4em,-0.05em) rectangle (-0.65em, -0.3em);
-
+
\fill[fill=\@graphkey{column player color},opacity={#2 + #4}] (-0.05em,0.4em) rectangle (-0.3em, 0.65em);
\fill[fill=\@graphkey{column player color},opacity={#3 + #5}] (0.05em,0.4em) rectangle (0.3em, 0.65em);
\end{tikzpicture}%
@@ -794,24 +1265,23 @@
\begin{tikzpicture}[anchor=center]
% Border.
\draw[draw=\@graphkey{border color},line width=0.02em] (-0.35em,-0.35em) rectangle (0.35em,0.35em);
-
+
% Joint.
\fill[fill=\@graphkey{color},opacity=#2] (-0.05em,0.05em) rectangle (-0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity=#3] (0.05em,0.05em) rectangle (0.3em, 0.3em);
\fill[fill=\@graphkey{color},opacity=#4] (-0.05em,-0.05em) rectangle (-0.3em, -0.3em);
\fill[fill=\@graphkey{color},opacity=#5] (0.05em,-0.05em) rectangle (0.3em, -0.3em);
-
+
% Marginal.
\fill[fill=\@graphkey{column player color},opacity=#2+#4] (-0.05em,0.4em) rectangle (-0.3em, 0.65em);
\fill[fill=\@graphkey{column player color},opacity=#3+#5] (0.05em,0.4em) rectangle (0.3em, 0.65em);
-
+
\fill[fill=\@graphkey{row player color},opacity=#2+#3] (-0.4em,0.05em) rectangle (-0.65em, 0.3em);
\fill[fill=\@graphkey{row player color},opacity=#4+#5] (-0.4em,-0.05em) rectangle (-0.65em, -0.3em);
\end{tikzpicture}%
}}
-% Switch to tikzset
\DeclareRobustCommand{\payoffstable}[9][]{%
\@setdefaultgraphkey%
\tikzset{
@@ -927,7 +1397,7 @@
\addplot[color=black,opacity=0.1] coordinates {(-0.25,-1.0) (-0.25,1)};
\addplot[color=black,opacity=0.1] coordinates {(0.25,-1.0) (0.25,1)};
\addplot[color=black,opacity=0.1] coordinates {(0.75,-1.0) (0.75,1)};
-
+
% Faint boundaries.
\addplot[color=black,opacity=0.1] coordinates {(-1.1,-0.75) (-1,-0.75)};
\addplot[color=black,opacity=0.1] coordinates {(1,-0.75) (1.1,-0.75)};
@@ -937,7 +1407,7 @@
\addplot[color=black,opacity=0.1] coordinates {(1,0.25) (1.1,0.25)};
\addplot[color=black,opacity=0.1] coordinates {(-1.1,0.75) (-1,0.75)};
\addplot[color=black,opacity=0.1] coordinates {(1,0.75) (1.1,0.75)};
-
+
\addplot[color=black,opacity=0.1] coordinates {(-0.75,-1.1) (-0.75,-1)};
\addplot[color=black,opacity=0.1] coordinates {(-0.75,1.0) (-0.75,1.1)};
\addplot[color=black,opacity=0.1] coordinates {(-0.25,-1.1) (-0.25,-1)};
@@ -960,40 +1430,40 @@
draw opacity=0.0,
]
coordinates {(0.25,0.25) (0.75,0.75) (-0.25,-0.75) (-0.75,-0.25)};
-
+
% Left equilibrium.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.25,0.73) (-0.25,-0.23)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.75,0.23) (0.75,-0.73)};
-
+
% Top equilibrium.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.73,0.75) (0.23,0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.23,-0.25) (0.73,-0.25)};
-
+
% Right equilibrium.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.25,1.0) (0.25,0.77)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.25,-0.27) (0.25,-1.0)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.75,1.0) (-0.75,0.27)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.75,-0.77) (-0.75,-1.0)};
-
+
% Bottom equilibrium.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-1.0,0.25) (-0.27,0.25)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.77,0.25) (1.0,0.25)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-1.0,-0.75) (-0.77,-0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.27,-0.75) (1.0,-0.75)};
-
+
% Three-equilibrium.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.25,0.27) (0.25,0.75) (0.73,0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.27,0.25) (0.75,0.25) (0.75,0.73)};
-
+
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.75,-0.27) (-0.75,-0.75) (-0.27,-0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.73,-0.25) (-0.25,-0.25) (-0.25,-0.73)};
-
+
% Faint stuff.
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-1.1,-0.75) (-1,-0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(1,-0.75) (1.1,-0.75)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-1.1,0.25) (-1,0.25)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(1,0.25) (1.1,0.25)};
-
+
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.75,-1.1) (-0.75,-1)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(-0.75,1.0) (-0.75,1.1)};
\addplot[color=black,style=semithick,opacity=0.5] coordinates {(0.25,-1.1) (0.25,-1)};
@@ -1182,41 +1652,46 @@
% = targetWidth - (targetWidth + measuredWidth)
% = 2*targetWidth - measuredWidth
\newsavebox{\@candidateBox}
-\newcommand{\@reWidthToTargetWidth}[2]{%
- \pgfmathsetmacro{\@targetWidth}{#2}%
- \pgfmathsetmacro{\@setWidth}{#2}%
- \begin{lrbox}{\@candidateBox}{\tikzset{external/export=false}#1}\end{lrbox}%
+\newcommand{\@reWidthToTargetWidth}[3]{%
+ \pgfmathsetmacro{\@targetWidth}{#3}%
+ \pgfmathsetmacro{\@setWidth}{#3}%
+ \begin{lrbox}{\@candidateBox}{\tikzset{external/export=false}#2}\end{lrbox}%
\pgfmathsetmacro{\@setWidth}{2*\@targetWidth-\wd\@candidateBox}%
#1%
}
-\newcommand{\@reScaleToTargetWidth}[2]{%
- \pgfmathsetmacro{\@targetWidth}{#2}%
- \pgfmathsetmacro{\@setWidth}{#2}%
- \pgfmathsetmacro{\@setScale}{4}%
- \begin{lrbox}{\@candidateBox}{\tikzset{external/export=false}#1}\end{lrbox}%
+\newcommand{\@reScaleToTargetWidth}[3]{%
+ \pgfmathsetmacro{\@targetWidth}{#3}%
+ \pgfmathsetmacro{\@setWidth}{#3}%
+ \pgfmathsetmacro{\@setScale}{4}%
+ \begin{lrbox}{\@candidateBox}{\tikzset{external/export=false}#2}\end{lrbox}%
\pgfmathsetmacro{\@setScale}{\@setScale*\@targetWidth/\wd\@candidateBox}%
#1%
}
+
+\newif\ifnocontent
\newcommand{\@setdefaultmarginalsimplexkey}{%
\tikzset{
- marginalsimplex/.is family,
- marginalsimplex,
- width/.initial=\linewidth,
- scale/.initial=1.0,
+ marginalsimplex/.is family,%
+ marginalsimplex,%
+ width/.initial=\linewidth,%
+ scale/.initial=1.0,%
row player label/.initial={\footnotesize Row Player},%
column player label/.initial={\footnotesize Column Player},%
row player first strategy label/.initial={\footnotesize A},%
row player second strategy label/.initial={\footnotesize B},%
column player first strategy label/.initial={\footnotesize A},%
column player second strategy label/.initial={\footnotesize B},%
- points/.initial=,
- regions/.initial=,
- contour/.initial=,
- heatmap/.initial=,
- quiver/.initial=,
- quiver scale arrows/.initial=0.1,
- streams/.initial=,
+ points/.initial=,%
+ regions/.initial=,%
+ contour/.initial=,%
+ heatmap/.initial=,%
+ quiver/.initial=,%
+ quiver scale arrows/.initial=0.1,%
+ streams/.initial=,%
+ no content/.is if=nocontent,%
+ epsilon/.initial=0.01,%
+ samples/.initial=41,%
}%
}
\@setdefaultmarginalsimplexkey
@@ -1224,7 +1699,10 @@
\DeclareRobustCommand{\marginalsimplex}[1][]{%
\tikzset{marginalsimplex,#1} % Process Keys passed to command
- \@reWidthToTargetWidth{\marginalsimplexIMPL[#1]}{\marginalsimplexkey{width}}%
+ \@reWidthToTargetWidth{%
+ \marginalsimplexIMPL[#1]}{%
+ \marginalsimplexIMPL[#1,no content]}{%
+ \marginalsimplexkey{width}}%
\@setdefaultmarginalsimplexkey%
}
@@ -1259,55 +1737,57 @@
},
axis on top,
after end axis/.code={
- \path (axis cs:0,0)
+ \path (axis cs:0,0)
node [anchor=east] {\marginalsimplexkey{row player second strategy label}}
node [anchor=north] {\marginalsimplexkey{column player second strategy label}};
- \path (axis cs:0,1)
+ \path (axis cs:0,1)
node [anchor=east] {\marginalsimplexkey{row player first strategy label}};
- \path (axis cs:1,0)
+ \path (axis cs:1,0)
node [anchor=north] {\marginalsimplexkey{column player first strategy label}};
},
view={0}{90},
]
\tikzset{marginalsimplex,#1}
- \ifthenelse{\equal{\marginalsimplexkey{quiver}}{}}{}{%
- % First (Row) player is y[j], v[j,:]
- % Second (Column) player is x[j], u[:,i]
- % u and v are indexed [y,x]
- \addplot[
- quiver={
- u=\thisrow{u},
- v=\thisrow{v},
- w=1,% 3 looked strange...
- scale arrows=\marginalsimplexkey{quiver scale arrows},
- },
- -stealth,
- black,
- ] table {\marginalsimplexkey{quiver}};
- }
- \ifthenelse{\equal{\marginalsimplexkey{heatmap}}{}}{}{%
- \addplot[
- matrix plot*,%
- point meta=explicit,%
- ] file[]{\marginalsimplexkey{heatmap}};
- }
- \ifthenelse{\equal{\marginalsimplexkey{points}}{}}{}{%
- \addplot[%
- scatter,%
- only marks,%
- mark size=0.1em,%
- scatter src=explicit,%
- scatter/use mapped color={draw opacity=0,fill=mapped color},%
- ] table[x=x,y=y,meta=c]{\marginalsimplexkey{points}};
- }
+ \ifnocontent \else
+ \ifthenelse{\equal{\marginalsimplexkey{quiver}}{}}{}{%
+ % First (Row) player is y[j], v[j,:]
+ % Second (Column) player is x[j], u[:,i]
+ % u and v are indexed [y,x]
+ \addplot[
+ quiver={
+ u=\thisrow{u},
+ v=\thisrow{v},
+ w=1,% 3 looked strange...
+ scale arrows=\marginalsimplexkey{quiver scale arrows},
+ },
+ -stealth,
+ black,
+ ] table {\marginalsimplexkey{quiver}};
+ }
+ \ifthenelse{\equal{\marginalsimplexkey{heatmap}}{}}{}{%
+ \addplot[
+ matrix plot*,%
+ point meta=explicit,%
+ ] file[]{\marginalsimplexkey{heatmap}};
+ }
+ \ifthenelse{\equal{\marginalsimplexkey{points}}{}}{}{%
+ \addplot[%
+ scatter,%
+ only marks,%
+ mark size=0.1em,%
+ scatter src=explicit,%
+ scatter/use mapped color={draw opacity=0,fill=mapped color},%
+ ] table[x=x,y=y,meta=c]{\marginalsimplexkey{points}};
+ }
+ \fi
\end{axis}%
\end{tikzpicture}%
}
-
\newif\ifdebugname
\newif\ifdebugaxes
\newif\ifdebugcamera
+\newif\ifnoequilibria
\newcommand{\@setdefaultpolytopekey}{%
\tikzset{
polytope/.is family,
@@ -1324,6 +1804,8 @@
debug name/.is if=debugname,%
debug axes/.is if=debugaxes,%
debug camera/.is if=debugcamera,%
+ no equilibria/.is if=noequilibria,%
+ segments/.initial=6,%
}%
}
\@setdefaultpolytopekey
@@ -1342,7 +1824,10 @@
\DeclareRobustCommand{\polytope}[9][]{%
\tikzset{polytope,#1}%
- \@reScaleToTargetWidth{\polytopeIMPL[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}{\@polytopekey{width}}%
+ \@reScaleToTargetWidth{%
+ \polytopeIMPL[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}{%
+ \polytopeIMPL[#1,no equilibria]{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}{%
+ \@polytopekey{width}}%
\@setdefaultpolytopekey%
}
@@ -1354,24 +1839,24 @@
]%
% Process keys here to allow caching to update.
\tikzset{polytope,#1}
-
+
% Simplex points.
\pgfmathsetlengthmacro{\ox}{{0.0}}
\pgfmathsetlengthmacro{\oy}{{0.0}}
\pgfmathsetlengthmacro{\oz}{{0.0}}
-
+
\pgfmathsetlengthmacro{\aax}{{ -0.5}}
\pgfmathsetlengthmacro{\aay}{{-sqrt(3)/6}}
\pgfmathsetlengthmacro{\aaz}{{-sqrt(6)/12}}
-
+
\pgfmathsetlengthmacro{\abx}{{0.5}}
\pgfmathsetlengthmacro{\aby}{{-sqrt(3)/6}}
\pgfmathsetlengthmacro{\abz}{{-sqrt(6)/12}}
-
+
\pgfmathsetlengthmacro{\bax}{{0.0}}
\pgfmathsetlengthmacro{\bay}{{sqrt(3)/3}}
\pgfmathsetlengthmacro{\baz}{{-sqrt(6)/12}}
-
+
\pgfmathsetlengthmacro{\bbx}{{0.0}}
\pgfmathsetlengthmacro{\bby}{{0.0}}
\pgfmathsetlengthmacro{\bbz}{{sqrt(6)/4}}
@@ -1382,7 +1867,7 @@
\@perspectiveline[line width scale=0.4, layer scale=1.1]{\abx}{\aby}{\abz}{\bax}{\bay}{\baz}
\@perspectiveline[line width scale=0.4, layer scale=1.1]{\abx}{\aby}{\abz}{\bbx}{\bby}{\bbz}
\@perspectiveline[line width scale=0.4, layer scale=1.1]{\bax}{\bay}{\abz}{\bbx}{\bby}{\bbz}
-
+
\ifdebugaxes
\draw[thick,->] (0,0,0) -- (1,0,0) node[anchor=north east]{$x$};
\draw[thick,->] (0,0,0) -- (0,1,0) node[anchor=north west]{$y$};
@@ -1406,12 +1891,14 @@
color=black,size=0pt,%
label=\@polytopekey{row player second strategy label}\@polytopekey{column player second strategy label},%
]{0}{0}{0}{1}
-
+
\ifdebugcamera
\@cameraline{}
\else \fi
-
- \eqpolytope[]{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}
+
+ \ifnoequilibria \else
+ \eqpolytope[]{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}
+ \fi
\end{tikzpicture}%
}
@@ -1426,20 +1913,20 @@
\newcommand{\@eqpolytopekey}[1]{\pgfkeysvalueof{/tikz/eqpolytope/#1}}
\DeclareRobustCommand{\eqpolytope}[9][]{%
\tikzset{eqpolytope,#1}
-
+
% Scale macros.
\pgfmathsetmacro{\scola}{{abs(#2 - #4)}} % scale col first, |g_1^{A-B,A}|
\pgfmathsetmacro{\scolb}{{abs(#3 - #5)}} % scale col second, |g_1^{A-B,B}|
\pgfmathsetmacro{\srowa}{{abs(#6 - #7)}} % scale col first, |g_2^{A,A-B}|
\pgfmathsetmacro{\srowb}{{abs(#8 - #9)}} % scale col second, |g_2^{B,A-B}|
-
+
\pgfmathsetmacro{\saa}{\srowa * \scola}
\pgfmathsetmacro{\sab}{\srowa * \scolb}
\pgfmathsetmacro{\sba}{\srowb * \scola}
\pgfmathsetmacro{\sbb}{\srowb * \scolb}
-
+
% \@setScaling{1.0}{1.0}{1.0}{1.0} % Default scaling.
-
+
\ifthenelse{\lengthtest{#2 pt = #4 pt}}{%#2 = #4
\ifthenelse{\lengthtest{#3 pt = #5 pt}}{%#3 = #5
\ifthenelse{\lengthtest{#6 pt = #7 pt}}{%#6 = #7
@@ -1449,7 +1936,7 @@
\ifdebugname
\point[label=eeee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
@@ -1457,7 +1944,7 @@
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{1}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
-
+
% NE
\def\n{6}
\foreach \i in {0,...,\n} {
@@ -1470,7 +1957,7 @@
\ifdebugname
\point[label=eeeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{1}{0}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{1}{0}{0}{0}
@@ -1483,7 +1970,7 @@
\ifdebugname
\point[label=eeel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
@@ -1500,7 +1987,7 @@
\ifdebugname
\point[label=eege]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
@@ -1514,7 +2001,7 @@
\ifdebugname
\point[label=eegg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
% NE
@@ -1524,10 +2011,10 @@
\ifdebugname
\point[label={eegl}]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
@@ -1552,7 +2039,7 @@
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0.5}{0.0}{0.5}{0.0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
@@ -1573,7 +2060,7 @@
\ifdebugname
\point[label=eele]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
@@ -1588,10 +2075,10 @@
\ifdebugname
\point[label=eelg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
%
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0.5}{0}{0.5}
@@ -1608,11 +2095,11 @@
\@setBaryPointsA{0}{0.5}{0}{0.5}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0.5}{0}{0.5}
@@ -1631,7 +2118,7 @@
\ifdebugname
\point[label=eell]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
% NE
@@ -1648,7 +2135,7 @@
\ifdebugname
\point[label=egee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{1}{0}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{1}{0}{0}{0}
@@ -1662,7 +2149,7 @@
\ifdebugname
\point[label=egeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{1}{0}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{1}{0}{0}{0}
@@ -1676,7 +2163,7 @@
\ifdebugname
\point[label=egel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
% NE
@@ -1690,7 +2177,7 @@
\ifdebugname
\point[label=egge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
% NE
@@ -1701,7 +2188,7 @@
\ifdebugname
\point[label=eggg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
% NE
@@ -1711,10 +2198,10 @@
\ifdebugname
\point[label=eggl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
@@ -1728,7 +2215,7 @@
\ifdebugname
\point[label=egle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{1}{0}
% NE
@@ -1740,35 +2227,35 @@
\ifdebugname
\point[label=eglg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0.5}{0}{0.5}{0}
\@setBaryPointsB{0}{1}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}
}{%#8 < #9
% egll
\ifdebugname
\point[label=egll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{1}{0}{0}%(C)CE
}
@@ -1782,7 +2269,7 @@
\ifdebugname
\point[label=elee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
@@ -1796,7 +2283,7 @@
\ifdebugname
\point[label=eleg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
% NE
@@ -1806,10 +2293,10 @@
\ifdebugname
\point[label=elel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{0}{1}
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}
@@ -1822,7 +2309,7 @@
\ifdebugname
\point[label=elge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
@@ -1836,7 +2323,7 @@
\ifdebugname
\point[label=llgg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{1}{0}
% NE
@@ -1846,24 +2333,24 @@
\ifdebugname
\point[label=elgl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0}{0.5}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0.5}{0}{0.5}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}
}
@@ -1875,7 +2362,7 @@
\ifdebugname
\point[label=elle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
% NE
@@ -1886,10 +2373,10 @@
\ifdebugname
\point[label=ellg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0.5}{0.5}{0}
@@ -1900,7 +2387,7 @@
\ifdebugname
\point[label=elll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{0}{1}%(C)CE
}
@@ -1918,7 +2405,7 @@
\ifdebugname
\point[label=geee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
@@ -1933,7 +2420,7 @@
\ifdebugname
\point[label=geeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
% NE
@@ -1943,7 +2430,7 @@
\ifdebugname
\point[label=geel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
@@ -1960,10 +2447,10 @@
\ifdebugname
\point[label=gege]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{0}{0}{1}
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}
@@ -1973,7 +2460,7 @@
\ifdebugname
\point[label=gegg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{1}{0}{0}{0}%(C)CE
}{%#8 < #9
@@ -1981,24 +2468,24 @@
\ifdebugname
\point[label=gegl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0}{0.5}{0}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{0.5}{0}{0.5}
\@setBaryPointsB{1}{0}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}
}
@@ -2010,7 +2497,7 @@
\ifdebugname
\point[label=gele]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
% NE
@@ -2021,10 +2508,10 @@
\ifdebugname
\point[label=gelg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0.5}{0}{0.5}
@@ -2036,7 +2523,7 @@
\ifdebugname
\point[label=gell]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
% NE
@@ -2053,7 +2540,7 @@
\ifdebugname
\point[label=ggee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
% NE
@@ -2065,7 +2552,7 @@
\ifdebugname
\point[label=ggeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
% NE
@@ -2076,7 +2563,7 @@
\ifdebugname
\point[label=ggel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{1}{0}{0}{0}{0}{1}{0}{0}
% NE
@@ -2090,8 +2577,8 @@
\ifdebugname
\point[label=ggge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
-
+
+
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{1}{0}{0}{0}%(C)CE
}{
@@ -2100,7 +2587,7 @@
\ifdebugname
\point[label=gggg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{1}{0}{0}{0}%(C)CE
}{%#8 < #9
@@ -2108,7 +2595,7 @@
\ifdebugname
\point[label=gggl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{1}{0}{0}{0}%(C)CE
}
@@ -2119,7 +2606,7 @@
\ifdebugname
\point[label=ggle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{1}{0}{0}%(C)CE
}{
@@ -2128,7 +2615,7 @@
\ifdebugname
\point[label=gglg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{1}{0}{0}%(C)CE
}{%#8 < #9
@@ -2136,7 +2623,7 @@
\ifdebugname
\point[label=ggll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{1}{0}{0}%(C)CE
}
@@ -2150,10 +2637,10 @@
\ifdebugname
\point[label=glee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
@@ -2178,7 +2665,7 @@
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0.5}{0.5}{0}{0.0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
@@ -2198,10 +2685,10 @@
\ifdebugname
\point[label=gleg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
@@ -2212,24 +2699,24 @@
\ifdebugname
\point[label=glel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0.5}{0.5}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}
}
@@ -2241,24 +2728,24 @@
\ifdebugname
\point[label=glge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0}{0}{0.5}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{0}{0.5}{0.5}
\@setBaryPointsB{1}{0}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}
}{
@@ -2267,7 +2754,7 @@
\ifdebugname
\point[label=glgg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{1}{0}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{1}{0}{0}{0}%(C)CE
}{%#8 < #9
@@ -2276,10 +2763,10 @@
\ifdebugname
\point[label=glgl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\saa}{\sab}{\sba}{\sbb}
-
+
% (C)CE
\@setBaryPointsA{0.25}{0.25}{0.25}{0.25}
\@setBaryPointsB{1/3}{0}{1/3}{1/3}
@@ -2316,7 +2803,7 @@
\@setBaryPointsA{1}{0}{0}{0}
\@setBaryPointsB{0}{0}{0}{1}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{1}{0}{0}{0}
\@scaledPointA[color=\@polytopekey{ne color},size=3pt]
@@ -2332,10 +2819,10 @@
\ifdebugname
\point[label=glle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0}{0}{0.5}{0.5}
@@ -2348,7 +2835,7 @@
\ifdebugname
\point[label=gllg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% NE and (C)CE
\@setScaling{\saa}{\sab}{\sba}{\sbb}
\@setBaryPointsA{0.25}{0.25}{0.25}{0.25}
@@ -2359,7 +2846,7 @@
\ifdebugname
\point[label=glll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{0}{1}%(C)CE
}
@@ -2376,7 +2863,7 @@
\ifdebugname
\point[label=leee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
@@ -2390,7 +2877,7 @@
\ifdebugname
\point[label=leeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{1}{0}
% NE
@@ -2402,7 +2889,7 @@
\ifdebugname
\point[label=leel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
% NE
@@ -2417,7 +2904,7 @@
\ifdebugname
\point[label=lege]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
% NE
@@ -2428,7 +2915,7 @@
\ifdebugname
\point[label=legg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{1}{0}%(C)CE
}{%#8 < #9
@@ -2436,10 +2923,10 @@
\ifdebugname
\point[label=legl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{0}{1}
\@setBaryPointsB{0}{0.5}{0}{0.5}
@@ -2453,7 +2940,7 @@
\ifdebugname
\point[label=lele]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{1}{0}{0}
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{0}{1}{0}{0}{1}{0}
@@ -2467,28 +2954,28 @@
\ifdebugname
\point[label=lelg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\srowa}{\srowa}{\srowb}{\srowb}
-
+
% (C)CE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0.5}{0}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{0.5}{0}{0.5}
\@setBaryPointsB{0}{1}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0.5}{0}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}
}{%#8 < #9
% lell
@@ -2496,7 +2983,7 @@
\ifdebugname
\point[label=lell]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{1}{0}{0}{0}{0}{0}{1}
% NE
@@ -2514,10 +3001,10 @@
\ifdebugname
\point[label=lgee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0}{0.5}{0.5}
@@ -2534,11 +3021,11 @@
\@setBaryPointsA{0}{0}{0.5}{0.5}
\@setBaryPointsB{0}{1}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0}{0.5}{0.5}
@@ -2557,39 +3044,39 @@
\ifdebugname
\point[label=lgeg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0.5}{.5}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}
-
+
}{%#8 < #9
% lgel
\ifdebugname
\point[label=lgel]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0.5}{0.5}{0}{0}
@@ -2604,10 +3091,10 @@
\ifdebugname
\point[label=lgge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE / NE Edges.
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0}{0.5}{0.5}
@@ -2619,7 +3106,7 @@
\ifdebugname
\point[label=lggg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{1}{0}%(C)CE
}{%#8 < #9
@@ -2628,7 +3115,7 @@
\ifdebugname
\point[label=lggl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% NE
\@setScaling{\saa}{\sab}{\sba}{\sbb}
\@setBaryPointsA{0.25}{0.25}{0.25}{0.25}
@@ -2642,28 +3129,28 @@
\ifdebugname
\point[label=lgle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\scola}{\scolb}{\scola}{\scolb}
-
+
% (C)CE
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{0.5}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
\@setBaryPointsA{0}{0}{0.5}{0.5}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{0}{1}{0}
\@setBaryPointsB{0}{0}{0.5}{0.5}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ne color},line style=dotted]
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}
}{
\ifthenelse{\lengthtest{#8 pt > #9 pt}}{%#8 > #9
@@ -2672,10 +3159,10 @@
\ifdebugname
\point[label=lglg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% Scaling.
\@setScaling{\saa}{\sab}{\sba}{\sbb}
-
+
% (C)CE
\@setBaryPointsA{0.25}{0.25}{0.25}{0.25}
\@setBaryPointsB{0}{1/3}{1/3}{1/3}
@@ -2712,14 +3199,14 @@
\@setBaryPointsA{0}{1}{0}{0}
\@setBaryPointsB{0}{0}{1}{0}
\@scaledBaryPerspectiveLineAB[color=\@polytopekey{ce color}]
-
+
% NE
\@setBaryPointsA{0}{1}{0}{0}
\@scaledPointA[color=\@polytopekey{ne color},size=3pt]
-
+
\@setBaryPointsA{0}{0}{1}{0}
\@scaledPointA[color=\@polytopekey{ne color},size=3pt]
-
+
\@setBaryPointsA{0.25}{0.25}{0.25}{0.25}
\@scaledPointA[color=\@polytopekey{ne color},size=3pt]
}{%#8 < #9
@@ -2727,7 +3214,7 @@
\ifdebugname
\point[label=lgll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{1}{0}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{1}{0}{0}%(C)CE
}
@@ -2742,7 +3229,7 @@
\ifdebugname
\point[label=llee]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
% NE
@@ -2753,14 +3240,14 @@
\ifdebugname
\point[label=lleg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{1}{0}%(C)CE
}{%#8 < #9
% llel
\ifdebugname
\point[label=llel]{0.333}{0.333}{0.333}{0.333}
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{0}{1}%(C)CE
}
@@ -2773,7 +3260,7 @@
\ifdebugname
\point[label=llge]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
% NE
@@ -2784,7 +3271,7 @@
\ifdebugname
\point[label=llgg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{1}{0}%(C)CE
}{%#8 < #9
@@ -2792,7 +3279,7 @@
\ifdebugname
\point[label=llgl]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{0}{1}%(C)CE
}
@@ -2804,7 +3291,7 @@
\ifdebugname
\point[label=llle]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
% (C)CE
\@baryperspectiveline[color=\@polytopekey{ce color}]{0}{0}{1}{0}{0}{0}{0}{1}
% NE
@@ -2815,7 +3302,7 @@
\ifdebugname
\point[label=lllg]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{1}{0}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{1}{0}%(C)CE
}{%#8 < #9
@@ -2823,8 +3310,8 @@
\ifdebugname
\point[label=llll]{0.333}{0.333}{0.333}{0.333}
\else \fi
-
-
+
+
\point[color=\@polytopekey{ne color},size=3pt]{0}{0}{0}{1}%NE
\point[color=\@polytopekey{ce color},size=2pt]{0}{0}{0}{1}%(C)CE
}
@@ -3038,11 +3525,11 @@ main} % Must include main.
\foreach \i [evaluate=\i] in {1,...,\@linekey{segments}} {
\pgfmathsetlengthmacro{\f}{{(\i - 1)/\@linekey{segments}}}
\pgfmathsetlengthmacro{\s}{{(\i)/\@linekey{segments}}}
-
+
\pgfmathsetlengthmacro{\xb}{{#2*\f+(1-\f)*#5}}
\pgfmathsetlengthmacro{\yb}{{#3*\f+(1-\f)*#6}}
\pgfmathsetlengthmacro{\zb}{{#4*\f+(1-\f)*#7}}
-
+
\pgfmathsetlengthmacro{\xe}{{#2*\s+(1-\s)*#5}}
\pgfmathsetlengthmacro{\ye}{{#3*\s+(1-\s)*#6}}
\pgfmathsetlengthmacro{\ze}{{#4*\s+(1-\s)*#7}}
@@ -3054,18 +3541,18 @@ main} % Must include main.
\pgfmathsetlengthmacro{\sxm}{\xm * \@linekey{layer scale}}
\pgfmathsetlengthmacro{\sym}{\ym * \@linekey{layer scale}}
\pgfmathsetlengthmacro{\szm}{\zm * \@linekey{layer scale}}
-
+
% Scaled camera distance for scaled layers.
\@setcameradistance{\sxm}{\sym}{\szm}{\@polytopekey{rotate x}}{\@polytopekey{rotate z}}{0.8}
% Magic constant here to scale to integer layers.
\pgfmathparse{{int(round(50 * \cd - 20))}}
\edef\layer{\pgfmathresult}
\edef\layername{layer\layer}
-
+
% Real camera distance.
\@setcameradistance{\xm}{\ym}{\zm}{\@polytopekey{rotate x}}{\@polytopekey{rotate z}}{0.8}
\pgfmathsetlengthmacro{\lw}{{\@linekey{line width scale}/\cd}}
-
+
% Shading magic constants.
\pgfmathparse{{int(round(120 - 50 * \cd))}}
\edef\shading{\pgfmathresult}
diff --git a/graphics/pgf/contrib/twoxtwogame/twoxtwogame_bibtex.bib b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_bibtex.bib
new file mode 100644
index 0000000000..9f477e16a3
--- /dev/null
+++ b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_bibtex.bib
@@ -0,0 +1,63 @@
+
+@inproceedings{liu2024_nfgtransformer,
+ title={NfgTransformer: Equivariant Representation Learning for Normal-form Games},
+ author={Siqi Liu and Luke Marris and Georgios Piliouras and Ian Gemp and Nicolas Heess},
+ booktitle={The Twelfth International Conference on Learning Representations},
+ year={2024},
+ url={https://openreview.net/forum?id=4YESQqIys7}
+}
+
+@misc{marris2023_equilibrium_invariant_embedding_2x2_arxiv,
+ title={Equilibrium-Invariant Embedding, Metric Space, and Fundamental Set of 2×2 Normal-Form Games},
+ author={Luke Marris and Ian Gemp and Georgios Piliouras},
+ year={2023},
+ eprint={2304.09978},
+ archivePrefix={arXiv},
+ primaryClass={cs.GT},
+ url = {https://arxiv.org/abs/2304.09978},
+}
+
+@article{bruns2015_names_for_games,
+ author = {Bruns, Bryan Randolph},
+ title = {Names for Games: Locating 2 × 2 Games},
+ journal = {Games},
+ volume = {6},
+ year = {2015},
+ number = {4},
+ pages = {495--520},
+ url = {https://www.mdpi.com/2073-4336/6/4/495},
+ issn = {2073-4336},
+ abstract = {Prisoner’s Dilemma, Chicken, Stag Hunts, and other two-person two-move (2 × 2) models of strategic situations have played a central role in the development of game theory. The Robinson–Goforth topology of payoff swaps reveals a natural order in the payoff space of 2 × 2 games, visualized in their four-layer “periodic table” format that elegantly organizes the diversity of 2 × 2 games, showing relationships and potential transformations between neighboring games. This article presents additional visualizations of the topology, and a naming system for locating all 2 × 2 games as combinations of game payoff patterns from the symmetric ordinal 2 × 2 games. The symmetric ordinal games act as coordinates locating games in maps of the payoff space of 2 × 2 games, including not only asymmetric ordinal games and the complete set of games with ties, but also ordinal and normalized equivalents of all games with ratio or real-value payoffs. An efficient nomenclature can contribute to a systematic understanding of the diversity of elementary social situations; clarify relationships between social dilemmas and other joint preference structures; identify interesting games; show potential solutions available through transforming incentives; catalog the variety of models of 2 × 2 strategic situations available for experimentation, simulation, and analysis; and facilitate cumulative and comparative research in game theory.},
+ doi = {10.3390/g6040495}
+}
+
+@book{robinsonandgoforth2005_topology_of_2x2_games_book,
+ author = {Robinson, David and Goforth, David},
+ year = {2005},
+ month = {01},
+ pages = {},
+ title = {The Topology of the 2x2 games: A New Periodic Table},
+ doi = {10.4324/9780203340271}
+}
+
+@book{goforth2005_periodic_table_of_games,
+ author = {Goforth, David and Robinson, David},
+ year = {2005},
+ month = {01},
+ pages = {},
+ title = {Dynamic Periodic Table of the 2 × 2 Games: User's Reference and Manual},
+}
+
+@article{borm1987_classification_of_2x2_games,
+ title = "A classification of 2x2 bimatrix games",
+ author = "P.E.M. Borm",
+ note = "Pagination: 16",
+ year = "1987",
+ language = "English",
+ volume = "29",
+ pages = "69--84",
+ journal = "Cahiers du Centre d'{\'E}tudes de Recherche Op{\'e}rationnelle",
+ issn = "0008-9737",
+ publisher = "Universit{\'e} libre de Bruxelles, Centre d'{\'e}tudes de recherche op{\'e}rationnelle",
+ number = "1-2",
+}
diff --git a/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.pdf b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.pdf
new file mode 100644
index 0000000000..ac8c6aa4c0
--- /dev/null
+++ b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.tex b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.tex
new file mode 100644
index 0000000000..4306aa0fd8
--- /dev/null
+++ b/graphics/pgf/contrib/twoxtwogame/twoxtwogame_doc.tex
@@ -0,0 +1,892 @@
+\documentclass[10pt]{article}
+\usepackage[utf8]{inputenc}
+\usepackage{twoxtwogame}
+\usepackage{subcaption}
+\usepackage{hyperref}
+\usepackage{cprotect}
+
+% Optionally uncomment this code to cache figure generation.
+% \usepackage{tikz}
+% \usetikzlibrary{external}
+% \tikzexternalize[prefix=cache/,up to date check=md5]
+
+\usepackage[authoryear, sort&compress, round]{natbib}
+\usepackage{booktabs,array}
+\bibliographystyle{abbrvnat}
+
+\title{twoxtwogame Package Documentation}
+\author{Luke Marris}
+
+% Make a tabular column suitable for verbatim code input.
+\makeatletter
+ \newcolumntype{V}[1]{>{\@minipagetrue}p{#1}<{\vspace{-0.8\baselineskip}}}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+2×2 normal-form games are widely studied in game theory and economics. They are the simplest type of normal-form game, consisting of only two players, each with two strategies. This package provides tools for representing, visualizing, tabulating, and naming such games and their equilibrium solutions in \LaTeX.
+
+
+\section{Functionality}
+
+\begin{table}[!b]
+ \centering
+ \begin{subtable}[t]{0.4\linewidth}
+ \centering
+ \payoffstable[label=$G$]{a}{b}{c}{d}{e}{f}{g}{h}
+ \caption{Payoffs arguments.}
+ \label{tab:2x2_payoffs_parameterization}
+ \end{subtable}
+ ~~~~
+ \begin{subtable}[t]{0.4\linewidth}
+ \centering
+ \jointtable[label=$\sigma$]{a}{b}{c}{d}
+ \caption{Joint arguments.}
+ \label{tab:2x2_joint_parameterization}
+ \end{subtable}
+ \caption{2×2 normal-form game function arguments.}
+ \label{tab:2x2_parameterization}
+\end{table}
+
+2×2 normal-form games are parameterized with 8 variables which describe the payoffs received by each player. Therefore, the majority of functions in the \verb!twoxtwogame! package have 8 mandatory arguments, \verb!{a}{b}{c}...{h}!, corresponding to these variables. The first four arguments, \verb!{a}{b}{c}{d}!, are payoffs of the row player in row-wise order, and the last four arguments, \verb!{e}{f}{g}{h}!, are the payoffs of the column player also in row-wise order. These payoffs, $G$, are often represented in a tabular form, where each player has strategies A and B (Table~\ref{tab:2x2_payoffs_parameterization}). The joint strategy distribution, $\sigma$, is parameterized with four arguments, \verb!{a}{b}{c}{d}! (Table~\ref{tab:2x2_joint_parameterization}). Some commands have additional optional keyword arguments.
+
+\subsection{Payoffs Representations}
+
+Traditionally payoffs can be represented as tables containing their raw payoff values and labeled actions. Additionally, payoffs can be represented graphically as either \emph{best-response graphs} or \emph{partial ordinal graphs}. These representations are compact enough to be inserted inline into text.
+
+\subsubsection{Best-Response Graphs}
+
+The best-response dynamics of 2×2 games are easily visualized. 2×2 games have been categorized according to these dynamics \citep{borm1987_classification_of_2x2_games,marris2023_equilibrium_invariant_embedding_2x2_arxiv}. \cite{marris2023_equilibrium_invariant_embedding_2x2_arxiv} proposed the best-response graphical representation used in this package.
+
+The graph contains up to four directed edges: two for each player. The row player has up to two vertical directed edges which point from each of the column player's two strategies to the row player's corresponding best-response strategy (BR). Similarly, the column player has up to two horizontal edges which correspond to the best-response to each of the row player's two strategies. Self-loop edges are omitted from the graph and indicate indifference between two strategies. For example, when \verb!a! = \verb!c!. The graph can be placed inline using \verb!\brgraph{a}...{h}!, for example: Matching Pennies~\brgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1}, Prisoner's Dilemma~\brgraph{1}{1}{0}{0}{1}{0}{1}{0}, and Null~\brgraph{0}{0}{0}{0}{0}{0}{0}{0}. The graphs inherit color from its surrounding text. The graphs are customizable with optional keyword arguments (Table~\ref{tab:brgraph}).
+
+\begin{table}[t]
+ \centering
+ \footnotesize
+ \begin{tabular}{lll}
+ Keyword Argument & Description & Default \\ \hline
+ point offset & The distance of the points from the center & 0.38em \\
+ point color & Color of points & . \\
+ point radius & Radius of points (filled circles) & 0.06em \\
+ row player color & Color of row player's BR edges & . \\
+ column player color & Color of column player's BR edges & . \\
+ arrow width & Arrow head width & 0.25em \\
+ arrow length & Arrow head length & 0.35em \\
+ line width & Arrow line width & 0.05em \\
+ \end{tabular}
+
+ \vspace{1.0em}
+
+ \begin{tabular}{V{0.8\linewidth}l}
+ Command & Output \\ \hline
+\begin{verbatim}
+\brgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+\end{verbatim}
+ & \brgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1} \\
+\begin{verbatim}
+\brgraph[
+ point color=green
+]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+\end{verbatim}
+ & \brgraph[point color=green]{1}{-1}{-1}{1}{-1}{1}{1}{-1} \\
+\begin{verbatim}
+\brgraph[
+ row player color=red,
+ column player color=blue
+]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+\end{verbatim}
+ & \brgraph[row player color=red,column player color=blue]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+ \end{tabular}
+ \cprotect\caption{Parameterization, default values, and example usage of the \verb!\brgraph[...]{a}...{h}! command, which produces inline best-response graphs. Default period indicates inheritance from outer scope.}
+ \label{tab:brgraph}
+\end{table}
+
+The graphs belong to 15 equivalence classes which have been named \citep{marris2023_equilibrium_invariant_embedding_2x2_arxiv}. Names for any payoff can be determined using \verb!\brname{a}...{h}! (examples in Table~\ref{tab:brname}). It is common to have the equivalent class name appear along with the best-response graph. Canonical graphs for each equivalence class are given in Table~\ref{tab:namebrgraph}, and can be inserted using the commands \verb!\<name>brgraph!. This command also accepts the same optional keyword arguments as \verb!\brgraph[...]{a}...{h}!.
+
+\begin{table}[t]
+ \centering
+ \footnotesize
+ \begin{tabular}{ll}
+ Example & Output \\ \hline
+ \verb!\brname{1}{2}{3}{4}{5}{6}{7}{8}! & \brname{1}{2}{3}{4}{5}{6}{7}{8} \\
+ \verb!\brname{1.1}{-1}{3.7}{4}{-1.2}{3}{1}{5}! & \brname{1.1}{-1}{3.7}{4}{-1.2}{3}{9}{5} \\
+ \verb!\brname{1}{-1}{-1}{1}{1}{-1}{-1}{1}! & \brname{1}{-1}{-1}{1}{1}{-1}{-1}{1} \\
+ \verb!\brname{-1}{1}{1}{-1}{-1}{1}{1}{-1}! & \brname{-1}{1}{1}{-1}{-1}{1}{1}{-1} \\
+ \verb!\brname{0}{0}{0}{0}{0}{0}{0}{1}! & \brname{0}{0}{0}{0}{0}{0}{0}{1} \\
+ \end{tabular}
+ \cprotect\caption{Example usage of the \verb!\brname{a}...{h}! command, which produces best-response equivalence class names. Many payoffs map to the same equivalence class.}
+ \label{tab:brname}
+\end{table}
+
+\begin{table}[t]
+ \centering
+ \footnotesize
+ \begin{tabular}{ll|ll|ll}
+ Graph Command & & Graph Command & & Graph Command & \\ \hline
+ \verb!\dominantbrgraph! & \dominantbrgraph & \verb!\safetybrgraph! & \safetybrgraph & \verb!\heistbrgraph! & \heistbrgraph \\
+ \verb!\coordinationbrgraph! & \coordinationbrgraph & \verb!\aidosbrgraph! & \aidosbrgraph & \verb!\ignorancebrgraph! & \ignorancebrgraph \\
+ \verb!\cyclebrgraph! & \cyclebrgraph & \verb!\picnicnbrgraph! & \picnicbrgraph & \verb!\horseplaybrgraph! & \horseplaybrgraph \\
+ \verb!\samaritanbrgraph! & \samaritanbrgraph & \verb!\daredevilbrgraph! & \daredevilbrgraph & \verb!\dressbrgraph! & \dressbrgraph \\
+ \verb!\hazardbrgraph! & \hazardbrgraph & \verb!\fossickbrgraph! & \fossickbrgraph & \verb!\nullbrgraph! & \nullbrgraph
+ \end{tabular}
+ \cprotect\caption{Example usage of the \verb!\<name>brgraph[...]{a}...{h}! commands, which produce the canonical graphs for the 15 equivalence classes proposed by \cite{borm1987_classification_of_2x2_games} and \cite{marris2023_equilibrium_invariant_embedding_2x2_arxiv}. These commands have the same key word arguments as \verb!\brgraph!.}
+ \label{tab:namebrgraph}
+\end{table}
+
+
+\subsubsection{Ordinal Graphs and Partial Ordinal Graphs}
+
+It is also possible to visualize payoff orderings in graphical form using the \verb!\ordgraph[<keywords>]{a}...{h}! command. Ordinal games have a simple four edge directed graph representation for each player. The ``periodic table'' of ordinal games is shown in Table~\ref{tab:ordinal_games}. The command is also able to handle partial ordinal graphs. In the literature, these are categorized as triple, double, high, low, middle and basic ties. The representation consists of two directed graphs, one for each player. The row player's graph is black and shifted to the bottom left, by default. The column player's graph is gray and shifted to the top right, by default. Each graph then represents the partial ordering of the payoffs of each pure joint strategy. The ordinal representation of some common games is shown in Table~\ref{tab:ord_examples}. Examples of partially ordinal games are given in Table~\ref{tab:partial_ord_examples}.
+
+\begin{table}[t!]
+ \centering
+ \footnotesize
+ \begin{tabular}{lll}
+ Keyword Argument & Description & Default \\ \hline
+ point offset & The distance of the points from the center & 0.38em \\
+ row player x offset & Additional horizontal offset applied to row player & -0.1e, \\
+ row player y offset & Additional vertical offset applied to row player & -0.5em \\
+ column player x offset & Additional horizontal offset applied to column player & 0.1em \\
+ column player y offset & Additional vertical offset applied to column player & 0.05em \\
+ point color & Color of points & . \\
+ point radius & Radius of points & 0.04em \\
+ row player color & Color of row player's BR edges & . \\
+ column player color & Color of column player's BR edges & gray \\
+ arrow width & Arrow head width & 0.25em \\
+ arrow length & Arrow head length & 0.35em \\
+ line width & Arrow line width & 0.04em \\
+ \end{tabular}
+
+ \vspace{1.0em}
+
+ \begin{tabular}{V{0.8\linewidth}l}
+ Command & Output \\ \hline
+\begin{verbatim}
+\ordgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+\end{verbatim}
+ & \ordgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1} \\
+\begin{verbatim}
+\ordgraph[
+ row player color=red,
+ column player color=blue
+]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+\end{verbatim}
+ & \ordgraph[row player color=red,column player color=blue]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+ \end{tabular}
+
+ \cprotect\caption{Parameterization, default values, and example usage of the \verb!\ordgraph[...]{a}...{h}! command, which produces inline ordinal graphs. Default period indicates inheritance from outer scope.}
+ \label{tab:ordgraph}
+\end{table}
+
+\begin{table}[t]
+ \centering
+ \footnotesize
+ \begingroup
+ \renewcommand{\arraystretch}{1.3}
+ \addtolength{\tabcolsep}{-3pt}
+ \begin{tabular}{r|cccccccccccc}
+ Chicken \ordgraph{2}{3}{1}{4}{0}{0}{0}{0} &
+ \ordgraph{2}{3}{1}{4}{3}{4}{1}{2} &
+ \ordgraph{2}{3}{1}{4}{2}{4}{1}{3} &
+ \ordgraph{2}{3}{1}{4}{1}{4}{2}{3} &
+ \ordgraph{2}{3}{1}{4}{1}{4}{3}{2} &
+ \ordgraph{2}{3}{1}{4}{2}{4}{3}{1} &
+ \ordgraph{2}{3}{1}{4}{3}{4}{2}{1} &
+ \ordgraph{2}{3}{1}{4}{4}{3}{2}{1} &
+ \ordgraph{2}{3}{1}{4}{4}{2}{3}{1} &
+ \ordgraph{2}{3}{1}{4}{4}{1}{3}{2} &
+ \ordgraph{2}{3}{1}{4}{3}{1}{2}{4} &
+ \ordgraph{2}{3}{1}{4}{4}{2}{1}{3} &
+ \ordgraph{2}{3}{1}{4}{4}{3}{1}{2} \\
+ Battle \ordgraph{3}{2}{1}{4}{0}{0}{0}{0} &
+ \ordgraph{3}{2}{1}{4}{3}{4}{1}{2} &
+ \ordgraph{3}{2}{1}{4}{2}{4}{1}{3} &
+ \ordgraph{3}{2}{1}{4}{1}{4}{2}{3} &
+ \ordgraph{3}{2}{1}{4}{1}{4}{3}{2} &
+ \ordgraph{3}{2}{1}{4}{2}{4}{3}{1} &
+ \ordgraph{3}{2}{1}{4}{3}{4}{2}{1} &
+ \ordgraph{3}{2}{1}{4}{4}{3}{2}{1} &
+ \ordgraph{3}{2}{1}{4}{4}{2}{3}{1} &
+ \ordgraph{3}{2}{1}{4}{4}{1}{3}{2} &
+ \ordgraph{3}{2}{1}{4}{3}{1}{2}{4} &
+ \ordgraph{3}{2}{1}{4}{4}{2}{1}{3} &
+ \ordgraph{3}{2}{1}{4}{4}{3}{1}{2} \\
+ Hero \ordgraph{3}{1}{2}{4}{0}{0}{0}{0} &
+ \ordgraph{3}{1}{2}{4}{3}{4}{1}{2} &
+ \ordgraph{3}{1}{2}{4}{2}{4}{1}{3} &
+ \ordgraph{3}{1}{2}{4}{1}{4}{2}{3} &
+ \ordgraph{3}{1}{2}{4}{1}{4}{3}{2} &
+ \ordgraph{3}{1}{2}{4}{2}{4}{3}{1} &
+ \ordgraph{3}{1}{2}{4}{3}{4}{2}{1} &
+ \ordgraph{3}{1}{2}{4}{4}{3}{2}{1} &
+ \ordgraph{3}{1}{2}{4}{4}{2}{3}{1} &
+ \ordgraph{3}{1}{2}{4}{4}{1}{3}{2} &
+ \ordgraph{3}{1}{2}{4}{3}{1}{2}{4} &
+ \ordgraph{3}{1}{2}{4}{4}{2}{1}{3} &
+ \ordgraph{3}{1}{2}{4}{4}{3}{1}{2} \\
+ Compromise \ordgraph{2}{1}{3}{4}{0}{0}{0}{0} &
+ \ordgraph{2}{1}{3}{4}{3}{4}{1}{2} &
+ \ordgraph{2}{1}{3}{4}{2}{4}{1}{3} &
+ \ordgraph{2}{1}{3}{4}{1}{4}{2}{3} &
+ \ordgraph{2}{1}{3}{4}{1}{4}{3}{2} &
+ \ordgraph{2}{1}{3}{4}{2}{4}{3}{1} &
+ \ordgraph{2}{1}{3}{4}{3}{4}{2}{1} &
+ \ordgraph{2}{1}{3}{4}{4}{3}{2}{1} &
+ \ordgraph{2}{1}{3}{4}{4}{2}{3}{1} &
+ \ordgraph{2}{1}{3}{4}{4}{1}{3}{2} &
+ \ordgraph{2}{1}{3}{4}{3}{1}{2}{4} &
+ \ordgraph{2}{1}{3}{4}{4}{2}{1}{3} &
+ \ordgraph{2}{1}{3}{4}{4}{3}{1}{2} \\
+ Deadlock \ordgraph{1}{2}{3}{4}{0}{0}{0}{0} &
+ \ordgraph{1}{2}{3}{4}{3}{4}{1}{2} &
+ \ordgraph{1}{2}{3}{4}{2}{4}{1}{3} &
+ \ordgraph{1}{2}{3}{4}{1}{4}{2}{3} &
+ \ordgraph{1}{2}{3}{4}{1}{4}{3}{2} &
+ \ordgraph{1}{2}{3}{4}{2}{4}{3}{1} &
+ \ordgraph{1}{2}{3}{4}{3}{4}{2}{1} &
+ \ordgraph{1}{2}{3}{4}{4}{3}{2}{1} &
+ \ordgraph{1}{2}{3}{4}{4}{2}{3}{1} &
+ \ordgraph{1}{2}{3}{4}{4}{1}{3}{2} &
+ \ordgraph{1}{2}{3}{4}{3}{1}{2}{4} &
+ \ordgraph{1}{2}{3}{4}{4}{2}{1}{3} &
+ \ordgraph{1}{2}{3}{4}{4}{3}{1}{2} \\
+ Dilemma \ordgraph{1}{3}{2}{4}{0}{0}{0}{0} &
+ \ordgraph{1}{3}{2}{4}{3}{4}{1}{2} &
+ \ordgraph{1}{3}{2}{4}{2}{4}{1}{3} &
+ \ordgraph{1}{3}{2}{4}{1}{4}{2}{3} &
+ \ordgraph{1}{3}{2}{4}{1}{4}{3}{2} &
+ \ordgraph{1}{3}{2}{4}{2}{4}{3}{1} &
+ \ordgraph{1}{3}{2}{4}{3}{4}{2}{1} &
+ \ordgraph{1}{3}{2}{4}{4}{3}{2}{1} &
+ \ordgraph{1}{3}{2}{4}{4}{2}{3}{1} &
+ \ordgraph{1}{3}{2}{4}{4}{1}{3}{2} &
+ \ordgraph{1}{3}{2}{4}{3}{1}{2}{4} &
+ \ordgraph{1}{3}{2}{4}{4}{2}{1}{3} &
+ \ordgraph{1}{3}{2}{4}{4}{3}{1}{2} \\
+ Hunt \ordgraph{1}{4}{2}{3}{0}{0}{0}{0} &
+ \ordgraph{1}{4}{2}{3}{3}{4}{1}{2} &
+ \ordgraph{1}{4}{2}{3}{2}{4}{1}{3} &
+ \ordgraph{1}{4}{2}{3}{1}{4}{2}{3} &
+ \ordgraph{1}{4}{2}{3}{1}{4}{3}{2} &
+ \ordgraph{1}{4}{2}{3}{2}{4}{3}{1} &
+ \ordgraph{1}{4}{2}{3}{3}{4}{2}{1} &
+ \ordgraph{1}{4}{2}{3}{4}{3}{2}{1} &
+ \ordgraph{1}{4}{2}{3}{4}{2}{3}{1} &
+ \ordgraph{1}{4}{2}{3}{4}{1}{3}{2} &
+ \ordgraph{1}{4}{2}{3}{3}{1}{2}{4} &
+ \ordgraph{1}{4}{2}{3}{4}{2}{1}{3} &
+ \ordgraph{1}{4}{2}{3}{4}{3}{1}{2} \\
+ Assurance \ordgraph{1}{4}{3}{2}{0}{0}{0}{0} &
+ \ordgraph{1}{4}{3}{2}{3}{4}{1}{2} &
+ \ordgraph{1}{4}{3}{2}{2}{4}{1}{3} &
+ \ordgraph{1}{4}{3}{2}{1}{4}{2}{3} &
+ \ordgraph{1}{4}{3}{2}{1}{4}{3}{2} &
+ \ordgraph{1}{4}{3}{2}{2}{4}{3}{1} &
+ \ordgraph{1}{4}{3}{2}{3}{4}{2}{1} &
+ \ordgraph{1}{4}{3}{2}{4}{3}{2}{1} &
+ \ordgraph{1}{4}{3}{2}{4}{2}{3}{1} &
+ \ordgraph{1}{4}{3}{2}{4}{1}{3}{2} &
+ \ordgraph{1}{4}{3}{2}{3}{1}{2}{4} &
+ \ordgraph{1}{4}{3}{2}{4}{2}{1}{3} &
+ \ordgraph{1}{4}{3}{2}{4}{3}{1}{2} \\
+ Coordination \ordgraph{2}{4}{3}{1}{0}{0}{0}{0} &
+ \ordgraph{2}{4}{3}{1}{3}{4}{1}{2} &
+ \ordgraph{2}{4}{3}{1}{2}{4}{1}{3} &
+ \ordgraph{2}{4}{3}{1}{1}{4}{2}{3} &
+ \ordgraph{2}{4}{3}{1}{1}{4}{3}{2} &
+ \ordgraph{2}{4}{3}{1}{2}{4}{3}{1} &
+ \ordgraph{2}{4}{3}{1}{3}{4}{2}{1} &
+ \ordgraph{2}{4}{3}{1}{4}{3}{2}{1} &
+ \ordgraph{2}{4}{3}{1}{4}{2}{3}{1} &
+ \ordgraph{2}{4}{3}{1}{4}{1}{3}{2} &
+ \ordgraph{2}{4}{3}{1}{3}{1}{2}{4} &
+ \ordgraph{2}{4}{3}{1}{4}{2}{1}{3} &
+ \ordgraph{2}{4}{3}{1}{4}{3}{1}{2} \\
+ Peace \ordgraph{3}{4}{2}{1}{0}{0}{0}{0} &
+ \ordgraph{3}{4}{2}{1}{3}{4}{1}{2} &
+ \ordgraph{3}{4}{2}{1}{2}{4}{1}{3} &
+ \ordgraph{3}{4}{2}{1}{1}{4}{2}{3} &
+ \ordgraph{3}{4}{2}{1}{1}{4}{3}{2} &
+ \ordgraph{3}{4}{2}{1}{2}{4}{3}{1} &
+ \ordgraph{3}{4}{2}{1}{3}{4}{2}{1} &
+ \ordgraph{3}{4}{2}{1}{4}{3}{2}{1} &
+ \ordgraph{3}{4}{2}{1}{4}{2}{3}{1} &
+ \ordgraph{3}{4}{2}{1}{4}{1}{3}{2} &
+ \ordgraph{3}{4}{2}{1}{3}{1}{2}{4} &
+ \ordgraph{3}{4}{2}{1}{4}{2}{1}{3} &
+ \ordgraph{3}{4}{2}{1}{4}{3}{1}{2} \\
+ Harmony \ordgraph{3}{4}{1}{2}{0}{0}{0}{0} &
+ \ordgraph{3}{4}{1}{2}{3}{4}{1}{2} &
+ \ordgraph{3}{4}{1}{2}{2}{4}{1}{3} &
+ \ordgraph{3}{4}{1}{2}{1}{4}{2}{3} &
+ \ordgraph{3}{4}{1}{2}{1}{4}{3}{2} &
+ \ordgraph{3}{4}{1}{2}{2}{4}{3}{1} &
+ \ordgraph{3}{4}{1}{2}{3}{4}{2}{1} &
+ \ordgraph{3}{4}{1}{2}{4}{3}{2}{1} &
+ \ordgraph{3}{4}{1}{2}{4}{2}{3}{1} &
+ \ordgraph{3}{4}{1}{2}{4}{1}{3}{2} &
+ \ordgraph{3}{4}{1}{2}{3}{1}{2}{4} &
+ \ordgraph{3}{4}{1}{2}{4}{2}{1}{3} &
+ \ordgraph{3}{4}{1}{2}{4}{3}{1}{2} \\
+ Concord \ordgraph{2}{4}{1}{3}{0}{0}{0}{0} &
+ \ordgraph{2}{4}{1}{3}{3}{4}{1}{2} &
+ \ordgraph{2}{4}{1}{3}{2}{4}{1}{3} &
+ \ordgraph{2}{4}{1}{3}{1}{4}{2}{3} &
+ \ordgraph{2}{4}{1}{3}{1}{4}{3}{2} &
+ \ordgraph{2}{4}{1}{3}{2}{4}{3}{1} &
+ \ordgraph{2}{4}{1}{3}{3}{4}{2}{1} &
+ \ordgraph{2}{4}{1}{3}{4}{3}{2}{1} &
+ \ordgraph{2}{4}{1}{3}{4}{2}{3}{1} &
+ \ordgraph{2}{4}{1}{3}{4}{1}{3}{2} &
+ \ordgraph{2}{4}{1}{3}{3}{1}{2}{4} &
+ \ordgraph{2}{4}{1}{3}{4}{2}{1}{3} &
+ \ordgraph{2}{4}{1}{3}{4}{3}{1}{2} \\ \hline
+ &
+ \rotatebox[origin=tr]{90}{Concord \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{3}{4}{1}{2}} } &
+ \rotatebox[origin=tr]{90}{Harmony \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{2}{4}{1}{3}} } &
+ \rotatebox[origin=tr]{90}{Peace \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{1}{4}{2}{3}} } &
+ \rotatebox[origin=tr]{90}{Coordination \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{1}{4}{3}{2}} } &
+ \rotatebox[origin=tr]{90}{Assurance \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{2}{4}{3}{1}} } &
+ \rotatebox[origin=tr]{90}{Hunt \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{3}{4}{2}{1}} } &
+ \rotatebox[origin=tr]{90}{Dilemma \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{4}{3}{2}{1}} } &
+ \rotatebox[origin=tr]{90}{Deadlock \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{4}{2}{3}{1}} } &
+ \rotatebox[origin=tr]{90}{Compromise \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{4}{1}{3}{2}} } &
+ \rotatebox[origin=tr]{90}{Hero \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{3}{1}{2}{4}} } &
+ \rotatebox[origin=tr]{90}{Battle \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{4}{2}{1}{3}} } &
+ \rotatebox[origin=tr]{90}{Chicken \rotatebox[origin=c]{-90}{\ordgraph{0}{0}{0}{0}{4}{3}{1}{2}} }
+ \end{tabular}
+ \addtolength{\tabcolsep}{3pt}
+ \endgroup
+ \caption{Periodic table of ordinal games \citep{robinsonandgoforth2005_topology_of_2x2_games_book,goforth2005_periodic_table_of_games} with a naming scheme proposed by \cite{bruns2015_names_for_games}.}
+ \label{tab:ordinal_games}
+\end{table}
+
+\begin{table}[t!]
+ \centering
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{3}{0}{0}{2}{2}{0}{0}{3} & M & F \\ \hline
+ M & 3,2 & 0,0 \\
+ F & 0,0 & 2,3 \\
+ \end{tabular}
+ \caption{Battle of the Sexes}
+ \label{tab:ord_battle_of_the_sexes}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{2}{7}{0}{4}{2}{0}{7}{4} & C & D \\ \hline
+ C & 2,2 & 7,0 \\
+ D & 0,7 & 4,4 \\
+ \end{tabular}
+ \caption{Prisoner's Dilemma}
+ \label{tab:ord_prisoners_dillema}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1} & H & T \\ \hline
+ H & $+1$,$-1$ & $-1$,$+1$ \\
+ T & $-1$,$+1$ & $+1$,$-1$ \\
+ \end{tabular}
+ \caption{Matching Pennies}
+ \label{tab:ord_matching_pennies}
+ \end{subtable}
+ \caption{Ordinal and partial ordinal graphs for common normal-form games.}
+ \label{tab:ord_examples}
+\end{table}
+
+\begin{table}[t!]
+ \centering
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{1}{2}{3}{4}{2}{3}{1}{4} & A & B \\ \hline
+ A & 1,2 & 2,3 \\
+ B & 3,1 & 4,4 \\
+ \end{tabular}
+ \caption{Strict Tie}
+ \label{tab:strict_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{2}{2}{2}{1}{1}{0}{1}{1} & A & B \\ \hline
+ A & 2,1 & 2,0 \\
+ B & 2,1 & 1,1 \\
+ \end{tabular}
+ \caption{Triple Tie}
+ \label{tab:triple_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{1}{0}{1}{0}{1}{1}{0}{0} & A & B \\ \hline
+ A & 1,1 & 0,1 \\
+ B & 1,0 & 0,0 \\
+ \end{tabular}
+ \caption{Double Tie}
+ \label{tab:double_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{1}{0}{0}{0}{0}{0}{0}{1} & A & B \\ \hline
+ A & 1,0 & 0,0 \\
+ B & 0,0 & 0,1 \\
+ \end{tabular}
+ \caption{Basic Tie}
+ \label{tab:basic_tie}
+ \end{subtable}
+
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{0}{0}{0}{0}{1}{1}{1}{1} & A & B \\ \hline
+ A & 0,1 & 0,1 \\
+ B & 0,1 & 0,1 \\
+ \end{tabular}
+ \caption{Zero Tie}
+ \label{tab:zero_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{3}{3}{2}{1}{1}{3}{3}{2} & A & B \\ \hline
+ A & 3,1 & 3,3 \\
+ B & 2,3 & 1,2 \\
+ \end{tabular}
+ \caption{High Tie}
+ \label{tab:high_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{1}{0}{0}{-1}{2}{-1}{1}{0} & A & B \\ \hline
+ A & $1$,0 & 0,$-1$ \\
+ B & 0,$1$ & $-1$,0 \\
+ \end{tabular}
+ \caption{Middle Tie}
+ \label{tab:middle_tie}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.22\linewidth}
+ \centering
+ \begin{tabular}{c|cc}
+ \ordgraph{2}{1}{0}{0}{0}{1}{2}{0} & A & B \\ \hline
+ A & 2,0 & 1,1 \\
+ B & 0,2 & 0,0 \\
+ \end{tabular}
+ \caption{Low Tie}
+ \label{tab:low_tie}
+ \end{subtable}
+ \caption{Examples of partial ordinal graphs for each of the possible ties.}
+ \label{tab:partial_ord_examples}
+\end{table}
+
+
+\subsubsection{Payoff Tables}
+
+This package also provides commands for specifying payoff tables. The \verb!\smallpayoffstable[...]{a}...{h}! command produces inline payoff tables (Table~\ref{tab:smallpayoffstable}).
+
+While the \verb!\payoffstable[...]{a}...{h}! command produces full tabular payoff tables with strategy labels.
+
+
+For example, \verb!\smallpayoffstable{1}{+2}{9}{-4}{3}{2}{1}{0}! results in a small inline payoff table, \smallpayoffstable{1}{+2}{9}{-4}{3}{2}{1}{0}. It is also possible to modify the values with keyword arguments (Table~\ref{tab:smallpayoffstable}).
+
+\begin{table}[t!]
+ \centering
+ \footnotesize
+ \begin{tabular}{lll}
+ Keyword Argument & Description & Default \\ \hline
+ row player color & Color of row player's payoffs & . \\
+ column player color & Color of column player's payoffs & . \\
+ row player first strategy color & Color of row player's first strategies & \verb!\empty! \\
+ row player second strategy color & Color of row player's second strategies & \verb!\empty! \\
+ column player first strategy color & Color of column player's first strategies & \verb!\empty! \\
+ column player second strategy color & Color of column player's second strategies & \verb!\empty! \\
+ \end{tabular}
+
+ \vspace{1.0em}
+
+ \begin{tabular}{V{0.8\linewidth}l}
+ Example & Output \\ \hline
+\begin{verbatim}
+\smallpayoffstable{1}{2}{9}{-4}{3}{2}{1}{0}
+\end{verbatim}
+ & \smallpayoffstable{1}{2}{9}{-4}{3}{2}{1}{0} \\
+\begin{verbatim}
+\smallpayoffstable[
+ row player color=red,
+ column player color=blue
+]{1}{2}{9}{-4}{3}{2}{1}{0}
+\end{verbatim}
+ & \smallpayoffstable[row player color=red,column player color=blue]{1}{2}{9}{-4}{3}{2}{1}{0} \\
+\begin{verbatim}
+\smallpayoffstable[
+ row player first strategy color=red,
+ row player second strategy color=orange,
+ column player first strategy color=purple,
+ column player second strategy color=blue
+]{1}{2}{9}{-4}{3}{2}{1}{0}
+\end{verbatim}
+ & \smallpayoffstable[row player first strategy color=red,row player second strategy color=orange,column player first strategy color=purple,column player second strategy color=blue]{1}{2}{9}{-4}{3}{2}{1}{0} \\
+ \end{tabular}
+ \cprotect\caption{Parameterization, default values, and example usage of the \verb!\smallpayoffstable[...]{a}...{h}! command, which produces inline payoff tables. Default period indicates inheritance from outer scope.}
+ \label{tab:smallpayoffstable}
+\end{table}
+
+
+Larger payoff tables can be represented with the \verb!\payoffstable[...]{a}...{h}!, \verb!\brpayoffstable[...]{a}...{h}!, and \verb!\ordpayoffstable[...]{a}...{h}! commands. Examples are given in Table~\ref{fig:table_examples}.
+
+\begin{table}[t!]
+ \centering
+ \begin{subtable}[t]{0.32\linewidth}
+ \centering
+ \payoffstable[row player color=red, column player color=blue]{1}{+2}{9}{-4}{3}{2}{1}{0}
+ \cprotect\caption{\verb!\payoffstable!}
+ \label{fig:empty_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.32\linewidth}
+ \centering
+ \brpayoffstable[row player color=red, column player color=blue]{1}{+2}{9}{-4}{3}{2}{1}{0}
+ \cprotect\caption{\verb!\brpayoffstable!}
+ \label{fig:br_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.32\linewidth}
+ \centering
+ \ordpayoffstable[row player color=red, column player color=blue]{1}{+2}{9}{-4}{3}{2}{1}{0}
+ \cprotect\caption{\verb!\ordpayoffstable!}
+ \label{fig:ord_table}
+ \end{subtable} \hfill
+ \caption{Examples of the three table commands.}
+ \label{fig:table_examples}
+\end{table}
+
+
+\subsection{Distribution Representations}
+
+Distributions, including joint, marginal, and conditional distributions can be visualised using either small inline graphs, tables, or larger figures.
+
+
+\subsubsection{Inline Distribution Graphs}
+
+Inline graphs for joint, conditional, and marginal distributions can be produced using the commands in Table~\ref{tab:inline_dist_graphs}. All the commands take a joint distribution as arguments (Table~\ref{tab:2x2_joint_parameterization}). Optional arguments include \verb!color!, \verb!border color!, \verb!row player color!, and \verb!column player color!.
+
+\begin{table}[h!]
+ \footnotesize
+ \noindent\begin{tabular}{llr}
+ Command Signature & Example Command & \\ \hline
+ \verb!\jointgraph[..]{a}..{d}! & \verb!\jointgraph{.4}{.3}{.1}{.2}! & \jointgraph{.4}{.3}{.1}{.2} \\
+ \verb!\rowcondgraph[..]{a}..{d}! & \verb!\rowcondgraph{.4}{.3}{.1}{.2}! & \rowcondgraph{.4}{.3}{.1}{.2} \\
+ \verb!\colcondgraph[..]{a}..{d}! & \verb!\colcondgraph{.4}{.3}{.1}{.2}! & \colcondgraph{.4}{.3}{.1}{.2} \\
+ \verb!\marginalgraph[..]{a}..{d}! & \verb!\marginalgraph{.4}{.3}{.1}{.2}! & \marginalgraph{.4}{.3}{.1}{.2} \\
+ \verb!\jmgraph[..]{a}..{d}! & \verb!\jmgraph{.4}{.3}{.1}{.2} ! & \jmgraph{.4}{.3}{.1}{.2}
+ \end{tabular}
+ \caption{Inline distribution graphs.}
+ \label{tab:inline_dist_graphs}
+\end{table}
+
+\subsubsection{Distribution Tables}
+
+Tables can also be easily defined for joint distributions (Figure~\ref{fig:joint_table_examples}). Optional arguments include \verb!label!, \verb!color!, \verb!border color!, \verb!row player color!, and \verb!column player color!.
+
+\begin{table}[h!]
+ \centering
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \jgjointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\jgjointtable!}
+ \label{fig:jg_joint_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \rcgjointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\rcgjointtable!}
+ \label{fig:rcg_joint_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \ccgjointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\ccgjointtable!}
+ \label{fig:ccg_joint_table}
+ \end{subtable} \hfill
+
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \mgjointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\mgjointtable!}
+ \label{fig:mg_joint_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \jmgjointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\jmgjointtable!}
+ \label{fig:jmg_joint_table}
+ \end{subtable} \hfill
+ \begin{subtable}[t]{0.3\linewidth}
+ \centering
+ \jointtable[row player color=red, column player color=blue]{0.1}{0.2}{0.3}{0.4}
+ \cprotect\caption{\verb!\jointtable!}
+ \label{fig:empty_joint_table}
+ \end{subtable}
+
+ \caption{Examples of joint distribution table commands. The naming convention is: ``jg'' for ``joint graph'', ``rcg'' for ``row conditional graph'', ``ccg'' for ``column conditional graph'', ``mg'' for ``marginal graph'', and ``jmg'' for ``joint-marginal graph''.}
+ \label{fig:joint_table_examples}
+\end{table}
+
+
+
+\subsubsection{Marginal Simplex}
+
+Marginals, $\sigma_r = [\sigma_r^A, \sigma_r^B]$ and $\sigma_c = [\sigma_c^A, \sigma_c^B]$, can be plotted in two dimensions and the product of two 1-simplices. Points, images, heatmaps, and quiver plots can be generated from data (Figure~\ref{fig:marginal_simplex}).
+
+\begin{figure}[t]
+ \centering
+ \footnotesize
+ \begin{subfigure}[t]{0.32\linewidth}
+ \marginalsimplex[width=\linewidth,points=doc_data/marginal_simplex/points.dat]
+ \caption{Points}
+ \label{fig:marginal_simplex_points}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.32\linewidth}
+ \marginalsimplex[width=\linewidth,heatmap=doc_data/marginal_simplex/heatmap.dat]
+ \caption{Heatmap}
+ \label{fig:marginal_simplex_heatmap}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.32\linewidth}
+ \marginalsimplex[width=\linewidth,quiver=doc_data/marginal_simplex/quiver.dat,quiver scale arrows=0.1]
+ \caption{Quiver}
+ \label{fig:marginal_simplex_quiver}
+ \end{subfigure}
+
+ \caption{Marginal Simplex Plots}
+ \label{fig:marginal_simplex}
+\end{figure}
+
+
+\subsubsection{Joint Simplex}
+
+The joint of a 2×2 normal-form game is described by four probabilities, $\{\sigma(\text{AA}),\allowbreak\sigma(\text{AB}),\allowbreak\sigma(\text{BA}),\allowbreak\sigma(\text{BB})\}$. Due to the constraint that $\sum_{a \in \mathcal{A}} \sigma(a) = 1$, there is redundancy in this parameterization. Therefore probability distributions (a 4-dimensional barycentric coordinate system) can be visualized on a 3-simplex in 3-dimensional Cartesian coordinates.
+
+A joint distribution is a point within this simplex, with pure joint strategies corresponding to the vertices of the simplex. Sets of points can also be visualized. In particular, convex polytope sets can be visualized by tracing the edges of the polytope. Games permit a convex polytope of (C)CE equilibria, and therefore these can be easily visualized. In fact, in two-strategy games, CEs and CCEs are equivalent. NEs are equilibria that are (C)CEs and also factorize, $\sigma(a_1,a_2)=\sigma_1(a_1)\sigma_2(a_2)$. In 2×2 normal-form games, NEs can be either points, lines, or in a degenerate case a manifold which stretches across all the vertices of the simplex. These polytopes can be visualized using the \verb!polytope[...]{a}...{h}! command.
+
+\begin{figure}[t]
+ \centering
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{1}{1}{0}{0}{1}{0}{1}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{1}{1}{0}{0}{1}{0}{1}{0}~\brname{1}{1}{0}{0}{1}{0}{1}{0}}
+ \label{fig:simplex_dominant}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{0}{1}{1}{0}{0}{1}{1}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{0}{1}{1}{0}{0}{1}{1}{0}~\brname{0}{1}{1}{0}{0}{1}{1}{0}}
+ \label{fig:simplex_coordination}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{1}{-1}{-1}{1}{-1}{1}{1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{1}{-1}{-1}{1}{-1}{1}{1}{-1}~\brname{1}{-1}{-1}{1}{-1}{1}{1}{-1}}
+ \label{fig:simplex_cycle}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{1}{0}{0}{1}{1}{0}{1}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{1}{0}{0}{1}{1}{0}{1}{0}~\brname{1}{0}{0}{1}{1}{0}{1}{0}}
+ \label{fig:simplex_samaritan}
+ \end{subfigure}
+
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{-1}{-1}{+1}{0}{0}{+1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{-1}{-1}{+1}{0}{0}{+1}{-1}~\brname{+1}{-1}{-1}{+1}{0}{0}{+1}{-1}}
+ \label{fig:simplex_hazard}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{-1}{-1}{+1}{+1}{-1}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{-1}{-1}{+1}{+1}{-1}{0}{0}~\brname{+1}{-1}{-1}{+1}{+1}{-1}{0}{0}}
+ \label{fig:simplex_safety}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{+1}{-1}{-1}{0}{0}{+1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brname{+1}{+1}{-1}{-1}{0}{0}{+1}{-1}~\brgraph{+1}{+1}{-1}{-1}{0}{0}{+1}{-1}}
+ \label{fig:simplex_aidos}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{0}{-1}{0}{+1}{-1}{+1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brname{+1}{0}{-1}{0}{+1}{-1}{+1}{-1}~\brgraph{+1}{0}{-1}{0}{+1}{-1}{+1}{-1}}
+ \label{fig:simplex_picnic}
+ \end{subfigure}
+
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{0}{+1}{0}{-1}{0}{0}{+1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{0}{+1}{0}{-1}{0}{0}{+1}{-1}~\brname{0}{+1}{0}{-1}{0}{0}{+1}{-1}}
+ \label{fig:simplex_daredevil}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{0}{-1}{0}{+1}{-1}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{0}{-1}{0}{+1}{-1}{0}{0}~\brname{+1}{0}{-1}{0}{+1}{-1}{0}{0}}
+ \label{fig:simplex_fossick}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{0}{-1}{0}{0}{0}{+1}{-1}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{0}{-1}{0}{0}{0}{+1}{-1}~\brname{+1}{0}{-1}{0}{0}{0}{+1}{-1}}
+ \label{fig:simplex_heist}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{+1}{-1}{-1}{0}{0}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brname{+1}{+1}{-1}{-1}{0}{0}{0}{0}~\brgraph{+1}{+1}{-1}{-1}{0}{0}{0}{0}}
+ \label{fig:simplex_ignoreance}
+ \end{subfigure}
+
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{-1}{-1}{+1}{0}{0}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{-1}{-1}{+1}{0}{0}{0}{0}~\brname{+1}{-1}{-1}{+1}{0}{0}{0}{0}}
+ \label{fig:simplex_horseplay}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{+1}{0}{-1}{0}{0}{0}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{+1}{0}{-1}{0}{0}{0}{0}{0}~\brname{+1}{0}{-1}{0}{0}{0}{0}{0}}
+ \label{fig:simplex_dress}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.24\linewidth}
+ \polytope[width=\linewidth]{0}{0}{0}{0}{0}{0}{0}{0}
+ \vspace{-1.5em}
+ \caption{\footnotesize\brgraph{0}{0}{0}{0}{0}{0}{0}{0}~\brname{0}{0}{0}{0}{0}{0}{0}{0}}
+ \label{fig:simplex_zero}
+ \end{subfigure}\hfill
+ \hspace{0.24\linewidth}
+
+ \caption{Equilibrium polytopes of the canonical games introduced by \cite{marris2023_equilibrium_invariant_embedding_2x2_arxiv}. The black lines represent edges of the joint probability simplex. The solid purple lines represent the edges of the (C)CE polytope. The dashed blue lines represent a continuum of NE. Points with respective colours represent (C)CE and NE point solutions.}
+ \label{fig:polytopes}
+\end{figure}
+
+
+\subsection{Embeddings}
+
+The equilibrium-invariant embeddings introduced by \cite{marris2023_equilibrium_invariant_embedding_2x2_arxiv} can be visualized using the \verb!\nontrivialembedding[...]! command.
+
+\begin{table}[t]
+ \centering
+ \footnotesize
+ \begin{tabular}{lll}
+ Keyword Argument & Description & Default \\ \hline
+ width & Width of plot & \verb!\linewidth! \\
+ image & File path to background image & empty \\
+ matrix & File path to background matrix data & empty \\
+ points & File path to background points data & empty \\
+ axis color & & black \\
+ partial trivial & & false \\
+ symmetric strategies & & false \\
+ symmetric players & & false \\\
+ no class boundaries & Suppress class boundaries & false\\
+ no equilibrium boundaries & Suppress equilibrium boundaries & false\\
+ no best-response graphs & Suppress false best-response graphs & false \\
+ best-response graph color & & black\\
+ best-response graph font size & & \verb!\scriptsize! \\
+ no best-response names & Suppress best-response names & false \\
+ best-response name orientation & & -90 \\
+ best-response name distance & & -0.1em \\
+ best-response name color & & black!70 \\
+ best-response name font size & & \verb!\tiny! \\
+ no axes labels & Suppress axes labels & false \\
+ no tick labels & Suppress tick labels & false \\
+ \end{tabular}
+ \cprotect\caption{\verb!embedding[...]! command parameterization.}
+ \label{tab:embedding_command_args}
+\end{table}
+
+\begin{figure}[t]
+ \nontrivialembedding[no axes labels,no tick labels]
+ \caption{Embeddings plot.}
+\end{figure}
+
+\begin{figure}
+ \centering
+ \begin{subfigure}[t]{0.49\linewidth}
+ \nontrivialembedding[matrix=doc_data/embedding/heatmap.dat,no axes labels,no tick labels,no best-response names]
+ \caption{Heatmap. Data from \cite{liu2024_nfgtransformer}.}
+ \end{subfigure}\hfill
+ \begin{subfigure}[t]{0.49\linewidth}
+ \nontrivialembedding[points=doc_data/embedding/points.dat,no axes labels,no tick labels,no best-response names]
+ \caption{Points}
+ \end{subfigure}
+
+ \caption{Embedding plots with different backgrounds.}
+ \label{fig:embedding}
+\end{figure}
+
+\begin{figure*}[!t]
+ \centering
+
+ \begin{subfigure}[b]{0.49\linewidth}
+ \centering
+ \nontrivialembedding[width=1.0\linewidth,no axes labels,no tick labels,no best-response names]
+ \vspace{-1.0em}
+ \caption{Embedding}
+ \label{fig:example_embedding}
+ \end{subfigure}\hfill
+ \begin{subfigure}[b]{0.49\linewidth}
+ \centering
+ \nontrivialembedding[width=1.0\linewidth,no axes labels,no tick labels,no best-response names]
+ \vspace{-1.0em}
+ \caption{Non-trivial Embedding}
+ \label{fig:example_nontrivial_embedding}
+ \end{subfigure}
+
+ \begin{subfigure}[b]{0.49\linewidth}
+ \centering
+ \nontrivialembedding[width=1.0\linewidth,no axes labels,no tick labels,no best-response names]
+ \vspace{-1.0em}
+ \caption{Symmetric Embedding}
+ \label{fig:example_symmetric_embedding}
+ \end{subfigure}\hfill
+ \begin{subfigure}[b]{0.49\linewidth}
+ \centering
+ \nontrivialembedding[width=1.0\linewidth,no axes labels,no tick labels,no best-response names]
+ \vspace{-1.0em}
+ \caption{Zero-Sum Embedding}
+ \label{fig:example_zero_sum_embedding}
+ \end{subfigure}
+
+ \caption{Embedding Visualizations.}
+ \label{fig:embedding_visualizations}
+\end{figure*}
+
+
+\section{Tips and Tricks}
+
+\paragraph{Slow Builds or Out of Memory Errors}
+
+Some of the figures created by this package can take time to compile, and may slow down compile times for your project. Consider using the externalize command of TikZ/PFGplots to mitigate this issue:
+
+\begin{verbatim}
+\usepackage{tikz}
+\usetikzlibrary{external}
+\tikzexternalize[prefix=cache/, up to date check=md5]
+\end{verbatim}
+
+This will sequentially build each each TikZ picture individually and cache it. Subsequent project builds will use the cache rather than rebuild the picture each time. When modifying commands, it may be necessary to clear the cache to regenerate the pictures. Some setups may require manually making the cache directory and adding a dummy file in that directory. This process may be slower on the first build run. If your build times out trying again may work (because it will reuse the pictures that were cached on the first run).
+
+\section{Acknowledgements}
+
+Thank you to Ian Gemp, Georgios Piliouras, and Siqi Liu for their helpful feedback.
+
+\bibliography{twoxtwogame_bibtex}
+
+\end{document}