
У меня проблема с 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 ‘}
дают тот же результат.
Спасибо заранее.
Позже ПРАВКА:
Это было исправлено в последней версии luaotfload
(v2.8-fix-1), однако исправление, похоже, зашло слишком далеко — теперь даже стандартные лигатуры для создания обратных испанских восклицательных или вопросительных знаков больше не работают, так что это:
\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
Как указал Дэвид Карлайл в своем комментарии, «классические» лигатуры 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
чтобы отключить их, хотя, например, это означает, что ---
больше не будет лигатуры к mdash.
\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