为 pdfLaTeX 安装 EB Garamond(再来一次)

为 pdfLaTeX 安装 EB Garamond(再来一次)

目前我尝试让 EB Garamond 字体在我的 Windows 机器上运行(在 MikTeX 2.9 下),但失败了。通过搜索 TeX.SX,我发现了以下两个问题:

第一个解决方案太过通用,因为它仅指出了 CTAN 上包的存在ebgaramond,而第二个解决方案则包括手动重新安装包——我尝试过但没有成功。

作为自述需求ebgaramond我启用了 EB Garamond 的字体映射(通过添加

Map EBGaramond.map

,然后updmap.cfg刷新FNDB并抨击

initexmf -u
updmap

到 Windows 命令行。)这已经错了吗?也许我的测试文件中缺少了一些基本的东西:

 \documentclass[11pt]{article}
 \usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage{ebgaramond}
 %\usepackage[DIV10]{typearea}
 %\usepackage{microtype}
 \usepackage{lipsum}

 \title{A \LaTeX\ Article}
 \author{Ruben Giannotti}
 \date{\today}

 \begin{document}
 \maketitle
 {{\large 1}\hspace{.5em}\scshape \uppercase{Introduction}\par\vspace{1em}}%faking a section title
 \lipsum
 \end{document}

使用 LaTeX 进行编译时,结果看起来非常糟糕.dvi。(所以我想映射应该没问题。)但是,使用 pdfLaTeX 进行编译时,甚至没有生成输出文件。日志文件显示:

!pdfTeX 错误:pdflatex (文件 EBGaramond12-Regular-osf-t1--base):未找到 548 处的字体 EBGaramo nd12-Regular-osf-t1--base ==> 发生致命错误,未生成输出 PDF 文件!

启用后microtype会发生一些变化:

! pdfTeX 错误(字体扩展):只有可缩放字体才能自动扩展。\endgroup \set@typeset@protect l.17 \end {document} ... ! ==> 发生致命错误,未生成输出 PDF 文件!

编辑

与此同时,我尝试了几种字体映射配置。我首先做的是updmap.cfg在 MikTeX 的根目录中进行修改,但这并不理想。因此,我将其恢复到原始状态。之后,我开始使用配置initexmf --edit-config-file updmap(这会在 MikTeX 的漫游目录中打开相应的配置文件 - 至少在我的计算机上)。我终于让 EB Garamond 正常工作了- 这是一个不可接受的缺点 - 我不得不取消之前添加的另一个映射(MinionPro)。

简而言之:凭借我的实际知识和设置,我只能使用其中一种,而从我到目前为止所做的事情中推断出,我只是使用了错误的语法来映射字体(注意复数形式)正确。我的updmap.cfg看起来是这样的:

Map EBGaramond.map Map MinionPro.map Map MyriadPro.map

顺便说一句,我这样做是因为 MikTeX 手册上说

“在文件末尾插入以下行:Map xyz.map”

我是否必须遵守一些语法规则?这难道是错的吗?或者这可能是我的整个发行版都坏了的迹象(请参阅@DG 对其答案的评论)?

答案1

根据这篇文章itemize 和 EBGaramond 兼容吗?EBGaramond 中有一个错误。

使用 @egreg 在他的回答中发布的代码,您可以像这样修复您的示例:

\documentclass[11pt]{article}
\usepackage{ifluatex,ifxetex}

\ifluatex\else\ifxetex\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
\fi\fi

\usepackage{ebgaramond}
\ifluatex\else\ifxetex\else
  \normalfont
  \makeatletter
  \input{TS1EBGaramond-LF.fd}
  \input{TS1EBGaramond-OsF.fd}
  \makeatother
  \DeclareFontShape{TS1}{EBGaramond-OsF}{m}{sl}{ <-> ssub * EBGaramond-OsF/m/it }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{b}{n}{ <-> ssub * EBGaramond-OsF/m/n }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{b}{it}{ <-> ssub * EBGaramond-OsF/m/it }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{b}{sl}{ <-> ssub * EBGaramond-OsF/m/it }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{bx}{n}{ <-> ssub * EBGaramond-OsF/m/n }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{bx}{it}{ <-> ssub * EBGaramond-OsF/m/it }{}
  \DeclareFontShape{TS1}{EBGaramond-OsF}{bx}{sl}{ <-> ssub * EBGaramond-OsF/m/it }{}
\fi\fi

\usepackage[DIV10]{typearea}
\usepackage{microtype}
\usepackage{lipsum}

\title{A \LaTeX\ Article}
\author{Ruben Giannotti}
\date{\today}

\begin{document}
 \maketitle
 {{\large 1}\hspace{.5em}\scshape \uppercase{Introduction}\par\vspace{1em}}%faking a section title
 \lipsum
\end{document}

包裹ebgaramond 位于 miktex 的存储库中,因此建议使用包管理器,而不是手动安装。

更新

如果这没有帮助,请按照miktex 手册

  1. 跑步initexmf --edit-config-file updmap
  2. 如果不存在,请检查Map EBGaramond.map并将其添加到文件末尾。确保每个条目都在自己的行上。
  3. 保存文件并关闭编辑器。
  4. 运行initexmf --mkmaps以重建字体映射文件。
  5. 另外跑步也没什么坏处initexmf --update-fndb

答案2

尽管 OP 表示不愿意在提交截止日期前从 pdfLaTeX 切换到 LuaLaTeX,但我还是会提供以下方法,因为它实际上并不难实现:

% !TEX TS-program = lualatex
\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{EB Garamond}
% Remainder of document same as before, except: Don't load the
% fontenc, inputenc, or ebgaramond packages

不要加载fontencinputenc包,但要确保您的 .tex 文件是用 编码的utf8。(如果它是用 ASCII 编码的,那就没问题。)

相关内容