那么 EU1 和 EU2 编码中的 \cyrdash 怎么样?

那么 EU1 和 EU2 编码中的 \cyrdash 怎么样?

cyrdashT2A在、和一些其他旧式编码中定义T2BT2C但似乎没有包含在 EU1 (xetex) 和 EU2 (luatex) 编码中。cyrdash按照想法,应该打印介于\textemdash和 之间的内容\textendash\cyrdash比 短 20% emdash)。 它用于俄语、乌克兰语、保加利亚语和蒙古语,而不是emdash,因此这些语言实际上受到歧视。

如果我是对的,\cyrdash确实丢失了,那么 latex 开发团队能否扩展EU1EU2编码以提供文本命令\cyrdash?它可能被称为\textcyrdash

cyrdashUnicode 表中的代码点是什么?

更新:这是最小工作示例。结果取决于用于编译示例的引擎。我尝试了 xelatex 和 pdflatex。

\documentclass{article}
\usepackage{ifxetex}
\ifxetex
\else
    \usepackage[T1,T2A]{fontenc}
    \usepackage[utf8]{inputenc}
\fi
\usepackage[english,russian]{babel}
\begin{document}

\Large

Russian: \\
!---!=\verb!---!\\
!\foreignlanguage{english}{---}!=\verb!\foreignlanguage{english}{---}!\\
!\cyrdash!=\verb!\cyrdash!\\
!\textemdash!=\verb!\textemdash!\\
!\textendash!=\verb!\textendash!\\

%!---!\par
\selectlanguage{english}
%!---!

English: \\
!---!=\verb!---!\\
!\cyrdash!=\verb!\cyrdash!\\
!\textemdash!=\verb!\textemdash!\\
!\textendash!=\verb!\textendash!\\

\end{document} 

Babel使用选项通过russian重新定义连字。如果选择了俄语,则Pdflatex 将从 LH 字体的相同代码点中获取和;然后它们的大小相等;如果当前语言是英语,则未定义(出现错误),并且从 CM 字体中获取并且与自身相比更长(如果选择了俄语)。---\cyrdash\cyrdash\textemdash\cyrdash\textemdash

如果xelatex\cyrdash宏未在当前编码中定义,因此babel将其伪装成 ,\hbox to 0.8em{--\hss--}结果大约为 的 80% \textemdash

Ulrike Fischer 向我提供了 Unicode 中所有可用破折号的宝贵列表。我没有在\cyrdash那里找到合适的候选者,尽管从我自己出版书籍的经验来看,我知道俄罗斯出版社的编辑有时对破折号的大小非常严格。我也同意 Microsoft Word 会自动在俄语单词之间生成正确的破折号,但我不确定(现在无法检查)它是否会在英语单词之间生成更长的破折号。

\cyrdash因此,对于应从与 相同的字体中获取的情况,我现在看不到一个好的统一解决方案\textemdash。也许吧,除了目前在 babel-russian 中使用的解决方案。有人能提出更好的方法吗?

更新2:我最初对这个问题的看法是错误的。在受人尊敬的 TeX'perts 的帮助下,很明显,传统的 LaTeX 引擎从相同的代码点但可能从不同的字体中获取\cyrdash和。因此,连字符可能会在之后改变其长度。所以,现在我将我的问题重新表述如下:\textemdash22---\selectlanguage

在同一个多语言文档中混合两种版本的连字符---(宽度不同)是好做法还是坏做法?

答案1

据我所知,没有 Unicode 代码点\cyrdash,但您可以在 xetex 和 luatex 中将其排版为\cyrdash或就像"---您将其包含\usepackage[babelshorthands=true]{polyglossia}在序言中一样。

答案2

运行它lualatex

\documentclass{article}
\usepackage{unicode-math}
\usepackage[english,russian]{babel}
\begin{document}
[...]

在此处输入图片描述

相关内容