我正在使用 enumitem 创建一个描述列表。
这些列表有时会嵌套,并且会变得很长。当包含大量描述文本的列表项超出页面范围时,很难分辨当前描述属于哪个项。
在这些情况下,我想在页面顶部添加一条注释,显示前面的项目名称“继续”。
这是 MWE。我已手动输入了文本上标文本;我希望每次列表超过分页符时都能自动完成此操作。
\documentclass{book}
\usepackage{enumitem}
\newlist{Options}{description}{5}
\setlist[Options]{topsep=0.25em plus 0.2em minus 0.1em,
parsep=0.5\baselineskip plus .1\baselineskip minus .1\baselineskip,
itemsep=0.25em plus 0.2em minus 0.1em,
partopsep=0pt,
}
\newcommand*{\Option}[1]{%
\item[#1]\mbox{}\newline%
}
\begin{document}
\begin{Options}
\Option{first item} and explanatory text
\Option{second item} and more text%
\clearpage\textsuperscript{second item \emph{continued}}\newline%
more text describing the second item.
\end{Options}
\end{document}
以下是使用嵌套选项的另一种情况:
\begin{Options}
\Option{first item} and explanatory text
\Option{second item} and more text%
\begin{Options}
\Option{nested option} text
\end{Options}
text that belongs to \emph{second item}\clearpage
more text about \emph{second item}
\end{Options}
答案1
您可以使用阿特别格什包,连同一条语句,在选项开始时\if...
将相等设置为 true,然后在结束时使用设置为 false 。\if...
\setlist
这是 MWE。我使用了与您上面使用的相同的延续消息。
\documentclass{book}
\usepackage{enumitem}
\usepackage{atbegshi}
\newif\ifInOptions\InOptionsfalse
\newlist{Options}{description}{5}
\setlist[Options]{topsep=0.25em plus 0.2em minus 0.1em,
parsep=0.5\baselineskip plus .1\baselineskip minus .1\baselineskip,
itemsep=0.25em plus 0.2em minus 0.1em,
partopsep=0pt,before=\InOptionstrue,after=\InOptionsfalse,
}
\let\lastOption\relax
\newcommand*{\Option}[1]{\def\lastOption{#1}% remember the option for continued...
\item[#1]\mbox{}\newline%
}
\AtBeginShipout{\ifInOptions%
\AtBeginShipoutNext{\textsuperscript{\lastOption \emph{continued}}\newline}%
\fi}
\begin{document}
\begin{Options}
\Option{first item} and explanatory text
\Option{second item} and more text%
\clearpage%\textsuperscript{second item \emph{continued}}\newline%
more text describing the second item.
\end{Options}
\end{document}
这甚至似乎可以很好地与嵌套环境配合,因为\ifInOptions
在内隐式设置\begin{group}...\end{group}
。