polyglossia
我对和的组合有点问题ledpar
。首先是例子
\documentclass[11pt,a4paper]{scrartcl}
\usepackage{xltxtra}
\usepackage{libertine}
\usepackage{polyglossia}
\setmainlanguage[spelling=new,babelshorthands=true]{german}
\setotherlanguage{latin}
\setotherlanguage[variant=poly]{greek}
\usepackage{ledmac,ledpar}% PROBLEM-LINE
\begin{document}
\minisec{german}
Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien
leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste
des Semantik, eines großen Sprachozeans.
\minisec{latin}
\begin{latin}
Ulpianus libro primo institutionum pr Iuri operam daturum prius nosse oportet,
unde nomen iuris descendat. est autem a iustitia appellatum: nam, ut eleganter
Celsus definit, ius est ars boni et aequi.
\end{latin}
\minisec{greek}
\begin{greek}
μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην, ἣ μυρί' Ἀχαιοῖς ἄλγε'
ἔθηκε, πολλὰς δ' ἰφθίμους ψυχὰς Ἄϊδι προί̈αψεν ἡρώων
\end{greek}
\minisec{short-versions}
Hier steht etwas griechisches: \textgreek{Πηληϊάδεω}
\end{document}
如果没有问题线,其中包括ledpar
,一切工作正常,但在使用外语环境时我遇到了问题,导致环境内容开头的 PDF 中出现一些额外的文本(]latin
或)。]greek
简短版本没有问题\text⟨lang⟩
。
答案1
这里提到了同样的问题:http://tug.org/pipermail/xetex/2010-June/017029.html
我提出了一个基于文档的补丁:
\letcs\POLYselectlanguage{\string\selectlanguage}
\usepackage{ledmac}
\usepackage{ledpar}
\AtBeginDocument{
\renewcommand{\selectlanguage}[2][]{%
\POLYselectlanguage[#1]{#2}%
\ifledRcol
\gdef\theledlanguageR{#2}%
\else
\gdef\theledlanguageL{#2}%
\fi}
}
正如原帖所说,这解决了问题。François Charette 为 ledpar 和 ledmac 提出了一个补丁 (http://tug.org/pipermail/xetex/2010-June/017067.html),但我不知道后来发生了什么。
François 提出的补丁是更改 ledpar.sty 中的某些行:第 1481-1498 行
\AtBeginDocument{%
\@ifundefined{bbl@main@language}{%
\l@dusedbabelfalse
\renewcommand*{\selectlanguage}[1]{}}{%
\l@dusedbabeltrue
\let\l@doldselectlanguage\selectlanguage
\let\l@doldbbl@set@language\bbl@set@language
\let\bbl@set@language\l@dbbl@set@language
\renewcommand{\selectlanguage}[1]{%
\l@doldselectlanguage{#1}%
\ifledRcol \gdef\theledlanguageR{#1}%
\else \gdef\theledlanguageL{#1}%
\fi}
\renewcommand*{\l@duselanguage}[1]{%
\l@doldselectlanguage{#1}}
\gdef\theledlanguageL{\bbl@main@language}%
\gdef\theledlanguageR{\bbl@main@language}%
}}
应该成为
\AtBeginDocument{
\@ifundefined{xpg@main@language}{%
\@ifundefined{bbl@main@language}{% no babel, no polyglossia
\l@dusedbabelfalse
\renewcommand*{\selectlanguage}[1]{}%
}{% else babel loaded
\l@dusedbabeltrue
\let\l@doldselectlanguage\selectlanguage
\let\l@doldbbl@set@language\bbl@set@language
\let\bbl@set@language\l@dbbl@set@language
\renewcommand{\selectlanguage}[1]{%
\l@doldselectlanguage{#1}%
\ifledRcol \gdef\theledlanguageR{#1}%
\else \gdef\theledlanguageL{#1}%
\fi}
\renewcommand*{\l@duselanguage}[1]{%
\l@doldselectlanguage{#1}}
\gdef\theledlanguageL{\bbl@main@language}%
\gdef\theledlanguageR{\bbl@main@language}%
}%
}{%else polyglossia loaded
\apptocmd{\xpg@set@language}{%
\ifledRcol \gdef\theledlanguageR{#1}%
\else \gdef\theledlanguageL{#1}%
\fi}%
\let\l@duselanguage\xpg@set@language
\gdef\theledlanguageL{\xpg@main@language}%
\gdef\theledlanguageR{\xpg@main@language}%
}}
它本质上是我建议的(基于文档的)补丁,但更干净。
答案2
2011 年 8 月:
Maïeul Rouquette 已使用上述 François Charette 补丁更新了 CTAN 中的 ledpar.dtx 文件。(参见https://groups.google.com/d/topic/comp.text.tex/NCly-8DJtkM/discussion) 包含此新补丁的最新版本 ledpar.dtx 是
- 0.3c 补丁 0.4(见http://www.ctan.org/pkg/ledpar)
通过这个版本的ledpar,Martin Scharrer上面提到的问题就解决了。
然而,我最近安装了 TeXlive 2011,我注意到它在 0.3b 版本中提供了 ledpar.sty,并且没有 Charette 补丁。在 TeXlive 2011 更新之前,您需要手动获取并安装 0.3c 版本。
答案3
polyglossia
和都ledpar
重新定义了\selectlanguage
。 ledpar 的定义“win” 和 在文档中处于活动状态,但具有不同数量的参数:\renewcommand{\selectlanguage}[1]
versus\renewcommand{\selectlanguage}[2][]
来自 polyglossia。
你需要一个能够理解 ledpar 通过重新定义\selectlanguage
来解决冲突想要达到什么目的的人。