我正在尝试制作 tufte-book 以使用 EB Garamond。确实如此,但遗憾的是,我有不少满满的盒子,因为许多包装/样式都使用粗体字体。
投诉的 MWE 如下:
\documentclass[a4paper,nobib,twoside,nofonts,nols]{tufte-book}
\usepackage{ebgaramond}
\ifxetex
\usepackage{fontspec}
\setmainfont{EB Garamond}
% some more renewals, as suggested in http://tex.stackexchange.com/a/202189/9293
% \renewcommand{\bfseries}[1]{\swshape}
\fi
\begin{document}
\part{Whine and cheese}
\end{document}
上述 mwe 编译时出现警告:
LaTeX Font Warning: Font shape `EU1/EBGaramond(0)/bx/n' undefined
(Font) using `EU1/EBGaramond(0)/m/n' instead on input line 32.
[1] [2] (index.aux)stdin -> index.pdf
[1][2]
4341 bytes written
LaTeX Font Warning: Some font shapes were not available, defaults substituted.
如果我使用完整的文档,情况会变得更糟,因为相当多的换行符出现在错误的位置(我怀疑字体替换是罪魁祸首)。
我已经尝试更新\bfseries
命令,因为我怀疑它负责在中使用book.sty
,但如果我这样做,部分的文本会发生变化(前几个字符被省略,并且“部分”也被删除),可能是因为重新定义\bfseries
比设置字体粗细更多:/
因此我问你:a) 如何仅为 重新定义实际字体参数化\part
,以及 b) 如何为 ebgaramond 的所有用法重新定义所有粗体?(因为 EB Garamond 不支持bx
)
或者一般来说:如何解决这样的问题?
答案1
该ebgaramond
包包含代码
\setmainfont
[ Numbers = {\ebgaramond@figurealign,\ebgaramond@figurestyle},
UprightFont = *-Regular ,
ItalicFont = *-Italic ,
BoldFont = *-Regular ,
BoldItalicFont = *-Italic ,
]
{EBGaramond12}
当排版引擎为 XeLaTeX 或 LuaLaTeX 时执行。该Numbers
选项的两个宏使用包选项设置(或应用默认值)。
如果仔细观察,该BoldFont
选项声明的字体与和UprightFont
相同。原因很简单:EB Garamond 没有粗体字体,因此软件包指示为其使用中等粗细字体。BoldItalicFont
ItalicFont
fontspec
类似地,.fd
字体文件pdflatex
有
\DeclareFontShape{T1}{EBGaramond-LF}{b}{n}{ <-> ssub * EBGaramond-LF/m/n }{}
和其他类似的(s我借给)子其目的是避免出现类似您所报告的警告信息的机构。
为什么你还是得到了它?因为声明
\setmainfont{EB Garamond}
加载包后,您将获得该包,它将覆盖前一个包。由于字体一开始没有粗体,因此在fontspec
构建字体系列数据时,它找不到它,因此它不会定义它,并且当请求粗体时,LaTeX 会发出(非静默)替换的标准警告。
删除申明。
也要避免xlxtra
:目前它只加载一些包:
ifxetex
fontspec
realscripts
metalogo
只需加载fontspec
即可。该realscripts
包可能适用于您声明的字体,也可能不适用于:最好试验一下它是否有效。如果您不需要排版 XeLaTeX 或其他类似徽标,则不需要metalogo
。如果需要,请明确加载它。
答案2
以下代码示例(对我而言)适用于TeXLive
,包含 、 和 的文档类article
,tufte-book
并由memoir
、pdflatex
和tex + dvi
处理xetex
。
输出应如下所示:
从这样的源代码:
\documentclass{tufte-book}
% \documentclass{article} % also works
% \documentclass{memoir} % also works
\RequirePackage{lmodern} % supports \ttfamily\bfseries
\RequirePackage{garamondx} % supports \rmfamily\bfseries
\edef\EBfamilydefaultbf{\familydefault}
\edef\EBrmdefaultbf{\rmdefault}
\RequirePackage[oldstyle,proportional,scaled=1.05]{ebgaramond}
\edef\EBfamilydefault{\familydefault}
\edef\EBrmdefault{\rmdefault}
\RequirePackage{ifthen}
\makeatletter%
\newcommand{\iffont}[3]{\ifthenelse{\equal{\f@family}{#1}}{#2}{#3}}
\newcommand{\ifseries}[3]{\ifthenelse{\equal{\f@series}{#1}}{#2}{#3}}
\makeatletter
\let\oldbfseries\bfseries
\renewcommand{\bfseries}{\iffont{\EBrmdefault}%
{\fontfamily{\EBrmdefaultbf}\selectfont\oldbfseries}%
{\oldbfseries}%
}
%
\let\oldmdseries\mdseries
\renewcommand{\mdseries}{\iffont{\EBrmdefaultbf}%
{\fontfamily{\EBrmdefault}\selectfont\oldmdseries}%
{\oldmdseries}%
}
%
\let\oldrmfamily\rmfamily
\renewcommand{\rmfamily}{\ifseries{b}%
{\fontfamily{\EBrmdefaultbf}\selectfont}%
{\oldrmfamily}%
}
\begin{document}
% ----------------------------------------------------------------
% the following is necessary solely to undo some 'garamondx' patches
\edef\rmdefault{\EBrmdefault}\normalsize\mdseries\upshape\rmfamily%
% ----------------------------------------------------------------
\centering
\DeclareRobustCommand{\lit}[1]{\ttfamily\textbackslash{#1}}
\begin{tabular}{rl}
\lit{rmfamily}\lit{mdseries}\lit{upshape} & \rmfamily\mdseries\upshape Quantum\\
\lit{rmfamily}\lit{mdseries}\lit{itshape} & \rmfamily\mdseries\itshape Quantum\\
\lit{rmfamily}\lit{mdseries}\lit{scshape} & \rmfamily\mdseries\scshape Quantum\\[1ex]
\lit{rmfamily}\lit{bfseries}\lit{upshape} & \rmfamily\bfseries\upshape Quantum\\
\lit{rmfamily}\lit{bfseries}\lit{itshape} & \rmfamily\bfseries\itshape Quantum\\
\lit{rmfamily}\lit{bfseries}\lit{scshape} & \rmfamily\bfseries\scshape Quantum\\[1ex]
\lit{ttfamily}\lit{mdseries}\lit{upshape} & \ttfamily\mdseries\upshape Quantum\\
\lit{ttfamily}\lit{mdseries}\lit{itshape} & \ttfamily\mdseries\itshape Quantum\\
\lit{ttfamily}\lit{mdseries}\lit{scshape} & \ttfamily\mdseries\scshape Quantum\\[1ex]
\lit{ttfamily}\lit{bfseries}\lit{upshape} & \ttfamily\bfseries\upshape Quantum\\
\lit{ttfamily}\lit{bfseries}\lit{itshape} & \ttfamily\bfseries\itshape Quantum\\[1ex]
\lit{sffamily}\lit{mdseries}\lit{upshape} & \sffamily\mdseries\upshape Quantum\\
\lit{sffamily}\lit{mdseries}\lit{itshape} & \sffamily\mdseries\itshape Quantum\\[1ex]
\lit{sffamily}\lit{bfseries}\lit{upshape} & \sffamily\bfseries\upshape Quantum\\
\lit{sffamily}\lit{bfseries}\lit{itshape} & \sffamily\bfseries\itshape Quantum\\
\end{tabular}
\end{document}
警告:我并不是 LaTeX 专家。