使用 babel 後連字符插入空格

使用 babel 後連字符插入空格

在捷克語中,我們用短劃線書寫日期範圍,不帶空格,例如

1351–1362

不允許破壞破折號周圍的線。相反,必要時,應將其排版為

1351 至 1362

其中“až”表示“到”或“直到”。然後換行符可以出現在單字“až”之後。

類似這樣的範圍在我正在寫的書中經常出現。因此,我希望使用 babel 擴充連字符規則來自動解決這個問題。

我為在這些情況下將使用的\babelposthyphenation字元而不是尾劃線創建了一條規則。§它按預期工作,除了,我不知道如何在單字“až”前面插入空格。 我找不到答案巴別塔維基而且我對原始碼的理解還不夠。

這是結果(使用lualatex下面的最新版本的 babel 編譯的 MWE)。第一行顯示所需的結果。

在此輸入影像描述

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

答案1

您不能在預休息、後休息和無休息文本中放置跳躍。不過,你可以有一個緊排。它不會參與線中空間的拉伸或收縮。

兩種方法,我更喜歡第一種,因為它帶有更多語義。

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

在此輸入影像描述

相關內容