我需要创建一个新环境,添加一个带有缩进段落的标题(缩进适用于除标题之外的整个段落)。这是所需的效果:
到目前为止,我已经想到了这一点。问题是缩进也包括标题:
\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}