А что насчет \cyrdash в кодировках EU1 и EU2?

А что насчет \cyrdash в кодировках EU1 и EU2?

cyrdashопределен в , T2Aи некоторых других устаревших кодировках, но, похоже, выпадает из кодировок EU1 (xetex) и EU2 (luatex). по идее должен выводить что-то среднее между и ( на 20% короче, чем ). Он используется в русском, украинском, болгарском и могольском языках вместо , поэтому эти языки фактически различаются.T2BT2Ccyrdash\textemdash\textendash\cyrdashemdashemdash

Если я прав и \cyrdashдействительно заблудился, не могла бы команда разработчиков latex расширить EU1и EU2кодировки, чтобы предоставить текстовую команду для \cyrdash? Она может называться \textcyrdash.

Что такое кодовая точка cyrdashв таблицах Unicode?

ОБНОВЛЯТЬ: Вот минимальный рабочий пример. Результаты зависят от движка, использованного для компиляции примера. Я пробовал xelatex и pdflatex.

\documentclass{article}
\usepackage{ifxetex}
\ifxetex
\else
    \usepackage[T1,T2A]{fontenc}
    \usepackage[utf8]{inputenc}
\fi
\usepackage[english,russian]{babel}
\begin{document}

\Large

Russian: \\
!---!=\verb!---!\\
!\foreignlanguage{english}{---}!=\verb!\foreignlanguage{english}{---}!\\
!\cyrdash!=\verb!\cyrdash!\\
!\textemdash!=\verb!\textemdash!\\
!\textendash!=\verb!\textendash!\\

%!---!\par
\selectlanguage{english}
%!---!

English: \\
!---!=\verb!---!\\
!\cyrdash!=\verb!\cyrdash!\\
!\textemdash!=\verb!\textemdash!\\
!\textendash!=\verb!\textendash!\\

\end{document} 

Babelс опцией russianпереопределяет лигатуру ---через \cyrdash. Pdflatex берет \cyrdashи \textemdashиз той же кодовой точки шрифта LH, если выбран русский язык; тогда их размеры равны; если текущий язык Englsih, то \cyrdashне определен (возникает ошибка), и \textemdashберется из шрифтов CM и длиннее по сравнению с собой, если выбран русский язык.

В случае xelatex, \cyrdashмакрос не определен в текущей кодировке, поэтому babelподделывает его как \hbox to 0.8em{--\hss--}, что оказывается примерно 80% от \textemdash.

Ульрике Фишер направила меня к ценному списку всех доступных тире в Unicode. Я не нашел там подходящего кандидата, \cyrdashхотя по собственному опыту публикации книг знаю, что редакторы российских издательств иногда очень строги в отношении размера тире. Я также согласен, что Microsoft Word автоматически создает правильные тире между русскими словами, но я не уверен (и не могу проверить прямо сейчас), создает ли он более длинные тире между английскими словами.

Поэтому я не вижу сейчас хорошего единого решения для \cyrdashслучая, когда его следует брать из того же шрифта, что и \textemdash. Возможно, кроме того soultion, который сейчас используется в babel-russian. Может кто-нибудь предложить лучший способ?

ОБНОВЛЕНИЕ 2: Мое первоначальное видение проблемы было неверным. С помощью уважаемых TeX'perts стало ясно, что устаревшие движки LaTeX берут \cyrdashи \textemdashиз одной и той же кодовой точки 22, но, возможно, из разных шрифтов. В результате лигатура ---может изменить свою длину после \selectlanguage. Итак, теперь я бы переформулировал свой вопрос следующим образом:

Является ли хорошей или плохой практикой смешивание двух версий лигатуры ---(различающихся по ширине) в одном многоязычном документе?

решение1

Насколько мне известно, для не существует кодовой точки Unicode \cyrdash, но вы можете набрать ее в xetex и luatex, как \cyrdashили "---, если вы включите ее \usepackage[babelshorthands=true]{polyglossia}в преамбулу.

решение2

Запуск с помощьюlualatex

\documentclass{article}
\usepackage{unicode-math}
\usepackage[english,russian]{babel}
\begin{document}
[...]

введите описание изображения здесь

Связанный контент