我已经创建了一个新的内联列表样式enumitem
没有项目符号,并且用中间点分隔每个项目:
\documentclass{article}
\newcommand{\middot}{~\textperiodcentered~}
\usepackage[inline]{enumitem}
\newlist{skills}{itemize*}{1}
\setlist[skills]{label={}, afterlabel={}, itemjoin=\middot}
\begin{document}
\begin{skills}
\item Something
\item Another thing
\item Foobar
\item etc.
\end{skills}
\end{document}
这很好,但是当项目列表超出行宽时,LaTeX 可能会在我的\middot
分隔符上拆分。看起来有点像这样(想象一下我的 ASCII 星号是\textperiodcentered
字符!):
| Something * Another thing * |
| Foobar * etc. |
我可以通过明智地选择每个\item
避免这种情况。然而,更好的是,在这种情况下,LaTeX 会自动用换行符替换悬挂的中间点(适当拉伸该行的字符间距),而无需任何繁琐的手动干预。因此,上面的内容可能看起来像这样(再次发挥您的想象力!):
| Something * Another thing |
| Foobar * etc. |
(项目文本本身换行到下一行的情况是可以的。只是悬挂的中间点看起来不太好看。)
如何才能实现这一目标?
编辑我终于能够重现该问题的一个例子,包括使用\discretionary
@DavidCarlisle 的建议:
\documentclass[a4paper]{article}
\newcommand{\middot}{~\textperiodcentered~}
\usepackage[inline]{enumitem}
\newlist{skills}{itemize*}{1}
\setlist[skills]{label={}, afterlabel={}, itemjoin=\discretionary{}{}{\hbox{\middot}}}
\setlength{\parindent}{0pt}
\begin{document}
\begin{skills}
\item This is
\item a list of things
\item that should hopefully
\item break a line at
\item some point
\item if I just keep adding
\item things
\end{skills}
\end{document}
...产生以下输出:
请注意第一行末尾的悬挂分隔符。虽然可自由选择确实减少了问题的发生频率,但我推测这是因为 (La)TeX 此时不想使用连字符,因此只能使用直线换行符。
答案1
这实际上是一个评论,扩展了 schtandard 的评论。下面是一个示例,显示该代码可以正常工作mode=unboxed
:
\documentclass[a4paper]{article}
\newcommand{\middot}{~\textperiodcentered~}
\usepackage[inline]{enumitem}
\newlist{skills}{itemize*}{1}
\setlist[skills]{label={}, afterlabel={}, mode=unboxed,
itemjoin=\discretionary{}{}{\hbox{\middot}}}
\setlength{\parindent}{0pt}
\begin{document}
\showoutput
\begin{skills}
\item This is
\item a list of things
\item that should hopefully
\item break a line at
\item some point~x
\item if I just keep adding
\item things
\end{skills}
\end{document}
在下面这个盒装示例中,您会得到相同的输出,其中该行是手动扩展的,因此不需要任何\rightskip
:
\documentclass[a4paper]{article}
\newcommand{\middot}{~\textperiodcentered~}
\usepackage[inline]{enumitem}
\newlist{skills}{itemize*}{1}
\setlist[skills]{label={}, afterlabel={},
itemjoin=\discretionary{}{}{\hbox{\middot}}}
\setlength{\parindent}{0pt}
\begin{document}
\showoutput
\begin{skills}
\item This is
\item a list of things
\item that should hopefully
\item break a line at
\item some point~x\kern6pt
\item if I just keep adding
\item things
\end{skills}
\end{document}