我使用mathpazo
字体包来编写文档。我对一些文本使用了小写字母。
当我添加sourcesanspro
字体包时,小写字母不再起作用正常衬线字型。
这是我的 MWE:
\documentclass[11pt]{book}
\usepackage{lipsum} % nopar
\usepackage[a4paper,showframe]{geometry}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathpazo}
% COMMENT THIS LINE, COMPILE AGAIN AND SEE THE CHANGES :
\usepackage[light]{sourcesanspro}
\usepackage[spanish,es-lcroman]{babel}
\usepackage[pdftex,hyperfootnotes=false,
pdfpagelabels]{hyperref}
\pdfcompresslevel=9
\pdfadjustspacing=1
\begin{document}
\lipsum[1-2]
\textsc{\lipsum[3-4]}
\end{document}
当我评论sourcesanspro
并编译文档时,会显示小写字母。当包含时sourcesanspro
,小写字母会消失。为什么?你们中有人已经处理过类似的事情吗?
我的目的是将文档中的大部分文本都使用mathpazo
(serif),但用 替换默认的无衬线字体sourcesanspro
。我不知道我是否做错了什么,或者是否有更好的方法来做到这一点。
编辑:我添加了更多信息。
当不使用时进行编译,sourcesanspro
我收到 0 个错误和 0 个警告消息。
使用 进行编译时sourcesanspro
,我收到 4 条警告消息,如下所示:
LaTeX Font Warning: Font shape `T1/ppl/l/n' undefined (Font) using `T1/ppl/m/n' instead on input line 19. LaTeX Font Warning: Font shape `T1/ppl/l/sc' undefined (Font) using `T1/ppl/l/n' instead on input line 22. LaTeX Font Warning: Font shape `T1/ppl/l/sl' undefined (Font) using `T1/ppl/l/n' instead on input line 24. LaTeX Font Warning: Some font shapes were not available, defaults substituted.
因此,我认为问题在于light
我调用时使用的选项sourcesanspro
也会以某种方式影响衬线字体。
实际上,如果light
删除该选项,一切都会顺利,当然,除了默认的无衬线字体不会是 Source Sans Pro Light。
如果没有发现更好的解决方案,可能的解决方案:
对我有用的一个解决方法是:
light
包含时删除该选项sourcesanspro
。添加此光需要该(无衬线)字体的版本:
\usefont{T1}{SourceSansPro-LF}{l}{n}
SourceSansPro-LF
我通过阅读了解(或发现)了和类似的事情。我认为作者应该提供sourcesanspro-type1.sty
更多的文档。sourcesanspro
我没有回答这个问题(我的意思是,未答复) 因为我想知道是否有一种方法可以避免\usefont{T1}{SourceSansPro-LF}{l}{n}
每次想要使用 提供的浅色无衬线字体时都需要打字sourcesanspro
。
答案1
问题在于,该选项全局改变了 的含义,而不是默认的light
含义,因此,当 LaTeX 想要用罗马(Palatino)字体排版时,它必须执行一些替换。\mddefault
l
m
替代机制首先尝试修改形状,因此规范
ppl/l/sc
(Palatino Light Small Caps)变成了请求
ppl/l/n
(Palatino Light Roman),它也不存在,因此执行默认替换(替换l
为m
),结果为 Palatino Roman。您可以通过定义新的替换规则来解决问题:
\usepackage[sc]{mathpazo}
\normalfont % necessary to make LaTeX aware of our choice of the base font
\DeclareFontShape{T1}{pplx}{l}{n} {<-> ssub * pplx/m/n}{}
\DeclareFontShape{T1}{pplx}{l}{sc}{<-> ssub * pplx/m/sc}{}
\DeclareFontShape{T1}{pplx}{l}{it}{<-> ssub * pplx/m/it}{}
\DeclareFontShape{T1}{pplx}{l}{sl}{<-> ssub * pplx/m/it}{}
\usepackage[light]{sourcesanspro}
理论上,这一声明可以推迟至\AtBeginDocument
,但一揽子计划sourcesanspro
也fontaxes
让事情变得复杂。
请注意,我使用了sc
选项,mathpazo
以便真实的使用小写字体代替假字体;这解释了使用pplx
而不是ppl
作为姓氏的用法。