コマンドがあります"---
で定義されているバベルパッケージ (ロシア語用)。通常の英語のダッシュよりも短く---
、その周りのスペースも短くなっています (また、私が見たところ、それらは改行なしです)。このようなスペースの幅はどれくらいですか? スペースの幅と同じですか\,
?
答え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つのケースがあります。
"---
問題\@Acdash
;"--~
問題\@Bcdash
;"--*
問題\@Cdash
;- 上記のいずれでもない、したがって、 の後には (無視される) スペースと、または
"--
以外のトークンが続きます。-
~
~
4 番目のケースではエラーWrong usage of cdash
が発生します。
この
"---
場合、先行するスペースがあれば削除し、幅 0.2em の改行不可スペースを挿入し、その後に\cyrdash
幅 0.2em の改行不可スペースをさらに挿入します。この場合、
"--~
先行するスペースがある場合は削除し、\cyrdash
明示的なハイフンの場合と同様にペナルティを挿入して、後続のスペースを無視します。これは
"--*
「ダイアログ」の場合です。前にはスペースがなく、その後には\cyrdash
0.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}