
在捷克語中,我們用短劃線書寫日期範圍,不帶空格,例如
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}