Espaços em torno do emdash cirílico (babel)

Espaços em torno do emdash cirílico (babel)

Existe o comando "---(emdash cirílico) definido nobabelpacote (para o idioma russo). É mais curto do que o travessão inglês normal ---e tem espaços mais curtos ao seu redor (também são inquebráveis, como posso ver). Qual é a largura desses espaços? É igual à largura do \,espaço?

Responder1

O comando \cyrdashé responsável por imprimir o travessão; quando o idioma atual é russo, ele imprime o caractere 22 (o mesmo slot do travessão, mas em fontes codificadas T2A é mais curto) ou não

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

quando a codificação atual não é T2A, o que significa que ela sobrepõe dois travessões para que a largura total seja 0,8em (mudando assim com a fonte). A definição de "-é um pouco complicada:

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

Basicamente significa que "-produz \russian@sh@hyphen, enquanto "--faz \russian@sh@emdash.

O primeiro resulta \nobreakpara que a parte da palavra anterior possa ser hifenizada; em seguida, insere um hífen discricionário, permitindo que a parte da palavra seguinte seja hifenizada.

Este último analisa os próximos dois tokens (o primeiro ainda é -); existem quatro casos de acordo com o terceiro personagem

  1. "---problemas \@Acdash;
  2. "--~problemas \@Bcdash;
  3. "--*problemas \@Cdash;
  4. Nenhuma das opções acima "--é seguida por espaços (ignorados) e outro token além de -, ~ou ~.

No quarto caso o erro Wrong usage of cdashé gerado.

  • O caso "---remove um espaço anterior, se presente, e, neste caso, insere um espaço inseparável de largura 0,2em, seguido por \cyrdashum espaço inseparável adicional de largura 0,2em.

  • O caso "--~remove um espaço anterior, se presente, insere \cyrdashe, em seguida, uma penalidade como para um hífen explícito, ignorando os espaços seguintes.

  • O caso "--*é para “diálogos”: não há espaço antes e \cyrdashé seguido por um espaço de 0,35em, ignorando os espaços seguintes.

Há um erro nas definições: "---no início de um parágrafo pode produzir resultados inesperados. Deve haver \leavevmodeno início como nas outras duas macros.

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

insira a descrição da imagem aqui

informação relacionada