LaTeX: Syntaxdiagramme mit rail.sty unter Windows

Send to Kindle
rail-Syntxdiagramm

rail-Syntaxdiagramm

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 ebenselbiges 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 rail verweigert. Das von MiKTeX produzierte aux-File war/ist mit rail nichtkompatibel. 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\System32 kopieren. 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.

2 Gedanken zu „LaTeX: Syntaxdiagramme mit rail.sty unter Windows

  1. Andreas Böhm

    Vielen Dank für die ausführliche Anleitung, die mich schnell in die richtige Richtung geführt hat.

    Einen kleine Hürde hatte ich, als rail.exe bei mir in jeder Zeile einen „Syntax Error“ anzeigte. Erst als ich eine rai-Datei von Hand erzeugt hatte, habe ich bemerkt, dass rail.exe keine Windows-Zeilenumbrüche (CRLF) mag. Falls die tex-Datei solche besitzt, wird das Rail-Package diese in die rai-Datei übernehmen.

    Wenn man seinen Editor nicht umstellen kann oder mag, so kann man aus Cygwin die Datei dos2unix auf die rai-Datei anwenden. Außerhalb von Cygwin braucht man dann noch cygwin1.dll und cygintl-8.dll. Damit ließ sich dann ein fehlerfreier Workflow erzeugen.

    1. Karsten Beitragsautor

      Danke für den Hinweise, Andreas. – Mir ist das bei meinen Tests nicht aufgefallen. Normalerweise arbeite ich unter Linux. Als ich rali für Windows übersetzt habe, habe ich es nur mit meinen LaTeX-Codes vom Linux-System getestet bzw. habe meinen Editor auf UTF-8 und Unix-Zeilenumbrüche gestellt gehabt, weil das für mich die praktikablere Konfiguration ist. – Nochmals: Danke

Kommentare sind geschlossen.