西里尔字母 emdash 周围的空格 (babel)

西里尔字母 emdash 周围的空格 (babel)

"---巴别塔包(用于俄语)。它比通常的英文破折号短---,并且周围的空格也更短(而且据我所知,它们是不间断的)。这些空格的宽度是多少?它等于空格的宽度吗\,

答案1

该命令\cyrdash负责打印破折号;当当前语言为俄语时,它会打印字符 22(与长破折号相同的位置,但在 T2A 编码字体中它更短)或

\hbox to 0.8em{--\hss--}

当当前编码不是 T2A 时,这意味着它会叠加两个短划线,这样整体宽度就是 0.8em(因此会随字体而变化)。 的定义"-有点复杂:

\declare@shorthand{russian}{"-}{%
  \def\russian@sh@tmp{%
    \if\russian@sh@next-\expandafter\russian@sh@emdash
    \else\expandafter\russian@sh@hyphen\fi}%
  \futurelet\russian@sh@next\russian@sh@tmp}
\def\russian@sh@hyphen{\nobreak\-\bbl@allowhyphens}
\def\russian@sh@emdash#1#2{\cdash-#1#2}
\def\cdash#1#2#3{\def\tempx@{#3}%
\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
 \ifx\tempx@\tempa@\@Acdash\else
  \ifx\tempx@\tempb@\@Bcdash\else
   \ifx\tempx@\tempc@\@Ccdash\else
    \errmessage{Wrong usage of cdash}\fi\fi\fi}
\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
  \cyrdash\hskip.2em\ignorespaces}%
\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
 \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
\def\@Ccdash{\leavevmode
 \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%

基本上,它的意思是"-生产\russian@sh@hyphen,而"--\russian@sh@emdash

前者发出\nobreak,以便前面的单词部分可以用连字符连接;然后插入一个自由连字符,以便后面的单词部分可以用连字符连接。

后者查看接下来的两个标记(第一个仍然是-);根据第三个字符,有四种情况

  1. "---问题\@Acdash;
  2. "--~问题\@Bcdash;
  3. "--*问题\@Cdash;
  4. 以上都不是,因此"--后面跟着(忽略的)空格和除-~或之外的另一个标记~

Wrong usage of cdash在第四种情况下,会出现错误。

  • 如果存在,该案例"---会删除前面的空格,并且在这种情况下,插入一个宽度为 0.2em 的不间断空格,后面跟着\cyrdash一个宽度为 0.2em 的不间断空格。

  • 如果存在,则"--~删除前面的空格,\cyrdash然后插入类似于明确连字符的惩罚,忽略后面的空格。

  • 该案例"--*针对的是“对话”:前面没有空格,\cyrdash后面有 0.35em 的空格,忽略后面的空格。

定义中存在错误:"---在段落开头可能会产生意外结果。应该\leavevmode像其他两个宏一样在开头。

\documentclass{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

%% fix the error
\makeatletter
\def\@Acdash{\leavevmode\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
  \cyrdash\hskip.2em\ignorespaces}%
\makeatother

\begin{document}

\verb|"-|: a"-b

\verb|"---|: a"---b a "--- b

\verb|"--~|: a"--~b a "--~ b

\verb|"--*|: "--*a "--* a

\end{document}

在此处输入图片描述

相关内容