我正在尝试使用该libertine
软件包,而不是使用我的机器(macOS)上安装的 Libertine 字体。似乎添加软件包后libertine
,它会覆盖我的 sans-serif 字体并使用 Libertine 而不是 Biolinum。
我有以下布局:
\documentclass{book}
\usepackage{fontspec}
% \usepackage{libertine}
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\sffamily\bfseries\LARGE}
{\filright \sffamily\mdseries
\fontsize{10em}{0em}\selectfont
\oldstylenums{\thechapter}}
{1em}
{\filright}
\begin{document}
\chapter{Chapter 1}
\end{document}
如果我取消注释\usepackage{libertine}
,则会呈现以下内容:
1
尽管\titleformat
块使用了,但大块却是用 Libertine 字体而不是 Biolinum 字体来呈现的\sffamily
。
有什么方法可以强制无衬线渲染吗?
答案1
问题是\oldstylenums
切换字体。只需使用 fontspec 语法。
\documentclass{book}
\usepackage{fontspec}
\usepackage{libertine}
%\setmainfont{Linux Libertine O}
%\setsansfont{Linux Biolinum O}
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\sffamily\bfseries\LARGE}
{\filright \sffamily\mdseries
\fontsize{10em}{0em}\selectfont
{\addfontfeature{Numbers=OldStyle}\thechapter}}
{1em}
{\filright}
\begin{document}
\chapter{Chapter 1}
\end{document}
答案2
道路fontspec
软件包libertine
重新定义\oldstylenums{}
以切换字体。您可以改回类似于 的定义,这会将 OpenType 字体功能添加到当前选定的字体中。请注意,这是和软件包fontspec
之间的不兼容性!libertine
fontspec
\documentclass{book}
\usepackage{fontspec}
\usepackage{libertine}
%% \oldstylenums and \liningums will change the style of the current font, as
%% in fontspec, not switch to the serif font, as in libertine.
\renewcommand\oldstylenums[1]{{\addfontfeatures{Numbers=OldStyle}{#1}}}
\renewcommand\liningnums[1]{{\addfontfeatures{Numbers=Lining}{#1}}}
\usepackage{titlesec}
\titleformat{\chapter}[display]
{\normalfont\sffamily\bfseries\LARGE}
{\filright \sffamily\mdseries
\fontsize{10em}{0em}\selectfont
\oldstylenums{\thechapter}}
{1em}
{\filright}
\begin{document}
\chapter{Chapter 1}
\oldstylenums{1234567890} vs. \liningnums{1234567890}.
\end{document}
fontspec
您也可以为命令赋予一个新的、明确的名称,或者在加载之后和加载之前保存定义libertine
。
道路libertine
该libertine
软件包提供了第二个命令,\oldstylenumsf{}
用于将字体切换为带有旧式数字的 Biolinum。您可以简单地\textsf{\oldstylenums{}}
用替换\oldstylenumsf{}
。