我试图在我的文档中使用希伯来语,但似乎存在冲突(可能与某些软件包有关),导致我无法这样做。我正在编写的 .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}
据我所知,这应该是我使用希伯来字符所要做的全部工作,测试字符串为“אַ נאַר קען אַמאָל זאָגן אַ גלײַך װאָרט”。不幸的是,我收到的只有这些警告:
- 格式中没有预加载(babel)语言‘希伯来语’的连字符模式。
应该按照以下建议解决这个问题 -Babel 警告希伯来语缺乏连字符模式– 但似乎不起作用。这可能与其他警告(以及整个问题)有关。
- 输入行 8 上没有文件 HE8pplx.fd。
- 字体形状
HE8/pplx/m/n' undefined(Font) using
改为 HE8/cmr/m/n' - 字体形状
HE8/pplx/bx/n' undefined(Font) using
改为 HE8/pplx/m/n' - 字体形状
HE8/pplx/m/it' undefined(Font) using
改为 HE8/pplx/m/n' - 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” 确实有效,但写一行希伯来语文本太难了(因为它不直接使用希伯来语字符)。所以这真的不是一个选择。