cyrdash
T2A
在、和一些其他旧式编码中定义T2B
,T2C
但似乎没有包含在 EU1 (xetex) 和 EU2 (luatex) 编码中。cyrdash
按照想法,应该打印介于\textemdash
和 之间的内容\textendash
(\cyrdash
比 短 20% emdash
)。 它用于俄语、乌克兰语、保加利亚语和蒙古语,而不是emdash
,因此这些语言实际上受到歧视。
如果我是对的,\cyrdash
确实丢失了,那么 latex 开发团队能否扩展EU1
和EU2
编码以提供文本命令\cyrdash
?它可能被称为\textcyrdash
。
cyrdash
Unicode 表中的代码点是什么?
更新:这是最小工作示例。结果取决于用于编译示例的引擎。我尝试了 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
和。因此,连字符可能会在之后改变其长度。所以,现在我将我的问题重新表述如下:\textemdash
22
---
\selectlanguage
在同一个多语言文档中混合两种版本的连字符---
(宽度不同)是好做法还是坏做法?
答案1
据我所知,没有 Unicode 代码点\cyrdash
,但您可以在 xetex 和 luatex 中将其排版为\cyrdash
或就像"---
您将其包含\usepackage[babelshorthands=true]{polyglossia}
在序言中一样。