package satex
Install
Dune Dependency
Authors
Maintainers
Sources
md5=5c6d3368f18df9b2efb460759525401c
sha512=705d78eed6bacafb3191d4c9a5c09291da5ceb8c69560c3b68981484d4d998939640f36edc009ecae19641195afe4ccc3327ff5bac33cb34b759864a6763319c
Description
Satex takes descriptions of string diagrams in the form of categorical compositions and converts them to string diagrams drawn in TikZ.
Published: 07 Nov 2023
README
README.md
Satex is a string diagram generator for LaTeX. It takes as input a formula such as
(1 * delta) * (mu * 1)
(appropriately written in the LaTeX file) and produces a diagram such as
generated using TikZ.
It is inspired from Catex (see also the documentation) for which the sources were unfortunately not available.
In case you have a problem, please file a bug report at the following url: https://github.com/smimram/satex/issues.
General usage
In order to use satex in your LaTeX file, you should first include the style file:
\usepackage{satex}
You should then declare the operators you want to use in the format
\deftwocell[options]{name : m -> n}
which declares an operator named name
with m
inputs and n
outputs. The options in options
allow changing the way the operator is displayed and so on. For instance,
\deftwocell[triangle]{mu : 2 -> 1}
will declare the following operator:
One can then generate diagrams by using commands of the form
\twocell{expr}
where expr
is a categorical expression involving operators and identities. The identity on n wires is simply written as the corresponding number and compositions are noted *
: toplevel compositions are vertical ones and those inside parenthesis are horizontal. For instance
\twocell{(2 * mu) * (1 * mu) * mu}
will typeset
A run of pdflatex
on your file, say file.tex
, will generate a file named file.satex
. You should then run
satex file.satex
which will generate a file file.satix
containing the generated TikZ figures, which are automatically included in the next run of pdflatex
on your file.
Options for operators
Shapes
Various shapes are available for operators:
circle
(default one):triangle
:rectangle
:mergeleft
/mergeright
: /cup
/cap
: /crossing
/crossingr
: /braid
/braidl
: /crossing'
/braid'
: /blank
:
The dimension of the shape can be adjusted with the labelwidth
and labelheight
parameters.
Labels on operators
Labels are indicated between double quotes. For instance
\deftwocell[triangle,"\mu"]{mu : 2 -> 1}
typesets
Their vertical position can be adjusted with the position
parameter (between 0
and 1
).
Colors on operators
Colors can be specified with fill=color
option, e.g.
Labels on wires
The special operator label
allows adding labels to wires. The option d
or u
indicates whether the labels should be put down or up, and the above syntax is used for labels. For instance
\twocell{label[d,"x","y"] * mu * label[u,"z"]}
typesets
Inline operators
You can use operators which have not been declared beforehand: the syntax is (m -> n)[options]
to use an operator with m
inputs, n
outputs and given options. For instance,
(1 * (1 -> 2)[rectangle,"f"]) * ((2 -> 1)["g"] * 1)
typesets
Spacing
Horizontal space can be adjusted by using operators of the form space2.8
which adds an horizontal space of 2.8
(formally this is an operator with no inputs and outputs).
Vertical space can be adjusted by changing the height
parameter of one of the operators on the line.