Inserir espaço com pós-hifenização do babel

Inserir espaço com pós-hifenização do babel

Em tcheco, escrevemos intervalos de datas com travessão sem espaços, por exemplo

1351–1362

Não é permitido quebrar a linha ao redor do traço. Em vez disso, quando necessário, deve ser escrito como

1351 a 1362

onde "až" significa "para" ou "até". Então a quebra de linha pode ocorrer após a palavra "až".

Intervalos como esses ocorrem muito no livro em que estou trabalhando. Portanto, desejo usar regras de hifenização estendida do babel para resolver esse problema automaticamente.

Criei uma \babelposthyphenationregra para um personagem §que seria usado no lugar do endash nesses casos. Funciona como esperado, exceto,Não consigo descobrir como inserir um espaço antes da palavra "až". Não consegui encontrar a resposta ema wiki da babele não entendo bem o código-fonte.

Aqui está o resultado (MWE que compila lualatexe a versão mais recente do babel abaixo). A primeira linha mostra o resultado desejado.

insira a descrição da imagem aqui

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

Responder1

Você não pode pular os textos pré-quebra, pós-quebra e nobreak. Você pode ter um kern, no entanto. Não participará no alongamento ou encolhimento do espaço na linha.

Dois métodos, prefiro o primeiro porque carrega mais 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}

insira a descrição da imagem aqui

informação relacionada