对于以项目符号分隔的项目列表,如果分隔符是行的第一个或最后一个元素,我希望将其吞掉。也就是说,我想要类似
\renewcommand{\and}{%
\ifnolinebreak% <=== HERE'S THE PROBLEM
{\hfill\textbullet\hfill\xspace}%
\else{}\fi
}
Aa Bb \and Cc Dd \and veryveryverylongE \and Ff Gg \and H
最终
Aa Bb * Cc Dd
veryveryverylongE
Ff Gg * H
我知道\discretionary
可以通过以下方式利用它:
\renewcommand{\and}{\discretionary{}{}{\mbox{~~{\textbullet}~~}}}
这确实能解决问题,但不幸的是,我找不到在自由定义中插入可伸缩跳过的方法。因此,它在对齐模式下看起来很尴尬:
Aa Bb * Cc Dd
veryveryverylongE
Ff Gg * H
有什么想法如何实现吗\ifnolinebreak
?如果重要的话,对于这个项目我使用 LuaLaTeX...
答案1
借用 Marcin Woliński 的代码作为 TeX pearl 发布“如何让换行符处的方框消失”一个人可以
\documentclass{article}
\newcommand{\AND}{\unskip
\hskip 2pt plus 1pt minus 1pt
\cleaders\copy\ANDbox\hskip\wd\ANDbox
\hskip 2pt plus 1pt minus 1pt
\ignorespaces}
\newsavebox\ANDbox
\sbox\ANDbox{\textbullet}
\begin{document}
\settowidth{\dimen0}{someveryverylongword}
\parbox{\dimen0}{
some text \AND some text \AND
someveryverylongword \AND
text \AND text}
\end{document}