Mit Babel nach der Silbentrennung ein Leerzeichen einfügen

Mit Babel nach der Silbentrennung ein Leerzeichen einfügen

Im Tschechischen schreiben wir Datumsbereiche mit Halbgeviertstrich ohne Leerzeichen, z. B.

1351–1362

Es ist nicht erlaubt, die Linie um den Bindestrich zu unterbrechen. Stattdessen sollte sie, wenn nötig, wie folgt gesetzt werden:

1351 bis 1362

wobei "až" "bis" oder "bis" bedeutet. Der Zeilenumbruch kann dann nach dem Wort "až" erfolgen.

Solche Bereiche kommen in dem Buch, an dem ich arbeite, häufig vor. Daher möchte ich die erweiterten Silbentrennungsregeln von Babel verwenden, um dieses Problem automatisch zu lösen.

Ich habe eine \babelposthyphenationRegel für ein Zeichen erstellt §, das in diesen Fällen anstelle des Endash verwendet wird. Es funktioniert wie erwartet, außer,Ich kann nicht herausfinden, wie ich vor dem Wort „až“ ein Leerzeichen einfügen kann. Ich konnte die Antwort nicht finden unterdas Babel-Wikiund ich verstehe den Quellcode nicht gut genug.

Hier ist das Ergebnis (MWE, das mit lualatexder neuesten Version von Babel kompiliert wird, siehe unten). Die erste Zeile zeigt das gewünschte Ergebnis.

Bildbeschreibung hier eingeben

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

Antwort1

Sie können keine Sprünge in die Texte vor, nach und ohne Zeilenumbruch einfügen. Sie können jedoch einen Unterschnitt verwenden. Dieser wird nicht an der Ausdehnung oder Verkleinerung des Zeilenabstands beteiligt.

Zwei Methoden, ich würde die erste bevorzugen, da sie mehr Semantik vermittelt.

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

Bildbeschreibung hier eingeben

verwandte Informationen