\documentclass[12pt]{article}
\usepackage{url,xspace}
\usepackage[a4paper,text={16cm,22.7cm},centering]{geometry}
\usepackage[pdflatex,recompilepics=true]{gastex}
\gasset{frame=false,Nw=6,Nh=6,loopdiam=5}
\parindent=0pt
\parskip=1.5ex
\newcommand\GasTeX{\textsf{GasTeX}\xspace}
\newcommand{\leftend}{{\vdash}}
\newcommand{\rightend}{{\dashv}}
\title{\GasTeX: Graphs and Automata Simplified in \TeX}
\author{Paul Gastin \\[1ex]
LMF, ENS Paris-Saclay \\
{\small\texttt{
[email protected]}}}
\date{v3.1}
\begin{document}
\maketitle
\begin{abstract}
This is a very minimal startup guide including some examples.
\end{abstract}
\begin{gpicture}[name=gpic:LR-concat,ignore]
\gasset{Nframe=n}
\node(ui)(15,3){$u$}
\node(ui+1)(45,3){$v$}
\gasset{AHnb=0}
\drawline(0,2)(0,-31)
\drawline(30,2)(30,-31)
\drawline(60,2)(60,-31)
\gasset{AHnb=1,arcradius=0.8}
\drawline(0,-1)(20,-1)(20,-3)(5,-3)(5,-5)(30,-5)
\node(x0)(23,-2){$\rho_0$}
\drawline[linecolor=red](30,-5)(50,-5)(50,-7)(35,-7)(35,-9)(45,-9)(45,-11)(30,-11)
\node(x0)(53,-6){\color{red}$\rho_1$}
\drawline[linecolor=red](30,-11)(20,-11)(20,-13)(25,-13)(25,-15)(18,-15)(18,-17)(30,-17)
\node(x1)(17,-12){\color{red}$\rho_2$}
\drawline[linecolor=red](30,-17)(40,-17)(40,-19)(30,-19)
\node(x2)(43,-18){\color{red}$\rho_3$}
\drawline[linecolor=red](30,-19)(15,-19)(15,-21)(22,-21)(22,-23)(10,-23)(10,-25)(30,-25)
\node(x3)(12,-20){\color{red}$\rho_4$}
\drawline(30,-25)(50,-25)(50,-27)(40,-27)(40,-29)(60,-29)
\node(x2)(53,-26){$\rho_5$}
\gasset{Nw=1.6,Nh=1.6,Nfill=y,ExtNL=y,NLdist=.7}
\node[NLangle=45](p)(0,-1){$p$}
\node[fillcolor=red,NLangle=45](p1)(30,-5){\color{red}$p_1$}
\node[fillcolor=red,NLangle=135](p2)(30,-11){\color{red}$p_2$}
\node[fillcolor=red,NLangle=45](p3)(30,-17){\color{red}$p_3$}
\node[fillcolor=red,NLangle=-135](p4)(30,-19){\color{red}$p_4$}
\node[fillcolor=red,NLangle=45](p5)(30,-25){\color{red}$p_5$}
\node[NLangle=0](q)(60,-29){$q$}
\end{gpicture}
\begin{gpicture}[name=gpic:LL-concat,ignore]
\gasset{Nframe=n}
\node(ui)(15,3){$u$}
\node(ui+1)(45,3){$v$}
\gasset{AHnb=0}
\drawline(0,2)(0,-31)
\drawline(30,2)(30,-31)
\drawline(60,2)(60,-31)
\gasset{AHnb=1,arcradius=0.8}
\drawline(0,-1)(20,-1)(20,-3)(5,-3)(5,-5)(30,-5)
\node(x0)(23,-2){$\rho_0$}
\drawline[linecolor=red](30,-5)(50,-5)(50,-7)(35,-7)(35,-9)(45,-9)(45,-11)(30,-11)
\node(x0)(53,-6){\color{red}$\rho_1$}
\drawline[linecolor=red](30,-11)(20,-11)(20,-13)(25,-13)(25,-15)(18,-15)(18,-17)(30,-17)
\node(x1)(17,-12){\color{red}$\rho_2$}
\drawline[linecolor=red](30,-17)(40,-17)(40,-19)(30,-19)
\node(x2)(43,-18){\color{red}$\rho_3$}
\drawline[linecolor=black](30,-19)(15,-19)(15,-21)(22,-21)(22,-23)(10,-23)(10,-25)(15,-25)
(15,-27)(0,-27)
\node(x3)(12,-20){\color{black}$\rho_4$}
\gasset{Nw=1.6,Nh=1.6,Nfill=y,ExtNL=y,NLdist=.7}
\node[NLangle=45](p)(0,-1){$p$}
\node[fillcolor=red,NLangle=45](p1)(30,-5){\color{red}$p_1$}
\node[fillcolor=red,NLangle=135](p2)(30,-11){\color{red}$p_2$}
\node[fillcolor=red,NLangle=45](p3)(30,-17){\color{red}$p_3$}
\node[fillcolor=red,NLangle=-135](p4)(30,-19){\color{red}$p_4$}
\node[NLangle=180](q)(0,-27){$q$}
\end{gpicture}
For the documentation, please see \url{
http://www.lsv.fr/~gastin/gastex/index.html}.
Solutions to known problems can be found in this page. In particular, some problems which
started with TeXLive 2021 and related to the use of the document class
\textsf{lipics-v2021}, or the package \textsf{todonotes}, or the library \textsf{shadows} of
\textsf{tikz}, and possibly other contexts.
The package consists of two files \verb|gastex.sty| and \verb|gastex.pro|.
\begin{itemize}
\item \verb|gastex.sty| contains the definition of all \GasTeX macros.
This file could be in your working folder but it is best placed where \verb|.sty| files are, e.g.,
\verb|.../texmf-dist/tex/latex/gastex/gastex.sty| \\
or \\
\verb|.../texmf-local/tex/latex/gastex/gastex.sty|
\item \verb|gastex.pro| which contains all the postscript procedures used to actually draw the pictures.
This file could be in your working folder but it is best placed where \verb|.pro| files are, e.g.,
\verb|.../texmf-dist/dvips/gastex/gastex.pro| \\
or \\
\verb|.../texmf-local/dvips/gastex/gastex.pro|
\end{itemize}
This documentation file simply contains a few simple examples on how to make figures with
\GasTeX. It should be compiled with
\begin{quote}
\verb|pdflatex --shell-escape gastex-doc.tex| \\
or \\
\verb|pdflatex --enable-write18 gastex-doc.tex|
\end{quote}
The first example below is a 2-way deterministic finite state transducer. It consists of
a \verb|gpicture| environment which contains the \GasTeX commands for nodes and
transitions.
\begin{center}
\begin{gpicture}[name=gpic:2DFT]
\gasset{Nframe=y,Nw=8,Nh=8,loopdiam=6}
\unitlength=2.8mm
\node[Nmarks=i](0)(0,0){$q_0$}
\node(1)(10,0){$q_1$}
\node[Nmarks=r](2)(20,0){$q_2$}
\node(6)(30,0){$q_3$}
\node(3)(30,-8){$q_4$}
\node(4)(20,-8){$q_5$}
\node(5)(10,-8){$q_6$}
\drawloop(0){$\leftend/\varepsilon,+1$}
\drawloop(1){$a/\varepsilon,+1$}
\drawloop(2){$\rightend/\varepsilon,+1$}
\drawloop(6){$a/\varepsilon,+1$}
\drawloop[loopangle=-90](3){$a/a,-1$}
\drawloop[loopangle=-90](4){$a/b,-1$}
\drawloop[loopangle=-90](5){$a/\varepsilon,+1$}
\drawedge(0,1){$b/\varepsilon,+1$}
\drawedge(1,2){$b/\varepsilon,+1$}
\drawedge[ELpos=25,ELdist=0,ELside=r](2,3){$b/\varepsilon,-1$}
\drawedge[ELpos=50](6,3){$b/\varepsilon,-1$}
\drawedge[ELside=l](3,4){$b/\varepsilon,-1$}
\drawedge[ELpos=50](4,5){$b/\varepsilon,+1$}
\drawedge[ELpos=50](5,1){$b/\varepsilon,+1$}
\drawedge(2,6){$a/\varepsilon,+1$}
\end{gpicture}
\end{center}
The second one is in Figure~\ref{fig:LR-concat}. The pictures have been defined at the
beginning of the \LaTeX\ document, with the \verb|name| and \verb|ignore| optional
parameters given to the \verb|gpicture| environment. These pictures are generated but not
inserted immediately. Instead, the \verb|\gusepicture| command allows to include each
named picture, possibly multiple times at different places.
All pictures defined in \verb|gpicture| environments are compiled and stored in a file
called \verb|filename-pics.pdf|, one picture per page. These pictures could be included
in any \LaTeX\ file, possibly another \LaTeX\ file which need not use the \GasTeX package,
simply by using \verb|\includegraphics| as follows:
\begin{quote}
\verb|\includegraphics[page=2,scale=0.6]{gastex-doc-pics.pdf}|
\includegraphics[page=2,scale=0.6]{gastex-doc-pics.pdf}
\end{quote}
This is convenient for instance when sending the \LaTeX\ file to \verb|Arxiv| or to an
editor (journal, proceedings) which does not allow the \verb|--shell-escape| option when
compiling with \verb|pdflatex|. Actually, \GasTeX does this automatically for you. When
loading the package, set the \verb|recompilepics| option to \verb|false| as follows:
\begin{quote}
\verb|\usepackage[pdflatex,recompilepics=false]{gastex}|
\end{quote}
then you may compile without the \verb|--shell-escape| option
\begin{quote}
\verb|pdflatex gastex-doc.tex|
\end{quote}
and \GasTeX automatically calls \verb|\includegraphics| to include the pictures that have
been previously generated and stored in the file \verb|gastex-doc-pics.pdf|.
\begin{figure}[htb]
\centering
\gusepicture{gpic:LR-concat}
\hfill
\gusepicture{gpic:LL-concat}
\caption{Decomposition of a left-right run and a left-left run over the product $w=uv$.}
\label{fig:LR-concat}
\end{figure}
\end{document}