如何完全跳过 `\item` 而不产生任何副作用?

如何完全跳过 `\item` 而不产生任何副作用?

Ryan Reich 对我的问题做出了精彩的回答仅限物品,他让 LaTeX 忽略它,\item方法是将其设置为 a box,然后不使用该框,从而有效地丢弃它:

...SNIP...
\renewcommand\item[1][]{%
 % The \egroup closes off any \vbox'es from the previously ignored \item.
 % The conditional \bgroup cancels it out when there aren't any.
 \itemIf\bgroup\fi\egroup
 \let\itemIf=\iffalse%\fi
 \advance\itemsSoFar by 1 %
 \onlyitemsset{utility/store tag = {}, utility/verdict/.style = {}, select/\the\itemsSoFar, #1, utility/verdict}%
 \itemIf
  \def\next{\expandafter\itemLaTeX\itemOptions}%
 \else
  % The vbox is set and then discarded, effectively ignoring an entire \item.
  % This inner \itemLaTeX is necessary to avoid a glitch when we ignore the first \item of an itemize that itself contains a nested \itemize.  Don't ask, I don't know.
  \def\next{\setbox0=\vbox\bgroup\itemLaTeX}%
 \fi
 \next
}

...SNIP...

这是可行的,但是有一个不良的副作用,就是推进了相应的 LaTeX 计数器,这可能是好是坏,取决于如何使用onlyitems

在我的例子中,我希望onlyitems表现得好像只有包含的\items在那里,所以这意味着计数器不能前进。由于实现是list-agnostic(它应该适用于enumeraterevnum或者任何其他list\items喜欢定义的),我无法手动设置计数器(我无法知道哪些是重要的),而是需要完全跳过\item,没有副作用。

因此,重复标题,问题是:

我怎样才能跳过\item而不产生任何副作用?

答案1

添加

\let\stepcounter\@gobble

就在\setbox0=\vbox\bgroup和之间\itemLaTeX。这将避免在忽略项目时计数器被踩踏(内部\item使用\refstepcounter,反过来做\stepcounter)。

您必须将和\renewcommand\item[1][]{...}之间括起来。\makeatletter\makeatother

相关内容