使用 withpolyglossia
包会停止分别从和\setdefaultlanguage{russian}
生成短破折号和长破折号。此外,不再有来自 U+0022 的漂亮“上 99”引号(或任何其他漂亮引号)。--
---
使用\setdefaultlanguage{english}
或使用默认语言我都能得到这些。使用则russian
不行。我最接近的方法是使用babelshorthands=true
选项,但有三个问题:
- 渲染结果看起来不太好(线条粗细明显变化,至少对于这种字体而言),
- 用
"--
(或"--~
就此而言) 留出间距并在 之后换行"---
, - 当然,如果用俄语书写文本,则必须使用非常不方便的序列。
我当然可以直接输入 U+2014 和 U+2015 以及漂亮的引号,但为什么包会表现出如此奇怪的行为?没有语言设置(英语?)工作正常。
我需要连字符,否则我就会放弃polyglossia
,并且babel
与我需要的东西冲突。
妇女权利委员会:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Liberation Serif}[Ligatures=TeX]
\newfontfamily\cyrillicfont{Liberation Serif}[Script=Cyrillic]
\usepackage{polyglossia}
% these work (german - in its own specific manner):
%\setdefaultlanguage{english}
%\setdefaultlanguage[babelshorthands=true]{german}
% these don't (strange results with babelshorthands on):
\setdefaultlanguage[babelshorthands=true]{russian}
%\setdefaultlanguage[babelshorthands=false]{russian}
%\setdefaultlanguage{russian}
% polyglossia version: 2023/02/11 v1.60
\begin{document}
..........
-- ~ "en-dash"
--- ~ "em-dash"
"-- ~ "babelshorthands en-dash"
"--- ~ "babelshorthands em-dash"
\end{document}
更新:建议参考'多语者无法引用',虽然它实际上提供了一种解决方案,但我认为,它并不符合“精确”重复的条件,因为原始帖子的问题是以这种方式表述的,所以很容易忽略该问题与我的问题的关系。
答案1
如果\newfontfamily
需要使用 TeX-Ligatures,例如用于--
或---
或也用于引号,则需要启用它们。使用
\newfontfamily\cyrillicfont{Liberation Serif}[Script=Cyrillic,Ligatures=TeX]
与您已经使用过的类似:
\setmainfont{Liberation Serif}[Ligatures=TeX]
(顺便说一句:通常Ligatures=TeX
已经为主字体设置,因此不需要。)另请参阅问题“引言对多语者不起作用吗?”
另外我建议使用csquotes
如图所示的报价包在这个答案中。根据您想要的引用样式,您还可以使用选项style
,例如
\usepackage[style=american]{csquotes}
然而看起来,babel 简写"--~
和"---
不能正确地工作polyglossia
:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Liberation Serif}
%\usepackage[english,main=russian]{babel}
\setmainfont{Liberation Serif}[Ligatures=TeX]
\newfontfamily\cyrillicfont{Liberation Serif}[Script=Cyrillic]
\usepackage{polyglossia}
\setdefaultlanguage[babelshorthands=true]{russian}
\setotherlanguage{english}
\usepackage[style=american]{csquotes}
\defineshorthand{"`}{\openautoquote}
\defineshorthand{"'}{\closeautoquote}
\begin{document}
\selectlanguage{english}\useshorthands{"}
-- ``en-dash''
--- ``em-dash''
"--~ ``babelshorthands em-dash no space''
"--- ``babelshorthands em-dash small space''
\selectlanguage{russian}
-- "`тире"'
--- "`рывок"'
"--~ "`вавилонские сокращения, тире, нет места"'
"--- "`вавилонская стенография em-dash маленькое пространство"'
\end{document}
您也需要重新定义这些简写,但恕我直言,如果您想使用简写,babel
这样更容易使用:polyglossia
babel
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Liberation Serif}% explicit option [Ligatures=TeX] not needed
\usepackage[english,main=russian]{babel}
\usepackage[style=american]{csquotes}
\defineshorthand{"`}{\openautoquote}
\defineshorthand{"'}{\closeautoquote}
\begin{document}
\selectlanguage{english}
-- ``en-dash''
--- ``em-dash''
"--~ ``babelshorthands em-dash no space''
"--- ``babelshorthands em-dash small space''
\selectlanguage{russian}
% Note: All translations by translate.google.com
-- "`тире"'
--- "`рывок"'
"--~ "`вавилонские сокращения, тире, нет места"'
"--- "`вавилонская стенография em-dash маленькое пространство"'
\end{document}
因为babel
速记依赖于语言,"--~
并且"---
在英语部分被忽略。