是否可以使用命令插入一些文本除了如果它将被放置在结尾一行?这里有一个简单的 (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}