Generischer Buchfahrplangenerator

Hier geht es um alle anderen Add-On-Themen, z.B. Signale, Fahrpläne, Streckenmöbel oder auch die Installation der Add-On-Pakete
Nachricht
Autor
Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

Generischer Buchfahrplangenerator

#1 Beitrag von Andreas Karg »

Kinder entdecken die Welt. Heute: Buchfahrpläne

Unter diesem Leitmotiv hab ich mal ein bisschen mit LaTeX und Buchfahrplänen herumgespielt. Sinn der Aktion war, eine LaTeX-Umgebung zu schaffen, die aus einfachsten Eingaben einen Buchfahrplan baut, den man im Optimalfall sogar ausdrucken und heften könnte.

Aktueller Stand ist, dass die Befehle praktisch existieren und auch brauchbare Ergebnisse erzeugen. Nächster Schritt wäre die Implementation eines Parsers, der aus den von Zusi erzeugten Buchfahrplan-Textdateien einen LaTeX-Fahrplan umsetzt. Sollte prinzipiell kein größeres Problem sein. Allerdings fehlt im Zusi-Fahrplan der ganze Kopfteil mit Informationen zu Triebfahrzeug, Gewicht und so weiter. Den müsste man für jeden Zug nochmal extra eintippen. Weiß nicht, ob es da eine einfache Möglichkeit gibt, dem abzuhelfen.

Ansonsten fehlt mir noch jegliche Information zum Layout eines originalen DB-Buchfahrplanhefts. Hab leider kein solches hier. Insbesondere das Papierformat, die Breiten der einzelnen Spalten, die Schriftgröße und die Abstände des Fahrplans vom Seitenrand wären mir wichtig.

Weil Bilder mehr sagen als tausend Worte:
Ein kleines Beispiel...

Benutzeravatar
Michael_Poschmann
Beiträge: 19886
Registriert: 05.11.2001 15:11:18
Aktuelle Projekte: Modul Menden (Sauerland)
Wohnort: Str.Km "1,6" der Oberen Ruhrtalbahn (DB-Str. 2550)

#2 Beitrag von Michael_Poschmann »

Schick, auch wenn der Bk Steinhausen fehlt... 8)

Benötigst Du nun Scans von Vorbildern, oder wie ist Dein Text zu verstehen?
Dem Mann sollte - auf Zuruf - geholfen werden können.

Michael

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#3 Beitrag von Andreas Karg »

Scans wären schonmal nicht schlecht. Perfekt wäre aber die Vorschrift, nach der die Pläne erstellt werden. Immerhin sind wir hier in Deutschland, da gibts für ALLES Vorschriften und Normen und wenn ich sowas in die Finger bekommen könnte, könnt ich mein System drauf aufbauen.

Ich hab inzwischen ein paar Beispielbilder bekommen, an denen ich mich schonmal etwas orientieren konnte.... Dank hierfür an David Jung.

Benutzeravatar
Günni
Beiträge: 583
Registriert: 21.04.2003 14:22:37
Wohnort: BALE

#4 Beitrag von Günni »

Mehr als die DS 408 (S. 204) könnte ich dir auch nicht bieten.

Benutzeravatar
Oliver Lamm
Beiträge: 3102
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

#5 Beitrag von Oliver Lamm »

mit LaTeX
Willkommen in der Welt des "What I type is what I get" :)

Oli

PS: Wird da wirklich Serifenschrift in den Bfpl verwendet ?

ich habe hier für England das "Railalphabet" genommen, ähnelt der DIN-Schrift und ist serifenlos.

Bild
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Benutzeravatar
Michael_Poschmann
Beiträge: 19886
Registriert: 05.11.2001 15:11:18
Aktuelle Projekte: Modul Menden (Sauerland)
Wohnort: Str.Km "1,6" der Oberen Ruhrtalbahn (DB-Str. 2550)

#6 Beitrag von Michael_Poschmann »

Die Briten geben also sekundengenaue Fahrplanzeiten vor - wie weiland die Bundesbahn (bis in die späten Siebziger) oder die SNCF. Fein. Da läßt sich die Verspätung auf der Züge auf der Insel noch genauer messen. 8)

"Eine Stunde, vierzehn Minuten und dreißig Sekunden"
Michael

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#7 Beitrag von Andreas Karg »

Oli: Tatsächlich benutze ich schon seit einer ganzen Weile LaTeX. Ich will nicht behaupten, mich schon besonders gut damit auszukennen, aber für normale Dokumente reichts schon. Die Original-Buchfahrpläne haben Helvetica oder Arial (Überraschung!).

Ich hab inzwischen die Vorschrift bekommen, nach der die Dinger gebaut werden müssen. Allerdings kämpfe ich grade noch ein bisschen mit LaTeX. In der Tabular-Umgebung kann ich bekanntlich mit p{width} eine Spalte definierter Breite erstellen. Innerhalb dieser Spalte hab ich dann Parboxen mit dem Text drin. Diese Parboxen sind aber recht widerspenstig, wenn's darum geht, den Text in der Zelle auszurichten, also mit \flushright und \center. Benutzt man nämlich diese Befehle, bekommt die Parbox gleich mal ne zusätzliche Zeile, sodass man eine riesige Tabelle mit vieeeeel Luft drin kriegt. Nicht unbedingt wünschenswert. Die Befehlsform mit \centering{Bla} funktioniert. Allerdings kann ich die wiederum nicht in der Spaltendefinition unterbringen, sodass ich sie für jede Zelle einzeln wiederholen müsste. Auch doof. Kapiert irgendjemand, was ich hier schreibe? :D




Edit: Das Problem hat sich erledigt.... Man muss nur lang genug rumspielen. :D
Zuletzt geändert von Andreas Karg am 28.12.2006 14:32:54, insgesamt 2-mal geändert.

Benutzeravatar
Oliver Lamm
Beiträge: 3102
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

#8 Beitrag von Oliver Lamm »

@Andik: tabular ist auch nicht unbedingt das Gelbe vom Ei. Schau Dir mal tabularx an.

Oli

EDIT: Mein Screenshot ist übrigens mit Perl entstanden, direkt aus einem Excelsheet mit den Fahrplaninformationen ... :)
Zuletzt geändert von Oliver Lamm am 28.12.2006 16:19:13, insgesamt 1-mal geändert.
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#9 Beitrag von Andreas Karg »

Ich kenne tabularx. Der Vorteil von tabularx ist, dass die einzelnen Spaltenbreiten automatisch berechnet werden können. Bringt mir aber nichts, weil ich die Spaltenbreiten ja bereits genau kenne. Folglich lande ich wieder bei p-Spalten und habe die selbe FUnktionalität wie beim tabular ohne x. Im übrigen hab ich's wie gesagt jetzt auch so hingekriegt. Das Problem lag an der Art der Ausrichtungsbefehle, sprich \flushleft vs. \raggedright. Ersteres geht nicht und verursacht die erwähnten Leerzeilen, letzteres funktioniert.

Momentan spiele ich ein bisschen mit dem Layout herum, speziell mit dem geometry-Paket. Allerdings krieg ich's nicht hin, dass er mir zuverlässig auf der inneren Seite einen Bindeabstand lässt. Muss noch ein bisschen basteln...

Benutzeravatar
Oliver Lamm
Beiträge: 3102
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

#10 Beitrag von Oliver Lamm »

Momentan spiele ich ein bisschen mit dem Layout herum, speziell mit dem geometry-Paket. Allerdings krieg ich's nicht hin, dass er mir zuverlässig auf der inneren Seite einen Bindeabstand lässt. Muss noch ein bisschen basteln...
Andi,
welche Klasse verwendest du denn ?
Für den Binderand bedarf es - wenn ich mich richtig erinnere - der class book. Dort kannst du dann mit \setlength{\oddsidemargin}{2cm} den Rand für ungerade Seiten setzen. Analog gibt es noch \evensidemargin.

Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#11 Beitrag von Andreas Karg »

Ich benutze article. Inzwischen hab ich aber auch das Problem gelöst, nachdem ich mehrere Dokumentationen dazu gewälzt hab.

Solange ich mein Delphi nicht wieder habe (CD verschmissen, hahaha, Abhilfe kommt in ein paar Stunden) werd ich mal versuchen, die ganzen kleinen Sonderformen der DB-Buchfahrpläne in LaTeX-Befehle zu packen. Bekanntlich werden an ungeraden Donnerstagen Geschwindigkeitswechsel invertiert geschrieben, aber eine eventuell in der selben Zeile vorhandene Betriebsstelle nicht, wenn es regnet.

Mein bisheriger Ansatz setzt im Wesentlichen einen Eintrag unter den andern. Das heißt, dass Dinge, die eigentlich in eine Zeile passen (Wie Geschwindigkeitswechsel und Betriebsstelle) untereinander gesetzt werden. Ich überlege noch an einer guten Lösung für dieses Problem herum, bei der ich nicht für alle möglichen Kombinationen einen eigenen Befehl schreiben muss. Ansonsten könnt ich auch die Tabelle komplett ohne passende Befehle setzen, allerdings muss man da halt wieder alles zu Fuß machen und das is ja auch doof. :/

Als kleines Beispiel hier mal ein paar Buchfahrpläne der Strecke Braunschweig-Wolfsburg, mit Liebe von Hand gehackt:
http://andik.g3th.net/bfpl_bs_wb_beispiel.pdf
Zuletzt geändert von Andreas Karg am 29.12.2006 18:04:57, insgesamt 1-mal geändert.

Benutzeravatar
David Seemayer
Beiträge: 1470
Registriert: 12.08.2002 21:45:45
Wohnort: Vöcklabruck
Kontaktdaten:

#12 Beitrag von David Seemayer »

Sieht toll aus!

Ich als (Noch-) Laie bzgl. Programmierung frage mich natürlich ob es keine größeren Umstände machen würde daraus eine ÖBB-version abzuleiten!?
http://www.maurerbock.com" target="_blank

Ein Triebkopf kommt selten allein!

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33468
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#13 Beitrag von Carsten Hölscher »

Und mich würde interessieren, ob sich sowas derart in Zusi einbinden ließe, daß automatisch ein Bitmap oder auch html draus erzeugt werden kann. Welche Software müßte denn dann auf dem Nutzerrechner vorhanden sein?

Carsten
Zuletzt geändert von Carsten Hölscher am 30.12.2006 16:59:28, insgesamt 1-mal geändert.

Benutzeravatar
Oliver Lamm
Beiträge: 3102
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

#14 Beitrag von Oliver Lamm »

@Carsten: MiKTeX

Leider ist LaTeX kein kleines Paket was man mal eben itinstalliert. Hierbeit handelt es sich um eine Kompilersprache für den professionellen Textsatz/druck. So gerne ich es auch integriert sehen würde, Du müsstest jedesmal das komplette dokument in eine Quelltextdatei (.tex) schreiben und daraus dann die pdf mittels (pdflatex) oder eine postscript via (dvips) erstellen.

Wie wäre es denn via der libgd direkt bitmaps zu erstellen. Ich verwende diese direkt aus perl (scriptsprache) heraus um so die englischen Pläne zu erstellen. Da gibt es sicherlich auch Bibliotheken für delphi und co. Das Ergebnis kann sich - denke ich - auch sehen lassen.

Problematisch wird es wieder bei den Symbolen. LaTeX kommt von Hause aus dank AmsTeX mit grossem Symbolvorrat. libgd verwendet die bekannten Truetype fonts, so z.B. auch die Zusifont und andere.

Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33468
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#15 Beitrag von Carsten Hölscher »

Sowas in der Art hatte ich erwartet - dann wäre es eher was für die Streckenbauer (als eine Option), die ihre so erzeugten Ergebnisse dann als html oder bmp o.ä. mit ihrer Strecke ausliefern können.

Habe kürzlich die Befehslgeschichte auf html-Basis implementiert, das ist ganz nett. Ob es sich auch für die Fahrpläne eignet, müßte man mal sehen. Die Tabellen sind in html ja nciht ganz so freizügig zu machen. Also wenn mal jemand experimentieren will...

Carsten

Michael_Oppenauer
Beiträge: 182
Registriert: 29.06.2006 16:53:54
Wohnort: KBS 786 (Remsbahn) km 14,4

#16 Beitrag von Michael_Oppenauer »

LaTex liefert vorzugsweise PS oder PDF. Wenn man die Betriebsstellen als Tags mit in das PDF schreibt, könnte man beim erreichen der Betriebsstelle im PDF an die passende Stelle springen. So wie es auch bei der Hilfe angedacht ist. Ich könnte mir dann im Fahrplaneditor eine optionale Exportiermöglichkeit nach TEX vorstellen. Wer will kann daraus dann PDFs erstellen, die dann mit der Strecke verteilt werden können.
Das dynamische generieren beim Laden des Fahrplans würde nur den schon erwähnten Aufruf von pdflatex erfordern. Dies würde keinen großen zusätzlichen Ladezeiten erfordern. Nur die Installation ist das Problem. Ich glaube nicht, dass sich ein "nur Fahrer/Spieler" freut noch mal 100MB auf die Platte geknallt zu bekommen und zusätzlich glaube ich auch noch Ghostscript. Lizenzrechtlich gäbe es die Möglichkeit sich ein passendes abgespecktes Packet zu schnüren, doch weiß ich nicht was das für ein Aufwand ist.

Ich finde die Idee auch sehr reizvoll und plädiere dafür, diese Möglichkeit den Fahrplanbauern an die Hand zu geben. Diese können dann direkt die PDFs verteilen. Bei vorhandenem MikTex könnte man dann als Option alle Fahrpläne dynamisch generieren lassen.

Gruß Michael
In der Hoffnung durch vorhandene Rechtschreibfehler nicht die Diskussion vom eigentlichen Thema abzulenken.

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#17 Beitrag von Andreas Karg »

Mir stellt sich gerade die Frage, was MiKTeX für unseren beschränkten Anwendungsfall für Dateien braucht. Angesichts der Tatsache, dass es ja immer die selben Arten von Darstellungen sind, die damit generiert werden müssten, könnte sich das durchaus in Grenzen halten. Die ganzen 1000 Zusatzprogramme, die alle Formate nochmal kreuz und quer in alle anderen Formate konvertieren können, fielen genauso weg wie 90% der Pakete.

In obigem Fahrplan hab ich glaubich nur Babel (wegen dem Datumsformat), AMSLaTeX und ein kleines Dings für Tabellen mit Linien variabler Breite drin.

David:
Mit etwas Arbeit ist alles möglich. Momentan ist es so, dass der gesamte Layoutkrempel von mir in eine allgemeine Klasse geschrieben ist. Wenn ich jetzt einen DB-Buchfahrplan bauen will, sage ich LaTeX, es soll sich nach dem DB-Format richten. Für alles andere hab ich dann nur noch eine Sammlung von Kommandos, die die einzelnen Tabelleneinträge generieren - also Betriebsstelleneinträge in allen Varianten, dazu Geschwindigkeitswechsel und Kilometersprünge. Viel mehr als das können die ÖBB auch nicht in ihren Fahrplänen drinstehen haben. Die wesentliche Herausforderung wäre also wohl, den Befehlssatz und das Layout so umzubauen, dass man mit den selben allgemeinen Befehlen sowohl einen DB- als auch einen ÖBB-Fahrplan erstellen kann.

Wenn du mir Unterlagen geben kannst, in denen beschrieben ist, wie die ÖBB-Fahrpläne erstellt werden, kann ich mal kucken, was ich draus machen kann.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33468
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

#18 Beitrag von Carsten Hölscher »

Ich möchte aber niemanden zwingen, den Adobe-Reader zu installieren. Die Hilfe kann ich auch in anderen Readern öffnen, wenn dann auch ohne Navigation. Beim Buchfahrplan fände ich das nicht so schön.

Carsten

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#19 Beitrag von Andreas Karg »

LaTeX erzeugt standardmäßig sein DVI-Format. Ich glaube, man kann da keine Dateien einbetten und so Käse (die werden dann nur verlinkt) und es ist auch sonst eigentlich ein Format, das dafür gedacht ist, noch weiter verarbeitet zu werden, aber es gibt eine Reihe von (auch recht schlanken) Darstellungsprogrammen dafür. Vielleicht gibts ja da was passendes.

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

#20 Beitrag von Andreas Karg »

Argh.
LaTeX ist ne ziemlich störrische Sprache. Ich hab mal wieder ein Problem. Aber vielleicht kann mir ja hier jemand helfen, nachdem ich diverse FAQs und Newsgroups vergeblich abgesucht habe.

Und zwar versuche ich mich momentan an (String-)Variablen in LaTeX. Die konkrete Anwendung: Ich will, dass meine Klasse vom aktuellen Buchfahrplan immer zwei ungesetzte Zeilen voraus denkt. Hierzu habe ich mir per \newcommand zweimal sechs Variablen definiert, für jede Spalte in jeder Zeile eine. Die Buchfahrplanbefehle, die die sichtbaren Einträge erzeugen, machen dann nichts anderes als die Variablen zu verändern. Wenn eine Zeile fertig ist, wird ein Befehl aufgerufen, der die aktuellen Variablenwerte in die Tabelle setzt. Danach muss die ganze Chose eine Zeile weiterrücken. Es müssten also die Werte der zunächst zweiten Zeile in die der ersten Zeile geschrieben und anschließend die zweite Zeile geleert werden.

So sieht meine momentane Lösung aus, allerdings funktioniert sie nicht.
\renewcommand\zelleaa{\zelleba} schreibt nach meiner Vermutung nicht den Inhalt von \zelleba in \zelleaa, sondern nur "\zelleba". Gibts da irgendeinen Workaround oder nen ganz anderen Ansatz, den ich benutzen sollte?

Antworten