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(它应该适用于enumerate
,revnum
或者任何其他list
你\items
喜欢定义的),我无法手动设置计数器(我无法知道哪些是重要的),而是需要完全跳过\item
,没有副作用。
因此,重复标题,问题是:
我怎样才能跳过
\item
而不产生任何副作用?
答案1
添加
\let\stepcounter\@gobble
就在\setbox0=\vbox\bgroup
和之间\itemLaTeX
。这将避免在忽略项目时计数器被踩踏(内部\item
使用\refstepcounter
,反过来做\stepcounter
)。
您必须将和\renewcommand\item[1][]{...}
之间括起来。\makeatletter
\makeatother