使用 Xetex 或 Luatex 在 \dots 或 \ldots 或... 后添加句末空格

使用 Xetex 或 Luatex 在 \dots 或 \ldots 或... 后添加句末空格

我不明白如何输入我们用法语说的悬吊点在句子末尾,像这样...我想创建一个 \endldots 命令。我该如何重新定义 \ldots,使其在盎格鲁撒克逊风格的句末间距方面表现得类似于常规点,即产生更大的跳跃?我试过 \@…\space,但它不起作用(仅适用于 Pdftex)。(注意:在这篇文章中我使用了 Unicode 字符;当然我可以只输入 3 个点,但显然这不是我想要的。)

重要提示:我正在编译Luatex

 % !TEX TS-program = lualatex

\documentclass{article}

\begin{document}

But\@\ldots\space Even though,\@\ldots\space It still doesn't work. Too bad!

But\ldots\@\space Even though,\ldots\@\space It still doesn't work.\@ Too bad!

\end{document}

在此处输入图片描述

编辑

\documentclass{article}

\usepackage{newunicodechar}

\newcommand{\susp}{…\spacefactor\sfcode`.\relax\space}
\renewcommand{\ldots}{…\space}

\begin{document}

But\susp Even though,\susp Now thanks to Egreg and David\ldots it works… like a charm\susp Thank you very much!

\end{document}

在此处输入图片描述

答案1

您可以定义\susp(或任何您喜欢的名称)以在末尾说明所需的空间因子发出一个空格。无论如何,末尾段落的这个空格都会被删除。

\documentclass{article}
%\usepackage[french]{babel}

\usepackage{newunicodechar}

\newcommand{\susp}{\ldots\spacefactor\sfcode`.\relax\space}
\newunicodechar{…}{\susp\ignorespaces}

\begin{document}

\xspaceskip=30pt % to better show the effect

But\susp But… But

BUT\susp But

\frenchspacing

But\susp But… But

BUT\susp But

\end{document}

在此处输入图片描述

使用 pdflatex 我们会得到

在此处输入图片描述

答案2

\@\ldots\space(下面最后一行)

在此处输入图片描述

\documentclass{article}

\begin{document}

\parfillskip=0pt plus .5\textwidth % just to exagerate the space
Aaa\ldots Bbb.

Aaa\ldots\ Bbb.

Aaa\ldots\@ Bbb.

Aaa\ldots\@ Bbb.

Aaa\@\ldots\space Bbb.

\end{document}

在 Unicode TeX 中,问题有所不同,\ldots它解析为字符,因此你可以为该字符赋予相同的空间因子代码 ( \sfcode).

在此处输入图片描述

\documentclass{article}

\sfcode`\…=\sfcode`\.
\begin{document}

\parfillskip=0pt plus .5\textwidth % just to exagerate the space
Aaa\ldots Bbb.

Aaa\ldots\ Bbb.

Aaa{\ldots} Bbb.

Aaa\ldots\space Bbb.

Aaa… Bbb.

\end{document}

相关内容