西里爾文 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是前面的單字部分可以用連字符連接;然後插入一個任意連字符,允許用連字符連接後面的單字部分。

後者查看接下來的兩個標記(第一個是 still -);根據第三個字元有四種情況

  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}

在此輸入影像描述

相關內容