
LuaLaTeX não está inserindo travessões a menos que haja espaço ao redor do travessão triplo. Funciona bem ao usar um travessão unicode ou usar explicitamente a \textemdash
macro.
Aqui está um 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}
O que produz:
Compilado usando LuaTeX, versão 1.07.0 (TeX Live 2018)
A questão é:
Gostaria de saber por que as ligaduras de travessão sem espaços circundantes não são renderizadas como travessões na saída do PDF. Parece um bug para mim. como posso consertar isso?
Responder1
Você pode adicionar \automatichyphenmode=1
ao seu preâmbulo:
\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}
Responder2
Atualização 3/2019
O bug será resolvido na próxima atualização do luaotfload
================================================= ============
Para expandir um pouco a resposta de Alan:
É claramente um bug no fontloader importado do contexto (você verá o mesmo no contexto se definir \automatichyphenmode=0
). Isso só acontece se as fontes forem renderizadas com 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}
A origem do problema é que, com \automatichyphenmode=0
, luatex deve primeiro converter o último hífen em um discricionário para permitir uma quebra de linha:
A---B ---> A--\discretionary{-}{}{-}B
e depois que a linha foi definida, ela deve ser convertida novamente para ---
, e esta etapa parece falhar.
O problema foi relatado, mas não está claro se será corrigido.
\automatichyphenmode=1
evita o problema ao não converter o hífen em discricionário em vários casos. Portanto, você deve estar ciente do fato de que isso suprime a quebra de linha em vários casos:
\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}