當字體大小從預設字體大小更改時,微型類型的擴展似乎被禁用。這裡有兩段程式碼,在第一個程式碼中擴充確實起作用,在第二個程式碼中則不起作用(就好像微型類型從未給出拉伸和收縮選項一樣)。
作品:
% 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 僅針對一組有限的字體大小設定字體擴充。如果將大小添加到清單中,它就可以工作(重新定義基本文字可能不是最好的方法):
\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
在載入微類型時作為套件選項傳遞:
\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
您仍然可以使用微類型來實現其其他功能,而擴充功能則使用 lua 進行處理。如果你不通過expansion=false
,你的 lualatex 運行將失敗並出現錯誤:“錯誤:(字體擴展):字體已使用不同的擴展步驟擴展”,並且不會產生 pdf。