允许空的 itemize/enumerate/description(无 \item)

允许空的 itemize/enumerate/description(无 \item)

我正在自动生成一个 LaTeX 文档。输入数据可能会生成空数据,因此在生成的 TeX 源中留下了类似这样的内容:

\begin{itemize}

\end{itemize}

这会导致lualatex编译时出现抱怨(当然):

放错 \item

有没有办法让它\item默默地忽略任何空列表(否)?

澄清一下:我确实有很多itemize澄清一下:文件中一些根据我的数据,可以为空。我知道我可以在生成之前对其进行过滤,但这比潜在的 LaTeX 解决方案更麻烦。

答案1

我正在写另一个答案,因为我觉得我的两个答案所采用的策略从根本上是不同的。

首先,这是一个 hack!您必须将所有itemizes 替换为newitemizes。如前所述,如果您要自动输入,则可以预先定义程序以生成newitemize而不是itemize。如果您这样做,那么您的问题几乎可以通过类似以下的方式解决。

\documentclass{article}
\newenvironment{newitemize}{\begin{itemize} \item}{\end{itemize}}

\begin{document}
    \begin{newitemize}

    \end{newitemize}
\end{document}

类似地,您可以为所有列表结构形成新的环境。

答案2

您如何利用item[]这一点来创建一个没有标签的新项目呢?

输出

\documentclass{article}
\begin{document}
  \noindent Our first list:
  \begin{itemize}
    \item First item
    \item Second item
    \item[]
    \item Fourth item
  \end{itemize}
  Our second list:
  \begin{itemize}
    \item[]
  \end{itemize}
  Our third list:   
  \begin{itemize}
    \item First of all
    \item[] Second of all
    \item Thirdly
  \end{itemize}
\end{document}

答案3

如果你没有其他活动列表itemize(或其他列表)——

\documentclass{article}
\renewenvironment{empty}{}{}

\begin{document}
abcd
    \begin{empty} % This list structure was renamed to empty.

    \end{empty}

    \begin{itemize} % This list structure is still active.
        \item
    \end{itemize}
\end{document}

相关内容