缩进由 \newenvironment 定义的问题描述

缩进由 \newenvironment 定义的问题描述

我无法弄清楚如何在自定义环境中缩进文本

\newenvironment{problem}[2][Problem]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}\hskip \labelsep {\bfseries #2.}]}{\end{trivlist}}

目前,每个问题的文字描述都没有缩进。我希望实现的是,每行新文字都与此图所示的红色虚线“对齐”。

是否有一个干净的方法来修改代码以实现这一点? 在此处输入图片描述

为了说明另一个例子,我希望使Problem环境具有类似于环境的缩进功能subsection在此处输入图片描述

答案1

您可以使用标准list环境。

\documentclass{article}
\usepackage{lipsum}

\newlength{\problemmargin}
\newenvironment{problem}[2][Problem]
 {%
  \settowidth{\problemmargin}{\hspace{\labelsep}\bfseries #1 #2.}%
  \begin{list}{}{\leftmargin=\problemmargin \labelwidth=\leftmargin}
  \item[\bfseries #1 #2.]%
 }
 {\end{list}}

\begin{document}

\lipsum[3]

\begin{problem}{21}
\lipsum[1][1-4]
\end{problem}

\lipsum[4]

\begin{problem}{22}
Solve the following equations
\begin{enumerate}
\item A
\item B
\item C
\end{enumerate}
and check the values.
\end{problem}

\lipsum[4]

\end{document}

在此处输入图片描述

答案2

以下是基于description环境使用`enumitem 工具的解决方案。如您所见,它跨页面中断:

\documentclass{book}
\usepackage{enumitem}
\setlength\parindent{1em}
\newlength{\descrwidth}
\newenvironment{problem}[2][Problem]%
{\settowidth{\descrwidth}{\textbf{#1 #2}\hspace*{2\labelsep}}\begin{description}[font=\bfseries, labelindent=\labelsep, leftmargin =\descrwidth]
\item[#1\hspace*{ \labelsep}#2.]}%
{\end{description}}%

\usepackage{lipsum}
\pagestyle{plain}

\begin{document}

\lipsum[2-6]

\begin{problem}{21}%[noitemsep, labelwidth=\dimexpr\descrwidth, leftmargin =\descrwidth, labelsep=0pt]
\lipsum[11]
\end{problem} 

\lipsum[9]

\end{document} 

在此处输入图片描述

相关内容