Insertar espacio con babel después de la separación de palabras

Insertar espacio con babel después de la separación de palabras

En checo, escribimos rangos de fechas con un guión sin espacios, por ejemplo

1351-1362

No está permitido romper la línea alrededor del guión. En lugar de ello, cuando sea necesario, deberá componerse como

1351 a 1362

donde "až" significa "hasta" o "hasta". Entonces el salto de línea puede aparecer después de la palabra "až".

Rangos como estos ocurren mucho en el libro en el que estoy trabajando. Por lo tanto, deseo utilizar las reglas de separación de palabras extendidas de Babel para solucionar este problema automáticamente.

Creé una \babelposthyphenationregla para un carácter §que se usaría en lugar del endash en estos casos. Funciona como se esperaba excepto,No sé cómo insertar un espacio delante de la palabra "až". No pude encontrar la respuesta enla wiki de babely no entiendo el código fuente lo suficientemente bien.

Aquí está el resultado (MWE que se compila con lualatexla última versión de Babel a continuación). La primera línea muestra el resultado deseado.

ingrese la descripción de la imagen aquí

% !TeX encoding = UTF-8
% !TeX program = lualatex
\documentclass[10pt,twoside]{book}

\usepackage[czech]{babel}
\usepackage[papersize={85mm, 100mm},showframe]{geometry}

\babelposthyphenation{czech}{.§.}{
    {},
    { no = --, pre = až, post = , data = 1 },
    {}
}

\begin{document}
\thispagestyle{empty}
\noindent profesorem 1351--1362 a~v~roce 1353~až 1372

\vspace*{2ex}
\noindent profesorem 1351§1362 a~v~roce 1353§1372
\end{document}

Respuesta1

No puedes poner saltos en los textos previos, posteriores y sin pausas. Pero puedes tener un kern. No participará en el estiramiento o encogimiento del espacio en la línea.

Dos métodos, preferiría el primero porque tiene más semántica.

\documentclass[10pt,twoside]{book}
\usepackage[czech]{babel}
\usepackage[papersize={85mm, 100mm},showframe]{geometry}
\usepackage{newunicodechar}

\newcommand{\breakrange}{\discretionary{\kern0.3333em až}{}{--}}
\newcommand{\yrrange}[2]{#1\breakrange#2}
\newunicodechar{§}{\breakrange}

\begin{document}
\thispagestyle{empty}

\noindent profesorem \yrrange{1351}{1362} a~v~roce \yrrange{1353}{1372}

\vspace*{2ex}
\noindent profesorem 1351§1362 a~v~roce 1353§1372

\end{document}

ingrese la descripción de la imagen aquí

información relacionada