itemize 和 EBGaramond 兼容吗?

itemize 和 EBGaramond 兼容吗?

此 MWE 的工作原理如下:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{ebgaramond}

\makeatother

\usepackage{babel}
\begin{document}
Here is some plain text in Garamond
\end{document}

但是我将文本放入 itemize 中,如下所示:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{ebgaramond}

\makeatother

\usepackage{babel}
\begin{document}
\begin{itemize}
\item Here is some plain text in Garamond
\end{itemize}

\end{document}

我收到一个错误:

! LaTeX Error: Font family `TS1+EBGaramond-LF' unknown.

这是在 Fedora 上使用 pdflatex 和 texlive 2013。

使用 luatex 或 xetex 进行编译

知道发生什么事了吗?

答案1

这是您的示例的编辑版本,理论上应该适用于所有引擎:

\documentclass{article}
\usepackage{ifluatex,ifxetex}

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

\usepackage[english]{babel}

\usepackage{ebgaramond}

\begin{document}
\begin{itemize}
\item Here is some plain text in Garamond
\end{itemize}

\end{document}

然而,在分发的文件中有一个错误TS1EBGaramond-OsF.fd,最后几行LF应该OsF是:

%% Generated by autoinst on 2013/02/13
%%
\ProvidesFile{TS1EBGaramond-OsF.fd}
    [2013/02/13 (autoinst)  Font definitions for TS1/EBGaramond-OsF.]

\expandafter\ifx\csname EBGaramond@scale\endcsname\relax
    \let\EBGaramond@@scale\@empty
\else
    \edef\EBGaramond@@scale{s*[\csname EBGaramond@scale\endcsname]}%
\fi

\DeclareFontFamily{TS1}{EBGaramond-OsF}{}

\DeclareFontShape{TS1}{EBGaramond-OsF}{m}{n}{
      <-> \EBGaramond@@scale EBGaramond12-Regular-osf-ts1
}{}

\DeclareFontShape{TS1}{EBGaramond-OsF}{m}{it}{
      <-> \EBGaramond@@scale EBGaramond12-Italic-osf-ts1
}{}

\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 }{}

\endinput

但最后七项\DeclareFontShape声明在所有地方LF都用了 代替OsF。可能那部分已被类似人员复制TS1EBGaramond-LF.fd,而没有进行编辑。

因此,您会收到使用 进行编译时提到的错误消息pdflatex,因为字体描述文件引用了未知的字体系列。

有一些可能的解决方法。

  1. 将分发的TS1EBGaramond-OsF.fd文件复制到文档目录并进行编辑,使其如上所示。

  2. 直接编辑分发的文件(有风险)

  3. 添加必要的代码以确保pdflatex满意:

    \documentclass[english]{article}
    \usepackage{ifluatex,ifxetex}
    
    \ifluatex\else\ifxetex\else
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
    \fi\fi
    
    \usepackage{babel}
    
    \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
    
    
    \begin{document}
    \begin{itemize}
    \item Here is some plain text in Garamond
    \end{itemize}
    
    \end{document}
    

无论如何,您都应该向软件包维护者提及该问题。

答案2

\textbullet未定义。使用

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ebgaramond}
\renewcommand\labelitemi{$\bullet$}

\usepackage{babel}
\begin{document}
\begin{itemize}
\item Here is some plain text in Garamond
\end{itemize}

\end{document}

或使用

\usepackage[lf]{ebgaramond}

然后它定义了\textbullet

顺便说一句:使用luainputencwithutf8毫无意义。默认使用 utf。所有引擎的版本为:

\documentclass[english]{article}
\usepackage[lf]{ebgaramond}
\ifluatex\else\ifxetex\else\usepackage[utf8]{inputenc}\fi\fi
\usepackage{babel}

\begin{document}
\begin{itemize}
\item Here is some plain text in Garamond
\end{itemize}

\end{document}

这与运行pdflatexxelatex并且lualatex

相关内容