LuaTeX und Geviertstriche

LuaTeX und Geviertstriche

LuaLaTeX fügt keine Geviertstriche ein, es sei denn, um den dreifachen Strich herum ist Platz. Es funktioniert einwandfrei, wenn ein Unicode-Geviertstrich verwendet wird oder das \textemdashMakro explizit verwendet wird.

Hier ist ein MWE:

\documentclass{article}

\begin{document}

\begin{enumerate}
  \item en--dash
  \item em---dash
  \item em --- dash space
\end{enumerate}
\begin{enumerate}
  \item en–dash unicode
  \item em—dash unicode
  \item em — dash space unicode
\end{enumerate}
\begin{enumerate}
  \item en\textendash{}dash macro
  \item em\textemdash{}dash macro
  \item em \textemdash{} dash space macro
\end{enumerate}

\end{document}

Das Ergebnis:

fehlende Geviertstriche

Kompiliert mit LuaTeX, Version 1.07.0 (TeX Live 2018)

Die Frage ist:

Ich möchte wissen, warum Geviertstrich-Ligaturen ohne umgebende Leerzeichen in der PDF-Ausgabe nicht als Geviertstriche wiedergegeben werden. Für mich sieht das nach einem Fehler aus. Wie kann ich das beheben?

Antwort1

Sie können \automatichyphenmode=1Ihrer Präambel hinzufügen:

\documentclass{article}
\automatichyphenmode=1
\begin{document}

\begin{enumerate}
  \item en--dash
  \item em---dash
  \item em --- dash space
\end{enumerate}
\begin{enumerate}
  \item en–dash unicode
  \item em—dash unicode
  \item em — dash space unicode
\end{enumerate}
\begin{enumerate}
  \item en\textendash{}dash macro
  \item em\textemdash{}dash macro
  \item em \textemdash{} dash space macro
\end{enumerate}

\end{document}

Ausgabe des Codes

Antwort2

Aktualisierung 3/2019

Der Fehler wird mit dem nächsten Luaotfload-Update behoben

==============================================================

Um Alans Antwort etwas näher auszuführen:

Es handelt sich meiner Meinung nach eindeutig um einen Fehler im aus dem Kontext importierten Fontloader (Sie sehen dasselbe im Kontext, wenn Sie setzen \automatichyphenmode=0). Dies passiert nur, wenn die Schriftarten mit dem gerendert werden mode=node:

\documentclass{article}

\begin{document}
\font\test={file:lmroman10-regular.otf:mode=node;+tlig}
\test

A---B

\font\test={file:lmroman10-regular.otf:mode=base;+tlig}
\test

A---B
\end{document}

Bildbeschreibung hier eingeben

Die Ursache des Problems liegt meiner Meinung nach darin \automatichyphenmode=0, dass luatex bei zunächst den letzten Bindestrich in einen beliebigen umwandeln muss, um einen Zeilenumbruch zu ermöglichen:

A---B  ---> A--\discretionary{-}{}{-}B

und nachdem die Zeile gesetzt wurde, muss diese wieder zurück in umgewandelt werden ---, und dieser Schritt scheint zu scheitern.

Das Problem wurde gemeldet, aber es ist unklar, ob es behoben wird.

\automatichyphenmode=1vermeidet das Problem, indem der Bindestrich in einigen Fällen nicht in einen beliebigen Bindestrich umgewandelt wird. Sie sollten sich also darüber im Klaren sein, dass dadurch in einigen Fällen der Zeilenumbruch unterdrückt wird:

\documentclass[parskip=half-]{scrartcl}
\begin{document}


\parbox[t]{1pt}{%
\textbf{0}

\automatichyphenmode=0
A-B

A--B

A---B

-begin

A!-B}
\hspace{2cm}
\parbox[t]{1pt}{\automatichyphenmode=1
\textbf{1}

A-B

A--B

A---B

-begin

A!-B}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen