
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 \babelposthyphenation
regra 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 lualatex
e a versão mais recente do babel abaixo). A primeira linha mostra o resultado desejado.
% !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}