我想用正文中的意第绪语单词(希伯来文字应为 Ezra SIL 字体)制作一个词汇表(使用词汇表包)。描述将使用德语(拉丁文字 = Linux Libertine)。我试过 \begin{hebrew} … \end{hebrew},但它不起作用(并使文档变得臃肿)。有什么建议吗?词汇表条目如下所示:
\newglossaryentry{האנאָרים}{name={\RL{האנאָרים}},description={‘Freuden, Vergnügen’, \textit{hannáah} \parencite[90]{Tendlau1860}, \textit{hanō-e}}}
我希望它不会太混乱:
\documentclass[10pt,a5paper,twoside]{scrbook}
\usepackage[onehalfspacing]{setspace}
\usepackage[bmargin=2.25cm]{geometry}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead{\headmark}
\ohead{\pagemark}
\setheadsepline{0.4pt}
\setkomafont{pageheadfoot}{\normalfont\normalcolor\small}\setkomafont{pagenumber}{\normalfont}
\addtokomafont{pagehead}{\normalfont}
\setkomafont{disposition}{\normalcolor\bfseries}
\clubpenalty=10000
\widowpenalty=10000
\usepackage{color}
\usepackage{times,multicol,multirow, bigdelim}
%%%FONTS AND LANGUAGES
\usepackage{fontspec}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}
\usepackage{metalogo,hyperref}
\usepackage{polyglossia, xunicode}
\usepackage[parfill]{parskip}
\usepackage[series={A,B,C}]{reledmac}
\usepackage{reledpar}
\setgoalfraction{0.85}
\lineation{section}
\linenummargin{right}
%\setRlineflag{}
\linenumincrement*{5}
\firstlinenum*{0}
\maxchunks{10000}
%START GLOSSAR%%%%%%%%%%%%%%%
\usepackage[xindy]{glossaries}
\makenoidxglossaries
\input{glossaries.tex}
\setglossarystyle{tree}
%END GLOSSAR%%%%%%%%%%%%%%
\Xendbeforepagenumber{S.\,}
\Xendafterpagenumber{:\,}
\Xendlineprefixsingle{Z.\,}
\renewcommand{\thefootnoteA}{\fnsymbol{footnoteA}}
\newcommand\einzugjid{\hangindent=5mm\hangafter=1}
\newcommand\speaker[1]{\noindent{#1} \einzugjid
}
\newcommand\einzug{\hangindent=5mm\hangafter=1}
\newcommand\speakerd[1]{\noindent
{\textsc{#1}} \einzug
}
\usepackage[normalem]{ulem}
\usepackage{csquotes}
\usepackage[style=authoryear,language=ngerman]{biblatex} \bibliography{LitGrobsdorfEdition}
\renewcommand*{\postnotedelim}{\addcolon\,}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\begin{document}
\begin{pages}
\begin{Leftside}\begin{hebrew}
\setRTL
\beginnumbering
\pstart {\RL{\speaker{יוקב.}
געלטע דאָס גִיט אָבער לאָסטיג
\edgls{האנאָרים}
?}} \pend
\pstart {\RL{\speaker{בויער.}
יאָ, דאָס גלעב אייך. הויא פערדיענסט דוא אַהך ניט פֵֿיעל. }}
\pend
\pstart {\RL{\speaker{יוקב.}
פֿערדיענט אייכס דאָך אין אַה פֿירטעל יאָהר, וואָהס מייכ‘ס הויא און מאָר קאָסט.
\textit{)}\textit{זייפצט}.\textit{(}
}} \pend
\endnumbering
\end{hebrew}
\end{Leftside}
\begin{Rightside}
\beginnumbering
\pstart \speakerd{Person1.} {Gell}, Text…? \pend
\pstart \speakerd{Person 2.} Text… \pend
\pstart \speakerd{Person1.} Text…. \textit{(Seufzt.)} \pend
\endnumbering
\end{Rightside}
\end{pages}
\Pages
\printnoidxglossaries
\end{document}
答案1
从非常简单的文档开始,然后逐步构建,这很有帮助。我没有您的希伯来语字体,所以我将改用 Keter YG。
最初的最小示例:
\documentclass{article}
\usepackage{fontspec}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine}
\begin{document}
Deutsche
\end{document}
这会产生一个错误:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
!
! The font "Linux Libertine" cannot be found.
!
! See the fontspec documentation for further information.
!
! For immediate help type H <return>.
!...............................................
字体名称应为Linux Libertine O
。修复此问题后,示例可以正常编译,因此现在可以扩展以添加希伯来语:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\end{hebrew}
\end{document}
编译没有问题,所以现在我们可以添加glossaries
:
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy]{glossaries}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\end{hebrew}
\end{document}
现在出现错误:
! LaTeX Error: Unable to properly define \@@leqno; primitive \leqno no longer primitive.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2568 \@saveprimitive\leqno\@@leqno
这里的问题是glossaries
加载amsmath
但amsmath
期望\leqno
是原始的。不幸的是,polyglossia
的hebrew
设置重新定义,\leqno
因此它不再是原始的。最简单的解决方法是amsmath
先加载。(我不确定这是否会在以后引起问题,但至少它可以消除这个错误。)
因此修改后的例子为:
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy]{glossaries}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\end{hebrew}
\end{document}
先前的错误已消失,但出现了另一个错误:
! Package bidi Error: Oops! you have loaded package supertabular after
bidi package. Please load package supertabular before bidi package, and
then try to run xelatex on your document again.
该glossaries
包会自动加载一些预定义样式,包括supertabular
中的样式glossary-super.sty
。这里最简单的解决方案是使用 选项指示跳过glossaries
。有一个类似的错误,它被 所使用。这可以省略:glossary-super
nosuper
longtable
glossary-long
nolong
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy,nosuper,nolong]{glossaries}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\end{hebrew}
\end{document}
这会将可用样式限制为列表和树样式,但至少示例文档现在可以编译。由于您tree
在问题中使用了它,我将使用它,但如果您确实想要其中一种表格样式,请尽早加载相关的表格包。例如:
\documentclass{article}
\usepackage{amsmath}
\usepackage{longtable}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy,nosuper]{glossaries}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\end{hebrew}
\end{document}
现在可以添加示例条目和词汇表:
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy,nosuper,nolong,style=tree]{glossaries}
\makeglossaries
\newglossaryentry{האנאָרים}{name={\RL{האנאָרים}},description={‘Freuden, Vergnügen’, \textit{hannáah}, \textit{hanō-e}}}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\gls{האנאָרים}
\end{hebrew}
\printglossaries
\end{document}
编译时没有错误,但有一个警告:
Package glossaries Warning: No language module detected for `hebrew'.
(glossaries) Language modules need to be installed separately.
(glossaries) Please check on CTAN for a bundle called
(glossaries) `glossaries-hebrew' or similar.
程序glossaries
包加载tracklang
确定文档语言。它支持两种语言:german
和hebrew
。支持德语(glossaries-german
),但不适用于希伯来语,这就是为什么会出现警告。
您可以忽略此警告(并提供您自己的翻译),或者复制glossaries-german.ldf
并glossaries-hebrew.ldf
替换所有的实例german
和hebrew
所有的实例German
并Hebrew
用适当的希伯来语翻译替换德文。
如果调用该文件test.tex
则构建过程如下:
xelatex test
makeglossaries test
xelatex test
如果你没有安装 Perl(makeglossaries
是一个 Perl 脚本),你可以使用轻量级 Lua 版本makeglossaries-lite
:
xelatex test
makeglossaries-lite test
xelatex test
makeglossaries
和都makeglossaries-lite
从文件中获取信息.aux
,信息告诉他们文档的主要语言是德语,因此makeglossaries
:
xindy -L german -C din5007-utf8 -I xindy -M "test" -t "test.glg" -o "test.gls" "test.glo"
但makeglossaries-lite
不太聪明,并且忽略了din5007
设置:
"xindy" -I xindy -L german -C utf8 -M "test.xdy" -t "test.glg" -o "test.gls" "test.glo"
所以如果可以的话最好使用makeglossaries
。此时文档如下所示:
我猜你实际上想让词汇表按照希伯来语排序(因为name
包含希伯来语字符)。由于这不是文档的主要语言,因此你需要指示makeglossaries
(或makeglossaries-lite
)将hebrew
设置传递给xindy
。你还需要关闭阿拉伯数字组的创建。像这样:
\usepackage[xindy={language=hebrew,glsnumbers=false},nosuper,nolong,style=tree]{glossaries}
现在决定该词汇表是带有德语描述的希伯来语词汇表还是希伯来语术语的德语词汇表?
在第一种情况下,显示词汇表时需要切换语言。由于不支持希伯来语glossaries
,因此您需要设置标题。由于我不会说希伯来语,所以我只好使用谷歌翻译来提供标题。根据需要进行更改。德语描述需要用德语设置。这需要一种自定义样式,该样式可以基于样式。tree
由于此样式会自动切换到希伯来语(使用环境) ,因此名称中hebrew
不需要。(也在环境中使用。)\RL
\gls
hebrew
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy={language=hebrew,glsnumbers=false},nosuper,nolong]{glossaries}
\makeglossaries
\newglossarystyle{hebrewgerman}
{% base it on the tree style:
\setglossarystyle{tree}%
% switch to hebrew
\renewenvironment{theglossary}%
{\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt plus 0.3pt}%
\begin{hebrew}
}%
{\end{hebrew}}%
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent0pt\relax
\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
\glstreepredesc
% put description and number list in German
\textgerman{\glossentrydesc{##1}\glspostdescription\space##2}\par
}%
}
\newglossaryentry{האנאָרים}{name={האנאָרים},description={‘Freuden, Vergnügen’, \textit{hannáah}, \textit{hanō-e}}}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\gls{האנאָרים}
\end{hebrew}
\printglossary[title={מילון מונחים},style=hebrewgerman]
\end{document}
得出的结果为:
这会将描述和编号列表设置为德语。您可以根据自己的需求调整样式。
如果您想要第二种情况,即以德语作为词汇表的主要语言,那么可以使用类似的方法:
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy={language=hebrew,glsnumbers=false},nosuper,nolong]{glossaries}
\makeglossaries
\newglossarystyle{germanhebrew}
{% base it on the tree style:
\setglossarystyle{tree}%
% switch to german
\renewenvironment{theglossary}%
{\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt plus 0.3pt}%
\begin{german}
}%
{\end{german}}%
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent0pt\relax
\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{%
\texthebrew{\glossentryname{##1}}}}%
\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
\glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
}%
}
\newglossaryentry{האנאָרים}{name={האנאָרים},description={‘Freuden, Vergnügen’, \textit{hannáah}, \textit{hanō-e}}}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\gls{האנאָרים}
\end{hebrew}
\printglossary[style=germanhebrew]
\end{document}
得出的结果为:
有多种方法可以集成makeglossaries
到构建过程中。
TeXShop
基于这个答案,为了makeglossaries
与 TeXShop 一起使用,您可以创建一个包含以下内容的文件:
#!/bin/sh
bfname=$(dirname "$1")/"`basename "$1" .tex`"
xelatex "$1"
makeglossaries "$bfname"
xelatex "$1"
xelatex "$1"
将其glossaries.engine
另存为并按照另一个答案。更好的方法是使用arara
,如下所述。
阿拉拉
安装arara
并在文档开头添加以下几行:
% xelatex
% makeglossaries
% xelatex
如果文件被调用,test.tex
那么在终端中只需执行
arara test
您也可以arara
使用与上述类似的方法添加到 TeXShop。创建一个名为的文件,arara.engine
其中包含:
#!/bin/sh
arara "$1"
使其可执行(从终端)
chmod a+x arara.engine
复制或移动文件至~/Library/TeXShop/Engines
cp arara.engine ~/Library/TeXShop/Engines
重新启动 TeXShop 并arara
从按钮旁边的下拉列表中进行选择Typeset
。(如果您有翻译版本,请将其与TeXShop 主页。
如果您需要添加参考书目,只需添加
% arara: bibtex
或者
% arara: biber
到文件开头的注释。
完整示例:
% arara: xelatex
% arara: makeglossaries
% arara: xelatex
% arara: bibtex
% arara: xelatex
% arara: xelatex
\documentclass{article}
\usepackage{amsmath}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{libertine}
\setmainfont[Ligatures=TeX]{Linux Libertine O}
\setmainlanguage{german}
\setotherlanguage{hebrew}
\newfontfamily\hebrewfont[Script=Hebrew]{Keter YG}
\usepackage[xindy={language=hebrew,glsnumbers=false},nosuper,nolong]{glossaries}
\makeglossaries
\newglossarystyle{germanhebrew}
{% base it on the tree style:
\setglossarystyle{tree}%
% switch to german
\renewenvironment{theglossary}%
{\setlength{\parindent}{0pt}%
\setlength{\parskip}{0pt plus 0.3pt}%
\begin{german}
}%
{\end{german}}%
\renewcommand{\glossentry}[2]{%
\hangindent0pt\relax
\parindent0pt\relax
\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{%
\texthebrew{\glossentryname{##1}}}}%
\ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
\glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
}%
}
\newglossaryentry{האנאָרים}{name={האנאָרים},description={‘Freuden,
Vergnügen’, \textit{hannáah}, \cite{article-minimal}, \textit{hanō-e}}}
\begin{document}
Deutsche
\begin{hebrew}
עִברִית
\gls{האנאָרים}
\end{hebrew}
\printglossary[style=germanhebrew]
\bibliographystyle{plain}
\bibliography{xampl}
\end{document}
另一个选择是使用latexmk
。例如,参见如何让 Latexmk 使用 makeglossaries?makeindex
(但请确保您不要使用这里明确要求的答案xindy
)。
确保您拥有所有必需软件包的最新版本。您可以\listfiles
在文档开头添加版本号,并将其与加拿大运输安全局。