在捷克语中,我们用短划线表示日期范围,不带空格,例如
1351–1362
不允许在划线周围断线。相反,如有必要,应将其排版为
1351 至 1362
其中“až”表示“到”或“直到”。那么换行符可以在单词“až”之后出现。
我正在写的书中经常出现这样的范围。因此,我希望使用 babel 扩展连字规则来自动解决此问题。
我创建了一条规则,用于在这些情况下代替 endash 的\babelposthyphenation
字符。它按预期工作,除了,§
我不知道如何在单词“až”前面插入空格。 我找不到答案巴别塔维基而且我对源代码了解不够。
以下是结果(编译的 MWElualatex
和下面最新版本的 babel)。第一行显示了所需的结果。
% !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}