LuaTeX 連字不正確

LuaTeX 連字不正確

我遇到 LuaLaTeX(來自 TL 2016: Version 0.95.0 (TeX Live 2016) (format=lualatex 2017.1.29))製作不適當的連字的問題。 MWE 如下:

\documentclass[a4paper, 12pt]{article}
\def\czechSingleQuotes #1{‚#1‘} % UTF-8 chars for single quotes
\begin{document}
\czechSingleQuotes{Ahoj!}

\czechSingleQuotes{Nazdar?}

‚Hi!‘
\end{document}

結果如下:

LuaLaTeX 中的錯誤

我希望 LuaTeX 的人在這裡閱讀它並為此做點什麼。但是,在問題解決之前,有人會建議如何解決這個問題嗎?通常的(在不同情況下)技巧沒有幫助,例如\def\czechSingleQuotes #1{‚{#1}{}\relax ‘}產生相同的結果。

提前謝謝。

稍後編輯: 這個問題已經在最新版(v2.8-fix-1)中得到修復,luaotfload但是這個修復似乎有點太過分了——現在,即使是創建恢復的西班牙語感嘆號或問號的標準連字也不再起作用,所以這個:

\documentclass[a4paper, 12pt]{article}
\begin{document}
Hi?` % standard back apostrophe, no UTF-8

Hi!` % ditto
\end{document}

在 LuaTeX(標準 q./ex. 標記後面跟著反引號)和 XeTeX 或 pdfTeX(西班牙語恢復 q./ex. 標記)中建立不同的輸出。

答案1

正如 David Carlisle 在評論中指出的那樣,即使存在「印刷」引號,而不是基本的反引號,也應用了用於倒置問號和感嘆號的「經典」TeX 連字。

\kern0pt在收盤報價之前插入指令是一種有效的補救措施。請注意,LuaTeX 與 pdfLaTEX 不同,它會丟棄{}元素。因此,您不能{}在標點符號和印刷引號之間創建一些看不見的分隔。

在此輸入影像描述

\documentclass{article}
\def\czechSingleQuotes#1{‚#1\kern0pt‘} % UTF8 chars for single quotes
\begin{document}
% "classic" TeX ligatures applied even though "typographic" quotes are in use
? ?` ?‘ --- ! !` !‘ 

\czechSingleQuotes{Ahoj!}

\czechSingleQuotes{Nazdar?}

\czechSingleQuotes{Hi!!}
\end{document}

答案2

TeX 連字被誤用,您可以使用它fontspec來關閉它們,儘管這意味著---不再與破折號連字。

\documentclass[a4paper, 12pt]{article}
\usepackage{fontspec}
\def\czechSingleQuotes #1{‚#1‘} % UTF-8 chars for single quotes
\defaultfontfeatures[\rmfamily]{}
\setmainfont{Latin Modern Roman}
\begin{document}
\czechSingleQuotes{Ahoj!}

\czechSingleQuotes{Nazdar?}

‚Hi!‘
\end{document}

在此輸入影像描述


正如這個純文字測試所示,這是一個 luaotfload 問題,我將向 github 報告。

在此輸入影像描述

\input{luaotfload.sty}

\font\fa=[lmroman12-regular.otf]
\font\fb=[lmroman12-regular.otf]:+tlig

\fa 

U+2018 no tlig !‘

U+0060 no tlig !`

\fb

U+2018 tlig !‘

U+0060  tlig !`

\bye

相關內容