很多改变边距的环境(例如 center、quote、来自 KOMA 的 addmargin)在内部使用trivlist
。这有一些缺点,例如,当列表直接位于两个分段命令之间时:
\documentclass{article}
\begin{document}
\section{a section}
%a
\begin{quote}
\subsection*{An important quote}
blalbla
\end{quote}
\end{document}
例如,给出众所周知且令人担心的错误:
! LaTeX Error: Something's wrong--perhaps a missing \item.
因此,我尝试从 trivlist 中提取执行缩进的代码并删除所有与标签相关的代码,并得出以下代码。我的问题是:
是否存在明显的缺陷?
(它看起来很简单,我不知道为什么它还不存在!)
\documentclass{article}
\usepackage{lipsum}
\makeatletter
\newenvironment{indentation}[2][0pt]%#1=right indentation
{\par
\begingroup
\global\advance\@listdepth\@ne
\leftmargin=#2\relax
\rightmargin=#1\relax
\advance\linewidth -\rightmargin\relax
\advance\linewidth -\leftmargin
\advance \@totalleftmargin \leftmargin
\parshape\@ne \@totalleftmargin \linewidth
\@setpar{{\@@par}}}
{\global\advance\@listdepth\m@ne\endgroup\par}
\makeatother
\begin{document}
\section{abc}
\lipsum[1]
\[a=b\]
\begin{itemize}
\item blabla
\end{itemize}
\section{abc}
\begin{indentation}[\leftmargini]{\leftmargini}
\subsection{abc}
\lipsum[1]
\begin{itemize}
\item blub
\begin{enumerate}
\item Does it work?
\end{enumerate}
\end{itemize}
\[a=b\]
\lipsum[2-3]
\begin{indentation}{0pt}
\centering
\lipsum[1]
\end{indentation}
\end{indentation}
\end{document}
编辑
我收回“尚不存在”这句话。我刚刚在 CTAN 上发现http://www.ctan.org/tex-archive/macros/latex209/contrib/misc/indent.sty,它包含几乎相同的定义(甚至名称相同)。唯一的区别是我的代码发生了变化,\@listdepth
因为我想保留嵌套列表的缩进关系。
答案1
如果您从代码的第 4 行删除 %,错误就会消失。 \section 总是必须包含一些文本。