cagix / pandoc-lecture

Pandoc Markdown Lecture Template: This project defines a skeleton repo for creating lecture slides and handouts including lecture notes out of Pandoc Markdown (https://pandoc.org/MANUAL.html) using a single source approach.
MIT License
100 stars 18 forks source link

Defaults: create PDF handouts from Markdown files #279

Open cagix opened 4 months ago

cagix commented 4 months ago

Aus dem in #291 erzeugten Gesamt-GFM-File kann ein PDF für das Skript erstellt werden.


Students are asking for a PDF version of the individual lessons and exercise sheets.

Preliminary concept:

Using #160 we could even have special sections like "tldr" or "wrap-up" or "outcomes" in the generated pdf!

cagix commented 4 months ago
  1. Schritt 1: Übersetzung in Ordner ohne das "lecture/"-Element (analog zum Web-Preprocessing)

  2. Schritt 2: Erzeugen einzelner PDFs für jede Einheit: pandoc <options> --rebase_relative_paths path/to/local/markdownfile.md -o path/to/pdf/generated-name.pdf

    • Berücksichtigung der extra Abschnitte (TLDR, Videos, ...) im YAML-Header: eigenes Template?!
    • Literatur, Quellen, Referenzen: Pandoc-Citeproc?
  3. Schritt 3: Erzeugen eines Gesamt-Buchs für die gesamte Veranstaltung

    • Option 1: pandoc <options> --rebase_relative_paths readme.md topicA/readme.md topicA/file1.md topicA/file2.md topicB/readme.md topicB/subtopic1/readme.md topicB/subtopic1/file1.md

      • Notwendig: Befehlszeile basteln durch rekursives Ablaufen des Startdokuments (Pandoc, Filter, Makefile-Regeln)
      • Schwierig:
        • Ordner dürfen nicht verschränken
        • Überschriften für Ordner (Chapter, Section) => über die readme.md in den Ordnern?
        • Down-Shifting der Überschriften in den Markdowndateien
    • Option 2: pandoc -L recursiveinclude readme.md

      • Wie (1), nur ohne Erzeugung von Zwischenelementen (die Verkettung passiert im Filter)
      • Schwierig zusätzlich: Links in Startdatei müssen u.U. anders behandelt werden: Tabelle mit Markdown-Links => können dort nicht einfach eingefügt werden
    • Option 3: pandoc book.md

      • Gliederungsdatei book.md muss erzeugt werden, Aufbau analog zur "summary.md" bei mdBook (Gliederungsüberschriften, "freistehende" Links auf Markdown-Dateien)
      • Rekursives Ablaufen der Links in der Startdatei
      • Indizierte Datenstruktur (Verhalten wie Set, Zugriff per Index, Reihenfolge des Hinzufügens): je Ebene genau eine Liste, Elemente der Ebene (Dateien, Ordner) in der Reihenfolge des Auftretens beim rekursiven Ablaufen der Startdatei einfügen => Toplevel-Ordner bleiben in der Reihenfolge erhalten, Ordner werden nicht verschränkt, Reihenfolge der Markdown-Dateien bleibt erhalten
      • Bucherzeugung dann mit include-Filter (Links statt speziellen Code-Blöcken)

    Problem: relative Links! Web-Preprocessing "löst" die Links auf und ersetzt diese durch den (eindeutigen) Dateinamen und Hugo macht daraus einen richtigen Link. Möglicherweise ist es doch am besten, für die Buchgenerierung die Ordnerstruktur zu belassen.

weitere Ideen: