Warum unterscheidet sich die lokale Darstellung von Rouge von der Darstellung auf GitHub Pages?
Dass die Darstellung von Rouge (dem Syntax-Highlighter, der standardmäßig von Jekyll verwendet wird) lokal anders aussieht als auf GitHub Pages, ist ein häufiges Problem. Es gibt dafür meist drei Hauptgründe: Versionsunterschiede, fehlendes/anderes CSS oder Konfigurationsabweichungen.
Hier sind die Details zu den Ursachen und wie du sie behebst:
1. Unterschiedliche Software-Versionen
GitHub Pages läuft in einer streng kontrollierten Umgebung mit spezifischen Versionen von Ruby-Gems (wie Jekyll und Rouge). Wenn deine lokale Version neuer oder älter ist als die von GitHub, kann das HTML-Markup, das Rouge erzeugt, leicht variieren.
- Die Lösung: Nutze das
github-pagesGem in deinem Projekt, um die Umgebung von GitHub exakt lokal zu simulieren. - Prüfe dein
Gemfile. Es sollte so aussehen:gem "github-pages", group: :jekyll_plugins - Führe lokal immer
bundle exec jekyll serveaus (statt nurjekyll serve), um sicherzustellen, dass die imGemfile.lockdefinierten Versionen genutzt werden.
2. Das CSS-Theme fehlt oder unterscheidet sich
Rouge generiert nur das HTML (viele <span>-Tags mit Klassen wie .k, .nf, .s2). Das eigentliche Aussehen (Farben, Schriftart) kommt von einer CSS-Datei.
- Lokal vs. GitHub: Vielleicht hast du lokal ein Stylesheet eingebunden, das auf GitHub Pages nicht korrekt geladen wird (z. B. wegen eines falschen Pfads/BaseURL).
- Generiertes CSS: Wenn du ein eigenes Rouge-Theme generiert hast (mit
rougify style ...), stelle sicher, dass diese CSS-Datei im Repository eingecheckt ist und im Header deiner HTML-Layouts korrekt verlinkt wurde. - Standard-Themes: Manche Jekyll-Themes bringen eigene Syntax-Styles mit. Wenn GitHub Pages ein Standard-Theme (wie Minima) verwendet, dein lokales Setup aber eine leicht andere Version davon hat, unterscheiden sich die Farben.
3. Konfiguration in der _config.yml
Es gibt Einstellungen, die beeinflussen, wie der Markdown-Interpreter (Kramdown) mit Rouge interagiert.
- Prüfe deine
_config.yml:kramdown: syntax_highlighter: rouge syntax_highlighter_opts: # Hier könnten Optionen stehen, die lokal anders interpretiert werden block_code_build_lines: true - GitHub Pages hat oft Standardeinstellungen für Kramdown, die von deinen lokalen Standardwerten abweichen könnten.
4. Cache-Probleme
Manchmal liegen die Unterschiede einfach an veralteten Dateien im Browser-Cache oder im lokalen _site-Ordner.
- Lösung: Lösche lokal den Ordner
.jekyll-cacheund_siteund baue neu. Leere den Browser-Cache für deine GitHub-Pages-URL.
5. Pfad-Probleme (Asset Pipeline)
Ein Klassiker: Auf GitHub Pages liegt deine Seite oft unter einer Unter-URL (z. B. nutzername.github.io/projektname/). Wenn dein CSS-Pfad für das Syntax-Highlighting absolut angegeben ist (/assets/css/syntax.css), findet GitHub die Datei nicht, weil sie unter /projektname/assets/css/syntax.css liegen müsste.
- Check: Öffne die Entwicklertools im Browser (F12) auf der GitHub-Pages-Seite und schaue in der Konsole nach "404 Not Found" Fehlern für CSS-Dateien.
Zusammenfassung: So gleichst du es an
- Gleiche Versionen: Nutze das
github-pagesGem lokal. - CSS kontrollieren: Stelle sicher, dass die CSS-Klassen von Rouge (z.B.
.highlight .k { color: #... }) in deiner CSS-Datei definiert sind und diese Datei auf GitHub geladen wird. - Baseurl: Achte darauf, dass Links zu CSS-Dateien in deinem Layout so aussehen:
{{ "/assets/css/syntax.css" | relative_url }}.
Tipp: Du kannst ein Rouge-Stylesheet selbst generieren, um volle Kontrolle zu haben:
rougify style monokai.sublime > assets/css/syntax.css
Und dieses dann explizit in deinem HTML-Header einbinden.