\usepackage[english,ngerman,hebrew]{babel}: 输入行上没有文件 HE8pplx.fd。(使用自定义 .cls)

\usepackage[english,ngerman,hebrew]{babel}: 输入行上没有文件 HE8pplx.fd。(使用自定义 .cls)

我试图在我的文档中使用希伯来语,但似乎存在冲突(可能与某些软件包有关),导致我无法这样做。我正在编写的 .tex 使用自定义 .cls,如下所示。

\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesClass{thesis}[2015/02/10, Template]

%%%% thesis options %%%%%%%

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{thesis}}

\newcommand{\@sizeoption@err}{\ClassError{thesis}
  {Cannot use size option \CurrentOption} 
  {The thesis class requires (and automatically loads) 12pt text}}

\DeclareOption{12pt}{\@sizeoption@err}
\DeclareOption{10pt}{\@sizeoption@err}

\newcommand{\@psizeoption@err}{\ClassError{thesis}
  {Cannot use paper size option \CurrentOption} 
  {The thesis class requires (and automatically loads) A4 paper}}

\DeclareOption{a5paper}{\@psizeoption@err}
\DeclareOption{b5paper}{\@psizeoption@err}
\DeclareOption{letterpaper}{\@psizeoption@err}
\DeclareOption{legalpaper}{\@psizeoption@err}
\DeclareOption{executivepaper}{\@psizeoption@err}
\DeclareOption{landscape}{\@psizeoption@err}

\ProcessOptions\relax
\LoadClass[12pt,a4paper,oneside,hebrew]{article}


%%%%%%%%%%% encoding, page layout %%%%%%%%%%%%%%%%

\RequirePackage[utf8]{inputenc}
\RequirePackage{culmus} % Hebrew fonts

\RequirePackage[a4paper,lmargin=3.5cm,rmargin=3.0cm,
                tmargin=3.25cm,bmargin=3.25cm]{geometry} %showframe

\RequirePackage{fancyhdr}
     \pagestyle{fancy}
     \renewcommand{\sectionmark}[1]{% 
     \markboth{\chaptername~\thesection:~#1}{}}
     \fancyhead[RO,L]{\thepage}
     \fancyhead[CO,C]{}
     \fancyhead[LO,R]{\textit{\nouppercase{\leftmark}}}
     \fancyfoot[RO,R]{}
     \fancyfoot[LO,L]{}
     \fancyfoot[CO,C]{}
     \renewcommand{\headrulewidth}{0pt}
     % \fancypagestyle{plain}{% 
    %\fancyhf{}} % clear all header and footer fields 

% Please do not change line spreading:
\linespread{1.4}

% Literature to ToC
\RequirePackage[nottoc]{tocbibind}

% Fixing an error with Headheight
\setlength{\headheight}{15pt}

%%%%%%%% headings %%%%%%%%%%%%%%%

\usepackage{titlesec}
\titleclass{\section}{top}
\assignpagestyle{\section}{plain}
    \titleformat{\section}
     {\bfseries\large}
     {\thesection.}
    {1em}
    {\bfseries}
    \titlespacing*{\section}{0pt}{2\baselineskip}{1\baselineskip}
    %
     \titleformat{\subsection}
     {\bfseries}
     {\thesubsection}
    {.7em}
    {\bfseries}
    \titlespacing*{\subsection}{0pt}{1\baselineskip}{.5\baselineskip}
    %
     \titleformat{\subsubsection}
     {\bfseries}
     {\thesubsubsection}
    {.7em}
    {\bfseries}
    \titlespacing*{\subsubsection}{0pt}{.5\baselineskip}{2pt}
    %
    \titleformat{\paragraph}[runin]
    {\normalfont\itshape}
    {}
    {7.5mm}
    {}
    \titlespacing*{\paragraph}{0pt}{0pt}{7.5mm}


%%%%%%%% footnotes (to match doc-style footnotes) %%%%%%%%

\renewcommand\@makefntext[1]{%
    \noindent
    {\@makefnmark}~#1} 

%%%%%%%% Stop first page vom breaking for introductory quote %%%%%%%%
%%%%%%%% Use begin{absolutelynopagebreak} and end{...}       %%%%%%%%

\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
    \vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
    \prevdepth=\tpd}

%%%%%%%% font issues: text & math %%%%%%%%

\RequirePackage[english,ngerman,hebrew]{babel}

\RequirePackage[T1]{fontenc}
\RequirePackage{textcomp}
\usepackage[scaled=0.86]{berasans}
\usepackage[scaled=0.86]{beramono}
\RequirePackage[sc]{mathpazo}
\RequirePackage{amssymb}
\RequirePackage{amsmath}
\usepackage{amstext}
\usepackage{tipa}
\renewcommand\textipa[1]{% CM Typewriter IPA
    {\fontfamily{cmtt}\fontsize{12}{12}\fontencoding{T3}\selectfont #1}}


%%%%%%%% required packages %%%%%%%%%

\RequirePackage{xcolor}
\RequirePackage{graphicx}
\RequirePackage{enumitem}
    \setlist{itemsep=0pt,parsep=0pt,topsep=6pt}
\RequirePackage[longnamesfirst]{natbib}
    \bibpunct[:~]{(}{)}{;}{a}{}{,}
    \setlength{\bibsep}{0pt}
    \setlength{\bibhang}{1cm}
    \renewcommand*{\bibfont}{\interlinepenalty 10000\relax} % Clean Directory

%%%%%%%%% linguistics %%%%%%%%%%%%%%%%%

\IfFileExists{stmaryrd.sty}%
   {\RequirePackage{stmaryrd}}%
   {\newcommand{\llbracket}{\ensuremath{\left [\!\left [}}%
     \newcommand{\rrbracket}{\ensuremath{\right ]\!\right ]}}}
\IfFileExists{cgloss4e.sty}%
    {\RequirePackage{cgloss4e} \nosinglegloss}
    {\newcommand{\gll}{}\newcommand{\glll}{}\newcommand{\trans}{}}
\IfFileExists{linguex.sty}%
    {\RequirePackage{linguex}
    \setlength{\Exindent}{0pt}
    \setlength{\Exlabelwidth}{0pt}
    \setlength{\Exlabelsep}{12mm}
    \setlength{\SubExleftmargin}{9mm}
    \def\refdash{}
    \def\firstrefdash{}
    \setlength{\Extopsep}{6pt}
    \let\eachwordone=\it
    \let\eachwordtwo=\rm
    \let\eachwordthree=\it}
    {\newcommand{\ex.}{}\newcommand{\exg.}{}%
     \newcommand{\a.}{}\newcommand{\b.}{}\newcommand{\c.}{}}
\IfFileExists{cgloss.sty}%
    {\RequirePackage{cgloss}}{}
\IfFileExists{qtree.sty}%
    {\RequirePackage[nocenter]{qtree}%
    \linethickness{.7pt}}{}

这篇文章很长,不过作为借口,大部分内容不是我写的,而是语言学系写的(再次......)。因此,我尝试了以下方法,顺序如下:

  • 我通过以下方式安装了 culmus 包http://www.ma.huji.ac.il/~sameti/tex/culmusmiktex.html
  • 添加了 \RequirePackage{culmus} % 希伯来字体
  • 将“hebrew”添加到 \RequirePackage[english,ngerman,hebrew]{babel}
  • 将“希伯来语”添加到 \LoadClass[12pt,a4paper,oneside,hebrew]{article}

据我所知,这应该是我使用希伯来字符所要做的全部工作,测试字符串为“אַ נאַר קען אַמאָל זאָגן אַ גלײַך װאָרט”。不幸的是,我收到的只有这些警告:

  1. 格式中没有预加载(babel)语言‘希伯来语’的连字符模式。

应该按照以下建议解决这个问题 -Babel 警告希伯来语缺乏连字符模式– 但似乎不起作用。这可能与其他警告(以及整个问题)有关。

  1. 输入行 8 上没有文件 HE8pplx.fd。
  2. 字体形状HE8/pplx/m/n' undefined(Font) using改为 HE8/cmr/m/n'
  3. 字体形状HE8/pplx/bx/n' undefined(Font) using改为 HE8/pplx/m/n'
  4. 字体形状HE8/pplx/m/it' undefined(Font) using改为 HE8/pplx/m/n'
  5. pdflatex.exe:\pdfrestore:缺少\pdfsave

一旦我摆脱 \RequirePackage[english,ngerman,hebrew]{babel} 和 \LoadClass[12pt,a4paper,oneside,hebrew]{article} 中的希伯来语文本和“希伯来语”,一切都会再次正常工作。

因此,这里有一个 MWE,只要将 .cls 中的相应行注释掉并且将 .tex 中的希伯来语文本注释掉,它就会起作用。

\documentclass{thesis}

% \DeclareFontEncoding{HE8}{}{} % Tried this and the following two, did not work.
% \DeclareFontFamily{HE8}{cmr}{} 
% \DeclareFontShape{HE8}{cmr}{m}{n} {<-> frank}{}
% \makeatletter\chardef\l@hebrew=255 \makeatother % Hack for Hebrew. Not working!

\begin{document}

\thispagestyle{plain}
\tableofcontents
\clearemptydoublepage

\begin{absolutelynopagebreak}
\begin{flushright}
    % אַ נאַר קען אַמאָל זאָגן אַ גלײַך װאָרט \\
    A nar ken a mol zogen a gleich vort. \\ \footnotesize \textit{– Yiddish proverb}
\end{flushright}

\section{Abstract}
\end{absolutelynopagebreak}

\noindent Nothing here.

\end{document}

我发现,问题似乎“仅仅”出在 babel 上: - 将“hebrew”添加到 \LoadClass 似乎不会干扰任何事情。 - 将“culmus”添加为必需包似乎不会干扰任何事情。 - 添加 \selectlanguage{hebrew}(显然)并不能解决问题。

上述警告(阻止创建 .pdf)仅在将“hebrew”添加到 babel 后才会发生文档中包含希伯来语字符。在 babel 中添加“希伯来语”而不添加希伯来语字符不会产生任何警告/错误。当然,在文本中使用希伯来语字符而不在 babel 中添加“希伯来语”会产生很多错误(!)。

相比之下,软件包提供的示例运行良好。该示例如下所示:

\documentclass[english, hebrew]{article}
\usepackage[cp1255]{inputenc}
\usepackage[english,hebrew]{babel}

% The culmus package sets the default Hebrew font (frankruehl or david)
% and the scaling (1.2 by default). This can be configured using the 
% package options.
%\usepackage{culmus}
%\usepackage[use-david]{culmus}
%\usepackage[use-david,legacy-size]{culmus}
%\usepackage[legacy-size]{culmus}

%\def\culmuselliniascale{1.1} % set scaling for a specific font
% or set scaling for all fonts:
%\makeatletter
%\def\culmus@scale{1.1}
%\makeatother

\begin{document}
\selectlanguage{hebrew}
גופן ברירת מחדל
אבגדהוזחטיךכלםמןנסעףפץצקרשת \textbf{בולט} \emph{מודגש}

\fontfamily{aharoni}\selectfont
אהרוני
אבגדהוזחטיךכלםמןנסעףפץצקרשת \textbf{בולט} \emph{מודגש}

\fontfamily{miriam}\selectfont
מרים
אבגדהוזחטיךכלםמןנסעףפץצקרשת \textbf{בולט} \emph{מודגש}

\fontfamily{david}\selectfont
דוד
אבגדהוזחטיךכלםמןנסעףפץצקרשת \textbf{בולט} \emph{מודגש}

\fontfamily{frank}\selectfont
פרנק-ריהל
אבגדהוזחטיךכלםמןנסעףפץצקרשת \textbf{בולט} \emph{מודגש}

(...)
\end{document}

我猜想可能是在安装 Culmus 时出了问题,但事实似乎并非如此。这很奇怪,因为毕竟其中一个警告是

输入行上没有文件 HE8pplx.fd。(在我的情况下是 8)

因此,我已经尝试重新安装 Culmus,但问题仍然存在。这很不幸,因为我需要软件包提供的“frank”字体系列。

Culmus 提供的示例与我自己的 .tex 之间的一个明显区别在于编码。据我所知,使用希伯来语时编码不应该有太大问题。并且:

  • 将 \RequirePackage[utf8]{inputenc} 更改为 \RequirePackage[cp1255]{inputenc} 确实会产生大量错误,并且
  • 将 \RequirePackage[utf8]{inputenc} 更改为 \RequirePackage[utf8x]{inputenc} 似乎没有任何改变。
  • 在本地更改编码也不能解决问题。

除了明显的优势之外,这也是我坚持使用 utf8 的另一个原因。问题似乎与我无法找到的软件包不兼容有关。

附录:“cjhebrew” 确实有效,但写一行希伯来语文本太难了(因为它不直接使用希伯来语字符)。所以这真的不是一个选择。

相关内容