Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Back contribution from Görlitz #145

Merged
merged 11 commits into from
Sep 25, 2022
Merged

Conversation

PeterNerlich
Copy link
Contributor

@PeterNerlich PeterNerlich commented Sep 26, 2021

TL;DR:

  • organizational changes: separate macros.tex, colors.tex to include in any document (here: timetable/zeitplan.tex uses same ese_bg_color), define \eseyear once and use it everywhere
  • layout/quality changes: make page count always divisible by 4 (brochure), define document in both RGB and CMYK colors (control usage with \def\colormodel)
  • proper redirections, even for shit urls containing #?&% ([NE,R,L] flags in .htaccess)
  • automatically compile timetable from scratch before manual (when using latexmk)

Feel free to request a PR for any subset of changes, should you decide against using some (but not all) of it!


Hi! Wie in #144 angedroht, haben wir in Görlitz unser allererstes Manual auf Basis Eurer Arbeit tatsächlich fertiggestellt! Während Ihr bis 06.09. Eure v2021 erstellt habt, kam unsere Arbeit lustigerweise erst ab dem 09.09. so richtig ins Rollen. Vergangenen Donnerstag haben wir sie fertiggestellt und in den Druck gegeben (wir brauchen nur <100 Stück) und sind sehr gespannt, wie sie in der kommenden Woche angenommen werden!

In der Zwischenzeit haben sich einige Änderungen ergeben, die wir gerne mit Euch teilen möchten:

Miscellaneous

  • Bloße "Anführungszeichen" im Quelltext führen bereits zum gewünschten, korrekt gesetzten Ergebnis.
  • Macros wurden in macros.tex ausgelagert.
    • Hier definieren wir \eseyear, damit es im ganzen Dokument genutzt und in den Folgejahren nur noch einmal hier inkrementiert werden muss.
    • Beispielhaft haben wir \bafog definiert, das einfach zu BAföG expandiert (weil sich viele uns nie merken können, was davon nun groß und was kleingeschrieben wird). Die Benutzung ist intuitiv bis darauf, dass nachfolgende Leerzeichen geschützt werden müssen, da sie sonst nur den Makronamen begrenzen.
      (Das \bafog-Amt... funktioniert wie erwartet,
      Um \bafog zu... FALSCH: Um BAföGzu...
      Um \bafog\ zu... erzeugt Um BAföG zu...)
  • .latexmkrc angepasst
    • einige Erklärungen wurden von collaborating.tuhh.de/alex/latex-git-cookbook geklaut.
    • $warnings_as_errors steht zur Verfügung und ist für CI Pipelines empfohlen, bleibt aber vorerst deaktiviert (auf 0)
    • latexmk gibt am Ende eine Zusammenfassung über die benötigte CPU-Zeit.
    • Es werden maximal 5 Durchläufe erlaubt.
    • latexmk kompiliert nun automatisch timetable/zeitplan.tex. timetable/zeitplan.pdf wurde aus dem Repo entfernt und zu .gitignore hinzugefügt.

Fixes

  • timetable.sty schien Probleme mit Text in parallelen Events zu haben, wenn Zeilenumbrüche vorkamen. Nur die erste Zeile war richtig positioniert, nachfolgende Zeilen begannen eine Box-Breite zu weit links. Dieses Verhalten wurde (zumindest für 2 parallele Events, also \event ...{1} und \event ...{2} behoben.
    Anscheinend ist dies eine bereits modifizierte
    (/zusammengehackte)* Version, folglich habe ich die Änderungen auch nur lazy vorgenommen und nur direkt ins Projekt committed.
  • .htaccess – Links/Redirects behoben: Für die HSZG hatten wir teilweise echt hässliche Links (wie https://www.kreis-goerlitz.de/city_info/webaccessibility/index.cfm?item_id=873097&modul_id=5&record_id=155260 mit #?&%s drin), die von Apache anders wiedergegeben wurden. Durch hinzufügen der NE-Flag (noescape) werden Browser an die korrekte Adresse geleitet.
  • .htaccess: Außerdem wurden die R (redirect) und L (last) -Flags hinzugefügt. Damit ist die Weiterleitung an eine externe Adresse explizit und beendet die Verarbeitung der rule chain (da alle generierten Einträge exact matches mit ^<Zahl>$ sind, sollte das zwar – bis auf den wirklich vernachlässigbaren Performance-Overhead für das Prüfen der restichen Regeln – keinen Unterschied machen, schadet aber auch nicht).
  • Es werden automatisch bis zu drei Leerseiten vor dem back cover eingefügt, um es immer auf der letzten Seite zu behalten.
    (Mit dem Zielmedium als gedruckte Broschüre muss das Dokument nicht nur eine gerade, sondern eine durch 4 teilbare Seitenzahl besitzen: Jedes Blatt A4, dass dafür gebunden wird, erzeugt Platz für nicht mehr und nicht weniger als 4 A5 Druckseiten. Eine Reduktion um 2 ist durch die Art der Bindung nicht möglich.)

Colors and print versions

Bei dem Gespräch in der Druckerei ist aufgekommen, dass einige Farben (vor allem das Cover und der Zeitplan) ungünstige Farbwerte hatten – da sie in RGB definiert waren. Nachdem die PDF durch die Druckerei entsprechend nachbearbeitet worden war, kam ich nicht umhin, nach besseren Möglichkeiten zu recherchieren.
In LaTeX können Farben in RGB, CMYK oder einer Reihe von weiteren Modellen definiert werden. Das xcolor-Package erlaubt dabei, für eine Farbe mehrere Versionen in verschiedenen Modellen zu definieren. Außerdem kann erzwungen werden, dass alle Farben bei der Ausgabe ein bestimmtes Modell verwenden. Nicht in diesem Modell hinterlegte Farben werden dabei umgerechnet.
Daraus ergaben sich diese Änderungen:

  • Farbdefinitionen wurden in colors.tex ausgelagert. Diese Datei wird nun auch von timetable/zeitplan.tex inkludiert, um auf die gleichen Farbdefinitionen zugreifen zu können. Unter anderem wurde die nicht auskommentierte, aktuelle Farbe beispielhaft in rgb/cmyk hinterlegt (ohne jedoch das tatsächliche Erscheinungsbild im Druck zu testen).
  • timetable.sty wurde angepasst: Anscheinend ist dies eine bereits modifizierte*(/zusammengehackte)* Version, folglich habe ich die Änderungen auch nur lazy vorgenommen und nur direkt ins Projekt committed.
    \defineevent nahm für bg und text jeweils R, G und B–Werte als separate Argumente. Das Makro wurde zur Rückwärtskompatibilität so beibehalten.
    • \defineeventcolors wurde hinzugefügt. Das Makro verhält sich wie \defineevent, ermöglicht aber die Angabe des Farbmodells und der Werte (je bg und text). Dadurch werden auch Mischformen wie \defineeventcolors{test}{rgb/cmyk}{0,0,0.5/0.5,0.5,0,0.5}{gray}{0.9} ermöglicht.
    • \leteventcolors wurde hinzugefügt. Analog zu xcolors \letcolor können hier die Namen zuvor definierten Farben angegeben werden.
      Somit kann beispielsweise ein Event-Typ "ese" definiert werden, der als einfach die in colors.tex definierten Farben verwendet: \leteventcolors{ese}{ese_bg_color}{ese_fg_color}.
  • colors.tex nutzt xcolors Makro \selectcolormodel{\colormodel}, um die Ausgabe eines bestimmten Farbmodells zu erzwingen. \colormodel kann über den Befehl definiert werden (z. B. latexmk -usepretex='\def\colormodel{cmyk}'), ist es noch undefiniert, wird es vor \selectcolormodel auf rgb gesetzt.
  • Die Seiten für front und back cover werden nun in ese_bg_color gesetzt. Dadurch können transparente Covergrafiken verwendet werden, die auch späte Farbänderungen (über \colormodel oder Umdefinitionen kurz vor dem Druck) ohne größeren Aufwand oder Artefakte möglich machen.

@PeterNerlich PeterNerlich force-pushed the fsri-hszg-contrib1 branch 2 times, most recently from 5715445 to 9241fe3 Compare September 27, 2021 07:39
…rints properly while the cover gfx can be transparent
- separate colors.tex, to include from any sub-document
- provide both rgb and cmyk versions
- use rgb by default, \def\colormodel{cmyk} for clean print version
- make timetable.sty work with all color specifications:
- new \defineeventcolors accepts 5 arguments: name, bg colorformat, bg color values, fg format, fg values
- new \leteventcolors accepts 3 arguments: name, name of previously defined color for bg, name of color for fg

ESE 21 red CMYK version very VAGUELY approximated by a non-professional
@jkrbs jkrbs merged commit 2fc2a33 into fsr:master Sep 25, 2022
jkrbs added a commit that referenced this pull request Sep 25, 2022
@Feliix42
Copy link
Member

To not let this go unnoticed: thanks a ton for your work, it's greatly appreciated. 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants