LuaLaTeX: Zeige die Trennstellen | TeXwelt

LuaLaTeX: Zeige die Trennstellen

Weil ich gerade selbst an Silbentrennung arbeite, gibt’s hier ein schickes LuaLaTeX-Beispiel. Es zeigt alle Trennstellen im Dokument an. Was passiert ist eigentlich recht einfach. Es wird nach dem Absatzumbruch die Nodeliste durchgegangen, und alle disc-Nodes werden um eine PDF-Anweisung ergänzt, die einen kleinen Strich zeichnet.

\documentclass[12pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{fontspec
}
\directlua{
show_hyph = function(head)
  while head do
    if head.id == 0 or head.id == 1 then % hlist, vlist
      show_hyph(head.list) % sollte head.head in LuaTeX > 0.65 sein
    elseif head.id == 7 then             % disc
      local n = node.new("whatsit","pdf_literal")
      n.mode = 0
      n.data = "q 0.3 w 0 2 m 0 7 l S Q"
      n.next = head.next
      n.prev = head
      head.next = n
      head = n
    end
  head = head.next
  end
  return true
end
luatexbase.add_to_callback("post_linebreak_filter",show_hyph,"show_hyph")
}

\begin{document}
\blindtext
\end{document
}

Und hier ein Beispiel, wie das aussehen könnte:

pgzeige-trennstellen

Inzwischen ist diese Funktionalität als eigenständiges Paket verfügbar. Siehe die Paketbeschreibung auf CTAN. Einfach benutzen mit \usepackage{showhyphens}.

11. Januar 2011 von Patrick Gundlach
Kategorien: LuaTeX | Schlagwörter: , , | 1 Kommentar

1 Kommentar

  1. Danke!
    Das hieraus entstandene Paket ist großartig!
    Passiert ja ab und zu, dass LaTeX in einem Wort zu wenige Trennstellen erkennt und es deshalb nicht trennt und die Zeilen dann komisch lange Leerzeichen bekommen etc.
    Mit \usepackage{showhyphens} sehe ich jetzt ziemlich schnell welche Wörter ich noch manuell in meine \hyphenation{Trenn-liste} aufnehmen sollte.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert