Похоже, что расширение microtype отключается, когда размер шрифта изменяется с размера шрифта по умолчанию. Вот два фрагмента кода, в первом расширение работает, во втором — нет (как будто microtype никогда не давал опции stretch и shrink).
Работает:
% main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\setmainfont[Ligatures=TeX,Renderer=Basic]{Warnock Pro}
\sloppy
\begin{document}
\color{textblack}
\fontsize{9pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
Команда:
>> lualatex main.tex
Не работает:
%main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\setmainfont[Ligatures=TeX,Renderer=Basic]{Warnock Pro}
\sloppy
\begin{document}
\color{textblack}
\fontsize{8.8pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
Команда:
>> lualatex main.tex
Выход: Пожалуйста, подскажите, можно ли это исправить и как, или проблема в моем коде.
Спасибо,
Мужчина
решение1
microtype устанавливает расширение шрифта только для ограниченного набора размеров шрифта. Если вы добавите свой размер в список, это сработает (переопределение basictext, вероятно, не лучший способ сделать это):
\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\DeclareMicrotypeSet*{basictext}
{ encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU},
family = {rm*,sf*},
series = {md*},
size = {normalsize,footnotesize,small,large,9.1} %added 9.1
}
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
\fontsize{9.1pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
Вы также можете снять ограничение, например, используя другой набор, а не набор по умолчанию:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=true,stretch=500,shrink=500]{microtype}
\UseMicrotypeSet[expansion]{alltext}
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
\fontsize{9.1pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
ИЛИ еще короче, передав expansion=alltext
как опцию пакета при загрузке microtype:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=alltext,stretch=500,shrink=500]{microtype}% expansion=all would also work as that set too does not have restrictions on size, and is the least restrictive of all predefined sets
\setmainfont[Ligatures=TeX]{Arial}
\begin{document}
\fontsize{9.1pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
решение2
Честно говоря, я не знаю, зачем люди microtype
вообще его используют. Конечно, у него есть несколько хороших интерфейсов, таких как textls
, но для расширения я могу добиться того же самого с помощью двух строк Lua и функции шрифта. У него также нет проблемы с размером шрифта.
%main.tex
\documentclass[9pt]{extarticle}
\usepackage[english]{babel}
\usepackage{color}
\usepackage{blindtext}
\usepackage{multicol}
\definecolor{textblack}{RGB}{26,25,25}
\usepackage{fontspec}
\usepackage[expansion=false]{microtype}
\directlua{
fonts.expansions.setups.default.stretch = 500
fonts.expansions.setups.default.shrink = 500
}
\adjustspacing=2
\setmainfont[Ligatures=TeX,Renderer=Basic,RawFeature={expansion=default}]{Roboto}
\sloppy
\begin{document}
\color{textblack}
\fontsize{8.8pt}{12pt}\selectfont
\begin{multicols}{3}
\blindtext[10]
\end{multicols}
\end{document}
Пояснение используемых команд:
\adjustspacing
: Из руководства luatex: "Если\adjustspacing
значение равно 2, оптимизация hz будет применена к глифам и кернам. Если значение равно 3, будут обработаны только глифы. Значение меньше 2 отключает эту функцию". Таким образом,\adjustspacing=2
включается расширение шрифта, эквивалентноеmicrotype
'sexpansion=true
(которое в любом случае используется по умолчанию).\directlua{...stretch = 500, ...}
: эквивалент lualatex дляmicrotype
опции пакетаstretch=500
.\usepackage[expansion=false]{microtype}
Передачаexpansion=false
гарантирует, что вы по-прежнему сможете использовать microtype для его других функций, в то время как расширение обрабатывается с помощью lua. Если вы не передадитеexpansion=false
, ваш запуск lualatex завершится с ошибкой: "error: (расширение шрифта): шрифт был расширен с другим шагом расширения", и pdf не будет создан.