Syntaxdiagramm mit rail erstellt

LaTeX: Syntaxdiagramme mit rail.sty unter Windows

Heute greife ich mal ein Windows-Thema auf. Warum? – Nun, ich muss in der Firma für Windows enwickeln und mache dies gerne in einer nativen Umgebung. Also habe ich mein Entwicklungs-Notebook auf Windows 7 (64-Bit) umgerüstet. Ungeachtet dessen mag ich auf LaTeX nicht verzichten, weshalb ich selbiges auch installiert habe. Ich nutze es für technische Dokumentationen, die nicht selten auch Syntaxdiagramme o.ä. enthalten, die ich dann mit rail erstelle.

Eines vorweg: MiKTeX hat die Zusammenarbeit mit railverweigert. Das von MiKTeX produzierte aux-File war/ist mit rail nicht kompatibel. Möglicheweise kann man das heilen, ich habe mich aber für TeXLive 2013 entschieden. TeXLive verwende ich auch unter Linux. Damit klappt alles wunderbar.

Jetzt aber zum Kern dieses Beitrags. Das rail-Paket kann man sich bei CTAN herunterladen. Unter Linux, wo ich das Paket bislang eingesetzt habe, wird es übersetzt, in LaTeX enstsprechend eingerichtet und gut ist es. Da ich das bereits ein paar Male gemacht hatte, wusste ich, das auch ein fertiges Windows-Binary dem Paket beigefügt ist. – Doch was für eine Enttäuschung: Das Programm ist ein uraltes 16-Bit-Proggi. Das wollte und wird mein Windows 7 nicht akzeptieren.

Lösung: Selbst ist der Mann. Der Quellcode ist vorhanden, also ran an den Compiler und alles frisch übersetzt. – Kenne ich doch von Linux!

Was im Grunde einfach klingt, gestaltet sich dann in der Praxis doch etwas schwieriger. Um das Proggi zu übersetzen benötigt man einen Scanner- bzw. Parser-Generator. flex und bison sind aber nicht gerade übliche Windows-Tools. Ich habe mir also verschiedene C-Compiler angesehen, die frei für Windows verfügbar sind. Keiner von ihnen hatte die nötigen Werkzeuge mit im Gepäck. Daher habe ich zu Cygwin gegriffen, einer Linux-ähnlichen Umgebung unter Windows.

Mittels Cygwin ließ sich rail dann problemlos übersetzen und auch in der nativen Windows-Umgebung einsetzen. Ich brauchte lediglich ein paar Änderungen im Makefile machen.

karsten@norderney ~/Downloads/Rail
$ make
bison -y  -dv gram.y
conflicts: 2 reduce/reduce
cmp -s gram.c y.tab.c || cp y.tab.c gram.c
cmp -s gram.h y.tab.h || cp y.tab.h gram.h
gcc -DYYDEBUG -O   -c -o rail.o rail.c
gcc -DYYDEBUG -O   -c -o gram.o gram.c
flex  -t lex.l > lex.c
gcc -DYYDEBUG -O   -c -o lex.o lex.c
gcc -DYYDEBUG -O rail.o gram.o lex.o -o rail
karsten@norderney ~/Downloads/Rail
$  _

Unter Windows wird die Datei cygwin1.dll benötigt. Die kann man sich aus der Cygwin-Installation ausborgen und nach C:\Windows\System32kopieren. Damit läuft das Proggi dann perfekt.

Wer jetzt auch Lust auf Compilieren bekommen hat, der kann sich das Paket hier herunterladen. Ein angepasstes Makefile ist beigefügt. Wer dazu keine Lust hat, oder keine Gelegenheit, der kann die beigefügte EXE-Datei benutzen. Die Datei cygwin1.dll ist übrigens auch dabei.

Wer Probleme hat Manpages unter Windows anzusehen, der mag in den folgenden Abdruck derselben schauen:

RAIL(1)                     General Commands Manual                    RAIL(1)



NAME
       rail - railroad diagrams for LaTeX

SYNOPSIS
       rail [-+acdhit] [file]

DESCRIPTION
       rail is part of the Rail package, which allows you to use railroad dia‐
       grams with LaTeX.  It will read file.rai and create file.rao  if  there
       are  no errors.  If there are any errors, file.rao will be removed.  If
       no file argument is given, rail reads from standard input and writes to
       standard output.

OPTIONS
       Option  arguments start with a minus or a plus sign, followed by one or
       more option letters. If a minus sign is used, the options are set. With
       a  plus  sign,  the  options are reset. By default, no options are set.
       Options can also be set or reset from the LaTeX file.   This  overrides
       the corresponding options setting from the command line.  The effect of
       setting each option is described below.

       -a     An alternate layout is used for the *  operator  with  an  empty
              second  argument.   Instead of transforming x * into () | x + it
              is transformed into () + x.

       -c     The input is  checked  for  undefined  identifiers  and  unnamed
              rules.   Statistics about those are printed to the standard out‐
              put stream.

       -d     Turns on yacc(1) debugging output. This only works if  the  pro‐
              gram  has  been  compiled  with  YYDEBUG  defined  (which is the
              default) and your yacc supports it.

       -h     Arrow-heads are drawn where lines enter the boxes.

       -i     Index entries are generated for all  named  rules,  i.e.,  rules
              that are of the form identifier : body.

       -t     The  parse  tree  of  a  rule  body  is  included as comments in
              file.rao.

FILES
       file.rai            rail input file
       file.rao            rail output file

SEE ALSO
       Rail - Syntax Diagrams For LaTeX

AUTHOR
       L.W.J.  Rooijakkers  <lwj@cs.kun.nl>,  K.  Barthelmann  <barthel@infor‐
       matik.uni-mainz.de> with contributions by J. Olsson and others

VERSION
       1.2 #1

BUGS
       Due  to  the  use of yacc, the error messages are not very helpful, but
       this is difficult to correct.



                                 Jul 26, 1998

Viel Spaß mit Syntaxdiagrammen!

Nachtrag: Bei der Punkt-Akademie findet sich ein Beitrag, wie rail auch unter macOS / OS X genutzt werden kann.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert