插入文本(除了放置在行末的文本)

插入文本(除了放置在行末的文本)

是否可以使用命令插入一些文本除了如果它将被放置在结尾一行?这里有一个简单的 (LuaLaTeX) 示例:

\documentclass{scrartcl}

\usepackage{polyglossia}
\disablehyphenation

\newcommand{\sep}{\unskip\nolinebreak[4]~*~\linebreak[3]}

\begin{document}

\parbox{9cm}{%
Arabel \sep Dusty \sep Octavia \sep Dinny \sep Demetris \sep Thomasa \sep
Cherie \sep Deeann \sep Page \sep Jesse \sep Kitti \sep Ruthie \sep 
Cory \sep Kathleen \sep Kaylyn \sep Chelsie \sep Floe \sep Verna \sep 
Torey \sep Cissy \sep Nora \sep Krissie \sep Hesther \sep Virgie \sep 
Liliane \sep Abagael \sep Joyann \sep Siobhan \sep Pierette%
\parfillskip=0pt\par}

\end{document}

在此处输入图片描述

\nolinebreak[4]和命令\linebreak[3]用于避免在分隔符之前换行,并鼓励在分隔符之后换行(如果分隔的名称包含\sep空格则特别有用)。

我希望在所有名称之间打印分隔符,但如果分隔符位于行尾则不行(换行符充当分隔符)。我尝试使用\discretionary,但没有用,因为该\linebreak命令添加了换行符自由裁量,不在其内。

我使用 LuaLaTeX,因此我愿意接受 LuaTex 解决方案。以下是我希望的结果(尽管可能还有其他换行符)。

在此处输入图片描述

答案1

领导者就像胶水一样,所以在换行符处被丢弃

在此处输入图片描述

\documentclass{scrartcl}

\usepackage{polyglossia}
\disablehyphenation

\newcommand{\sep}{\unskip\space\xleaders\hbox{*}\hskip\fontcharwd\font`\*\relax\space}

\begin{document}

\parbox{9cm}{%
Arabel \sep Dusty \sep Octavia \sep Dinny \sep Demetris \sep Thomasa \sep
Cherie \sep Deeann \sep Page \sep Jesse \sep Kitti \sep Ruthie \sep 
Cory \sep Kathleen \sep Kaylyn \sep Chelsie \sep Floe \sep Verna \sep 
Torey \sep Cissy \sep Nora \sep Krissie \sep Hesther \sep Virgie \sep 
Liliane \sep Abagael \sep Joyann \sep Siobhan \sep Pierette%
\parfillskip=0pt\par}

\end{document}

答案2

构建于https://tex.stackexchange.com/a/44951/4427

\sep如果您愿意,您仍然可以使用(但不能在words环境中)。

\documentclass{scrartcl}

\usepackage{polyglossia}
\disablehyphenation

\newcommand{\sep}{\unskip
  \hskip \fontdimen2\font plus 2\fontdimen2\font minus \fontdimen3\font
  \cleaders\copy\ANDbox\hskip\wd\ANDbox
  \hskip \fontdimen2\font plus 2\fontdimen2\font minus \fontdimen3\font
  \ignorespaces}
\newsavebox\ANDbox
\sbox\ANDbox{*}

\newenvironment{words}[1][\textwidth]
 {\par\addvspace{\topsep}\begin{minipage}{#1}\obeyspaces\activatesep}
 {\parfillskip=0pt\par\end{minipage}\par\addvspace{\topsep}}
\newcommand{\activatesep}{%
  \begingroup\lccode`~=` \lowercase{\endgroup\let~}\sep
}


\begin{document}

\begin{words}[5cm]
Arabel Dusty Octavia Dinny Demetris Thomasa
Cherie Deeann Page Jesse Kitti Ruthie 
Cory Kathleen Kaylyn Chelsie Floe Verna 
Torey Cissy Nora Krissie Hesther Virgie 
Liliane Abagael Joyann Siobhan Pierette
\end{words}

\begin{words}[9cm]
Arabel Dusty Octavia Dinny Demetris Thomasa
Cherie Deeann Page Jesse Kitti Ruthie 
Cory Kathleen Kaylyn Chelsie Floe Verna 
Torey Cissy Nora Krissie Hesther Virgie 
Liliane Abagael Joyann Siobhan Pierette
\end{words}

\begin{words}
Arabel Dusty Octavia Dinny Demetris Thomasa
Cherie Deeann Page Jesse Kitti Ruthie 
Cory Kathleen Kaylyn Chelsie Floe Verna 
Torey Cissy Nora Krissie Hesther Virgie 
Liliane Abagael Joyann Siobhan Pierette
\end{words}

\end{document}

在此处输入图片描述

相关内容