
我遇到 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}
結果如下:
我希望 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