控制标点作为间距字符?

控制标点作为间距字符?

我正在使用 XeLaTeX 和 fontspec 包来处理使用 UTF-8 标点符号(·)而不是空格的文本。

然而,'TeX 并不将标点符号理解为空格字符,因此使用标点符号的长行文本会溢出页面边界。

例子:

\documentclass[openany]{book}
\usepackage{fontspec}

\begin{document}
Lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem·ipsum·lorem...
\end{document}

我知道 seqsplit 包存在,但它似乎更多用于在包装边界(DNA/RNA 转录)处分割长字符串,而不是在这种情况下进行分割。

两个相互关联的问题:

  • 是否有一个包或命令可用于将标点符号通常定义为空格字符?
  • 换行时是否可以消除中间标点符号?也就是说,换行取代了中间标点符号的需要。

(注意:我仅将标点符号用作空格,而不是任何其他常见的标点符号用法,因此此解决方案可能会破坏标点符号的其他用法。)

答案1

变体https://tex.stackexchange.com/a/44951/4427(请参阅此处了解归因)。

\documentclass{article}
\usepackage{fontspec}
\usepackage{newunicodechar}

\newcommand{\spaceinterpunct}{\unskip
  \hskip 2pt plus 1pt minus 1pt
  \cleaders\copy\interpunctbox\hskip\wd\interpunctbox
  \hskip 2pt plus 1pt minus 1pt
  \ignorespaces}
\newsavebox\interpunctbox
\sbox\interpunctbox{·}

\newunicodechar{·}{\spaceinterpunct}

\begin{document}

Nulla·malesuada·porttitor·diam.·Donec·felis·erat,·congue·non,·volutpat·at,·tincidunt·tristique,·libero.·Vivamus·viverra·fermentum·felis.·Donec·nonummy·pellentesque·ante.·Phasellus·adipiscing·semper·elit.·Proin·fermentum·massa·ac·quam.·Sed·diam·turpis,·molestie·vitae,·placerat·a,·molestie·nec,·leo.·Maecenas·lacinia.·Nam·ipsum·ligula,·eleifend·at,·accumsan·nec,·suscipit·a,·ipsum.·Morbi·blandit·ligula·feugiat·magna.·Nunc·eleifend·consequat·lorem.·Sed·lacinia·nulla·vitae·enim.·Pellentesque·tincidunt·purus·vel·magna.·Integer·non·enim.·Praesent·euismod·nunc·eu·purus.·Donec·bibendum·quam·in·tellus.·Nullam·cursus·pulvinar·lectus.·Donec·et·mi.·Nam·vulputate·metus·eu·enim.·Vestibulum·pellentesque·felis·eu·massa.

\end{document}

在此处输入图片描述

您甚至可以换行(在标点之后或之前,这并不重要。以下带有换行符的代码将产生相同的输出。

Nulla·malesuada·porttitor·diam.·Donec·felis·erat,·
congue·non,·volutpat·at,·tincidunt·tristique,·libero.·
Vivamus·viverra·fermentum·felis.·Donec·nonummy·
pellentesque·ante.·Phasellus·adipiscing·semper·elit.·
Proin·fermentum·massa·ac·quam.·Sed·diam·turpis,·
molestie·vitae,·placerat·a,·molestie·nec,·leo.·
Maecenas·lacinia.·Nam·ipsum·ligula,·eleifend·at,·
accumsan·nec,·suscipit·a,·ipsum.·Morbi·blandit·
ligula·feugiat·magna.·Nunc·eleifend·consequat·
lorem.·Sed·lacinia·nulla·vitae·enim.·Pellentesque·
tincidunt·purus·vel·magna.·Integer·non·enim.·
Praesent·euismod·nunc·eu·purus.·Donec·bibendum·
quam·in·tellus.·Nullam·cursus·pulvinar·lectus.·
Donec·et·mi.·Nam·vulputate·metus·eu·enim.·
Vestibulum·pellentesque·felis·eu·massa.

相关内容