目前我尝试让 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 手册:
- 跑步
initexmf --edit-config-file updmap
。 - 如果不存在,请检查
Map EBGaramond.map
并将其添加到文件末尾。确保每个条目都在自己的行上。 - 保存文件并关闭编辑器。
- 运行
initexmf --mkmaps
以重建字体映射文件。 - 另外跑步也没什么坏处
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
不要加载fontenc
或inputenc
包,但要确保您的 .tex 文件是用 编码的utf8
。(如果它是用 ASCII 编码的,那就没问题。)