
チェコ語では、日付の範囲をスペースなしのダッシュで書きます。例:
1351–1362
ダッシュの前後で改行することはできません。必要な場合は、次のようにタイプしてください。
1351年から1362年
ここで、「až」は「to」または「until」を意味します。そして、単語「až」の後に改行が発生する可能性があります。
私が取り組んでいる本では、このような範囲が頻繁に発生します。そのため、Babel の拡張ハイフネーション ルールを使用して、この問題を自動的に解決したいと考えています。
私は、このような場合にエンダッシュの代わりに使用される\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
prebreak、postbreak、nobreak テキストにスキップを入れることはできません。ただし、カーニングは可能です。カーニングは行内のスペースの伸縮には影響しません。
2 つの方法がありますが、より意味的な意味を持つ最初の方法を好みます。
\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}