我正在尝试使用 XeLaTeX 制作一份用希腊语编写的文档,其中包含英语和希腊语书目。
为了这个目的我使用了 xgreek、biblatex 包和 biber 的组合。
我遇到的问题是 xelatex 似乎忽略了 bib 中的连字符字段。以下是我正在使用的样式文件的示例:
\RequirePackage{xltxtra} % loads fixltx2e, etex, xunicode, fontspec
\RequirePackage{xgreek} % for greek documents
\RequirePackage[language=greek,backend=biber,
bibencoding=utf8,natbib=true,bibstyle=authoryear,
citestyle=authoryear,babel=hyphen]{biblatex}
以下是参考书目的一个例子:
@article{Ritchie_07,
Author = {Bob Ritchie and Esamaddin Khorwatt},
Journal = {The English Accounting Review},
Hyphenation = {english},
Language = {english},
Pages = {39--59},
Title = {The attitude of Libyan auditors to inherent control risk assessment},
Volume = {39},
Year = {2007}}
问题是,我既可以有希腊文书目连字,又可以没有英文书目连字,反之亦然。我不能同时拥有两者。
我正在使用 MikTeX 2.8。任何反馈都将不胜感激
答案1
为了在参考书目中切换不同语言,biblatex 使用 babel 或 polyglossia 的宏\selectlanguage
。xgreek 似乎与 babel 和 polyglossia 类似,但它没有定义\selectlanguage
。
你可以尝试
\RequirePackage{polyglossia}
\newfontfamily\greekfont[Script=Greek]{Gentium} % or other font with support for greek
\setmainlanguage[variant=monotonic]{greek} % variant can be polytonic, monotonic, or ancient
\setotherlanguage{english} % you need to put here \setotherlanguage for each language that you are using in the bibliography
到你的样式文件而不是xgreek
。学习polyglossia
手册以了解更多详细信息。
也许尝试删除 biblatex 的一些不必要的选项:
\RequirePackage[
backend=biber
,bibencoding=utf8
,natbib=true
,style=authoryear
,babel=hyphen
]{biblatex}
问题的一部分在于您明确将参考书目语言设置为希腊语。
答案2
由于这是一种不同的方法,因此我将其作为单独的答案发布。
XeLaTeX 使您能够定义字形组,并在遇到属于不同组的字形时自动发出命令。
由于希腊字母与拉丁字母不同,你可以将它们分开分组character classes
。因此,每次更改类别时,你都可以发出命令\setlanguage
以加载正确的连字规则。
为了使用它,按照这些说明操作或者更简单地保存此代码在名为 的文件中autohyph.sty
,将其放在 LaTeX 可以找到的地方(与主文件位于同一文件夹中)并提供\usepackage{xgreek,autohyph}
您的序言。
最小工作示例
\documentclass[a4paper,draft]{article}
% Language declaration
\usepackage{xltxtra,xgreek,lipsum}
\usepackage{autohyph}
% Fonts
\setmainfont[Kerning=On,Mapping=tex-text]{Linux Libertine O}
\begin{document}
\section{Ελληνικά}
Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις. Παράγραφος με ελληνικό κείμενο στην οποία γίνονται υφενώσεις.
\section{Αγγλικά}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagiis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
\end{document}
更多信息可以在 Apostolos Syropoulos 书中找到Ψηφιακή Τυπογραφία με το XeLaTeX
第 9.4 节(希腊文)和XeTeX 参考文件第13至14页。
笔记
- 我只检查了单调希腊文。让它与多音调和古希腊文兼容应该不太难。
- 这种方法仅适用于使用不同脚本的语言(例如希腊语、拉丁语、西里尔语等)
- 除了英语之外,它还可以用于任何其他使用拉丁字母的语言,但不能同时用于其中两种。
- 据我检查,一切正常。但需要更多测试
答案3
一个不太干净的解决方案(实际上是一种肮脏的黑客行为)是编写一个宏,然后在 *.bib 文件中的文本中使用它。
%preamble
\newcommand{\en}[1]{\setlanguage{american}#1\setlanguage{monogreek}}
进而:
Title = {\en{The attitude of Libyan auditors to inherent control risk assessment}},
您也可以在文本中使用此宏。问题是,如果您使用类似 mendeley 的东西来管理参考书目,您必须自己添加它。
附言:我还没有用 biblatex 检查过,但它可以与 natbib 一起使用。