缩进 KOMA-Script 的 addmargin 环境的第一段

缩进 KOMA-Script 的 addmargin 环境的第一段

当我需要临时移动边距时,我经常使用 KOMA-Script 的addmargin环境。但是,它使用列表来完成其工作,并且始终设置\itemindent\z@,这意味着第一段永远不会缩进。这可能是大多数人在大多数情况下想要的行为,但我有时需要缩进。

梅威瑟:

\documentclass{scrartcl}
\usepackage{lipsum}
\usepackage{indentfirst}
\begin{document}
\lipsum[1]

\begin{addmargin}{2cm}
    \lipsum[2-3]
\end{addmargin}

\lipsum[4]
\end{document}

在此处输入图片描述

我有下面的解决方案,它在indentfirst包加载时缩进,否则不会,但我对人们对这个问题的其他解决方案感兴趣,特别是如果它们在环境实例之间更具可配置性。

答案1

此解决方案修补addmargin以检查indentfirst所做的重新定义。如果存在,则将其设置\itemindent\parindent。否则,它将遵循默认行为。

\documentclass{scrartcl}
\usepackage{xpatch}
\usepackage{lipsum}
\usepackage{indentfirst}

\makeatletter
\xpatchcmd{\@addmargin}
{\setlength{\itemindent}{\z@}%
}
{\ifx\@afterindentfalse\@afterindenttrue
    \setlength{\itemindent}{\parindent}%
    \else
    \setlength{\itemindent}{\z@}%
    \fi}
{\typeout{Success patching}}{\typeout{Error patching}}
\makeatother

\begin{document}
\lipsum[1]

\begin{addmargin}{2cm}
    \lipsum[2-3]
\end{addmargin}

\lipsum[4]
\end{document}

在此处输入图片描述

相关内容