Syntaxdiagramm (rail-Paket) zentrieren?

Tabellen und Grafiken erstellen und anordnen


and_go
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 30. Apr 2014, 10:40

Syntaxdiagramm (rail-Paket) zentrieren?

Beitrag von and_go »

Hallo,
ich suche nach einer Möglichkeit, ein mit dem rail-Paket erstelltes Syntaxdiagramm zu zentrieren. \centering und die center-Umgebung werden ignoriert. Eine Verschiebung nach rechts kann ich erzielen, indem ich
\railparam{\addtolength{\leftmargin}{100pt}}\railinit
ergänze und den Wert manuell für jedes Diagramm anpasse -> unschön!
Habt ihr bessere Ideen? Laut Dokumentation erstellt es eine Picture-Umgebung in einer List-Umgebung, falls euch das weiterhilft.
Folgendes ist die Ausgangslage mit einem linksbündigen Diagramm als Ergebnis:
\documentclass{book}
\usepackage{libs/rail} 
\begin{document}
\paragraph*{SET TAMONITOR}
\begin{rail}
'SET TAMONITOR' ( 'TRUE' | 'FALSE' );
\end{rail}
\end{document}
Inhalt der RAO-Datei zum Testen:
% This file was generated by 'C:\DOKUME~1\XPMUSER\DESKTOP\RAIL\RAIL\RAIL.EXE' from 'test.rai'
\rail@i {1}{ 'SET TAMONITOR' ( 'TRUE' | 'FALSE' ); }
\rail@o {1}{
\rail@begin{2}{}
\rail@term{SET TAMONITOR}[]
\rail@bar
\rail@term{TRUE}[]
\rail@nextbar{1}
\rail@term{FALSE}[]
\rail@endbar
\rail@end
}
Wird noch mehr Code benötigt? Ich bin diesbezüglich noch ein Newbie.
Zuletzt geändert von and_go am Do 1. Mai 2014, 20:17, insgesamt 1-mal geändert.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Eine automatisierte Lösung für das Zentrieren eines rail Diagrammes dürfte schwierig bis gar nicht möglich sein.

rail erstellt die Abbildung in einer picture Umgebung der Breite 0 und packt diese picture Umgebung deshalb in eine minipage der Breite \linewidth. Damit sind die rail Abbildungen dann immer \linewidth breit.

Eventuell kannst du die Diagramme alle um den gleichen Betrag einrücken statt sie zu zentrieren?

Wenn sie aber unbedingt zentriert werden müssen, dann ist es vermutlich einfacher die tatsächliche Breite des Diagrammes von Hand auszumessen statt jeweils den nötigen Einzug zu ermitteln. Zumal sich dieser ja ändern würde, wenn man aus irgendeinem Grund die Textbreite ändert. Die (gemessene) tatsächliche Breite kann man als Argument einer zentrierten minipage verwenden.
\documentclass{book}
\usepackage{rail}

\begin{document} 
\paragraph*{SET TAMONITOR} 


\begin{center}
\begin{minipage}{6.8cm}
\begin{rail} 
 'SET TAMONITOR' ( 'TRUE' | 'FALSE' ); 
\end{rail}
\end{minipage}
\end{center}
\end{document}
Siehe auch Worin besteht der Unterschied zwischen \textwidth und \linewidth?

Gruß
Elke

and_go
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 30. Apr 2014, 10:40

Beitrag von and_go »

danke, das hilft mir schon mal weiter. Ggf. kann man in rail.sty eine Zentrierung ergänzen. Der Code ist ja noch überschaubar.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

and_go hat geschrieben:danke, das hilft mir schon mal weiter. Ggf. kann man in rail.sty eine Zentrierung ergänzen. Der Code ist ja noch überschaubar.
Nein, kann man nicht so einfach, da in der rail.sty nirgendwo die tatsächliche Breite des Diagrammes ermittelt wird. Der picture Umgebung wird wie gesagt mitgeteilt, dass sie die Breite 0 hat ... Und wenn du die in der rail.sty zentrierst, landet der linke Rand in der Mitte.

Du kannst das auch sehen, wenn du in meinem Code oben die Breite der minipage auf 0 setzt. Du bekommst dann keinerlei Warnung wegen einer zu vollen Box und der linke Rand der rail Abbildung ist zentriert.

Gruß
Elke

and_go
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 30. Apr 2014, 10:40

Beitrag von and_go »

schade, da ich eh alle Teildiagramme zentriert bräuchte, was das rail-Package nicht ermöglicht, habe ich mich dazu entschieden, Arbeit zu investieren und die Diagramme mit tikz zu erstellen. Mit TikzEdit geht das auch recht komfortabel.

Antworten