编辑

编辑

很多改变边距的环境(例如 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 总是必须包含一些文本。

相关内容