带有标题和缩进段落的新环境

带有标题和缩进段落的新环境

我需要创建一个新环境,添加一个带有缩进段落的标题(缩进适用于除标题之外的整个段落)。这是所需的效果:

在此处输入图片描述

到目前为止,我已经想到了这一点。问题是缩进也包括标题:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\newcounter{task}
\newenvironment{task}[1][]{\refstepcounter{task}\par\medskip
{\noindent\textbf{Task~\thetask #1: }}\leftskip=2em\rightskip=2em \itshape}{\par\medskip}
\begin{document}
\blindtext
\begin{task}
\blindtext
\end{task} 
\end{document}

在此处输入图片描述

有什么方法可以将标题从段落缩进中排除?谢谢!

答案1

也许像这样使用枚举项包裹:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{calc}
\usepackage{enumerate}
\usepackage{blindtext}
\newcounter{task}
\renewcommand\thetask{\textbf{Task~\arabic{task}}}
\newenvironment{task}[1][]{%
  \refstepcounter{task}%\par\medskip%
  \enumerate[labelsep=*]\item[\thetask #1:]}
  {\endenumerate}

\begin{document}
  \blindtext
  \begin{task}
  \blindtext
  \end{task}
\end{document}

输出为:

在此处输入图片描述

答案2

只需添加一个\hspace*{-1em}

\documentclass[english]{article}
\usepackage{babel}
\usepackage{blindtext}

\newcounter{task}
\newenvironment{task}[1][]{\refstepcounter{task}\par\medskip
{\noindent\hspace*{-2em}\textbf{Task~\thetask #1: }}\leftskip=2em\rightskip=2em \itshape}{\par\medskip}

\begin{document}

\blindtext
\begin{task}
\blindtext
\end{task}
\blindtext

\end{document} 

在此处输入图片描述

答案3

您可以使用adjustwidth来自changepage将段落文本与边距偏移,并通过以下方式强制特定缩进(负或正)\hspace*

在此处输入图片描述

\documentclass{article}

\usepackage[nopar]{lipsum}
\usepackage{changepage}

\newcounter{task}
\newenvironment{task}[1][]
  {\refstepcounter{task}\par\medskip
   \begin{adjustwidth}{2em}{2em}
      \hspace*{-2em}% Remove 2em indent
      {\bfseries Task~\thetask\if\relax\detokenize{#1}\relax\else{} #1\fi:}% https://tex.stackexchange.com/q/53068/5764
      \space\itshape}
  {\end{adjustwidth}}

\begin{document}

\lipsum[1]
\begin{task}
  \lipsum[2]
\end{task}
\lipsum[3]

\end{document}

或者,通过以下规范获得相同的par图:shape\parshape 2

\newenvironment{task}[1][]
  {\refstepcounter{task}\par\medskip
   \parshape 2 0pt \dimexpr\linewidth-2em\relax 2em \dimexpr\linewidth-4em\relax
    \noindent{\bfseries Task~\thetask\if\relax\detokenize{#1}\relax\else{} #1\fi:}
    \itshape}
  {\par}

相关内容