#import "/globals.typ": *

== Codelistings

#slide(title: [Codelistings])[
  - Abdrucken von Codezeilen
  - einfaches Syntaxhighlighting
  - nativ unterstützt
    - Paket #link("https://typst.app/universe/package/codly")[codly] für mehr Anpassungsmöglichkeiten und Zeilennummern
]

#slide(title: [Native Codelistings])[
  #show-code-render("native-listings.typ")
]

#slide(title: [Einbinden von Beispielen aus externen Dateien])[
  - `lang` _muss_ explizit gesetzt werden, auch wenn die Dateiendung Teil des Pfades ist
  ```typ
  #raw(read("/path/to/file"), lang: "<language>", block: true)
  ```
  - `#read()` ließt Inhalt der Datei ein
  - `#raw()` für Listingdarstellung
]

#slide(title: [Plugin codly])[
  - #link("https://typst.app/universe/package/codly")[codly] bietet viele weitergehende Features
    - Einrückung
    - Zeilennummern
    - Zebrastreifen
  - Einrichtung:
    ```typ
    #import "@preview/codly:1.3.0": *
    #import "@preview/codly-languages:0.1.1": *
    #show: codly-init.with()
    #codly(languages: codly-languages)
    ```

  - danach werden Codeblöcke automatisch durch codly formatiert
  - tiefgehende #link("https://raw.githubusercontent.com/Dherse/codly/main/docs.pdf")[Dokumentation]
]

#codly-enable()

#slide(title: [codly -- Beispiel])[
  ```java
  public static void main(String[] args) {
    System.out.println("Hello Cyberweek");
  }
  ```

  - codly ist stark konfigurierbar
  - jedes Verhalten und Feature kann deaktiviert oder angepasst werden
]

#slide(title: [codly -- In `figure`])[
  #show-code-render("codly-figure.typ")
]

#slide(title: [codly -- Highlights])[
  #show-code-render("codly-highlights.typ")
]

#slide(title: [codly -- Highlights referenzieren])[
  #show-code-render("codly-highlights-reference.typ")
]

#codly-disable()
