有没有办法定义一个新命令\noitem
并隐藏其内容,就像我在 MWE 中输入的那样?
\documentclass{article}
\newcommand[2]{\noitem}{\item[]{}\vspace*{-\baselineskip}} % better define this
\begin{document}
\begin{description}
\item[test 1] this line is to appear
\noitem[test 2] this line is to be empty
\end{description}
\end{document}
我希望能够在描述环境中使用两种类型的构造:\noitem
和\item
。\item
众所周知,这是常规的。\noitem
简单的隐藏列表内的文本,而不留下多余的行。的目的\noitem
在某种程度上类似于%
当您想要隐藏部分代码时使用。此外,我希望能够在环境中的其他地方使用它:在开头、中间或结尾。环境内的位置对我来说是未知的,因为这将在其他命令中运行。
问题是如何正确定义\noitem
描述中使用的命令,删除\item[]{}
留下的多余的行?
答案1
这似乎有效,但仅适用于第一级description
环境:如果存在,则不要嵌套它们\noitem
:
\documentclass{article}
\long\def\noitem#1\end{\noitemaux#1\item\end}
\makeatletter
\long\def\noitemaux#1\item#2\end{%
\if\relax\detokenize{#2}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\end}
{\remove@item #2\@nil\end}%
}
\long\def\remove@item#1\item\@nil{\item #1}
\makeatother
\begin{document}
\begin{description}
\noitem[test 0] this line is to be empty
\item[test 1] this line is to appear
\item[test 2] this line is to appear
\noitem[test 3] this line is to be empty
\noitem[test 4] this line is to be empty
\item[test 5] this line is to appear
\noitem[test 6] this line is to be empty
\end{description}
\end{document}