使用 babel 连字符后插入空格

使用 babel 连字符后插入空格

在捷克语中,我们用短划线表示日期范围,不带空格,例如

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}

在此处输入图片描述

相关内容