我正在自动生成一个 LaTeX 文档。输入数据可能会生成空数据,因此在生成的 TeX 源中留下了类似这样的内容:
\begin{itemize}
\end{itemize}
这会导致lualatex
编译时出现抱怨(当然):
放错 \item
有没有办法让它\item
默默地忽略任何空列表(否)?
澄清一下:我确实有很多itemize
澄清一下:文件中一些根据我的数据,可以为空。我知道我可以在生成之前对其进行过滤,但这比潜在的 LaTeX 解决方案更麻烦。
答案1
我正在写另一个答案,因为我觉得我的两个答案所采用的策略从根本上是不同的。
首先,这是一个 hack!您必须将所有itemize
s 替换为newitemize
s。如前所述,如果您要自动输入,则可以预先定义程序以生成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}