キリル文字のエムダッシュ(バベル)の周りのスペース

キリル文字のエムダッシュ(バベル)の周りのスペース

コマンドがあります"---で定義されているバベルパッケージ (ロシア語用)。通常の英語のダッシュよりも短く---、その周りのスペースも短くなっています (また、私が見たところ、それらは改行なしです)。このようなスペースの幅はどれくらいですか? スペースの幅と同じですか\,?

答え1

このコマンドは\cyrdashダッシュを印刷する役割を担う。現在の言語がロシア語の場合、文字22(emダッシュと同じスロットだが、T2Aエンコードフォントでは短い)を印刷するか、

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

現在のエンコーディングが T2A でない場合、全体の幅が 0.8em になるように 2 つの en-dash が重ねられます (フォントによって変わります)。 の定義は"-少し複雑です。

\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、前の単語部分をハイフンで区切ることができるように発行し、その後、任意のハイフンを挿入して、次の単語部分をハイフンで区切ることができるようにします。

後者は次の2つのトークン(最初のトークンはまだ-)を見ます。3番目の文字に応じて4つのケースがあります。

  1. "---問題\@Acdash;
  2. "--~問題\@Bcdash;
  3. "--*問題\@Cdash;
  4. 上記のいずれでもない、したがって、 の後には (無視される) スペースと、または"--以外のトークンが続きます。-~~

4 番目のケースではエラーWrong usage of cdashが発生します。

  • この"---場合、先行するスペースがあれば削除し、幅 0.2em の改行不可スペースを挿入し、その後に\cyrdash幅 0.2em の改行不可スペースをさらに挿入します。

  • この場合、"--~先行するスペースがある場合は削除し、\cyrdash明示的なハイフンの場合と同様にペナルティを挿入して、後続のスペースを無視します。

  • これは"--*「ダイアログ」の場合です。前にはスペースがなく、その後には\cyrdash0.35em のスペースが続き、後続のスペースは無視されます。

定義にエラーがあります。"---段落の先頭に があると、予期しない結果が生じる可能性があります。\leavevmode他の 2 つのマクロと同様に、先頭に がある必要があります。

\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}

ここに画像の説明を入力してください

関連情報