我有一份包含一组段落的文档,其中每个段落都有一个标签/标题。
我需要一种不寻常的行为:
- 标签应与段落第一行位于同一行
- 段落应该缩进,但标签应该不是缩进(即放置在段落左侧一定距离)
- 如果标签大于缩进,则应该稍微碰到第一行以适应(并且两者之间应该有一个空格)
到目前为止,我正在使用描述列表环境执行此操作:
\begin{description}[leftmargin=3em,style=nextline,itemsep=1ex]
这确实很有效,但是有一个问题:我无法使用wrapfig
,因为wrapfig
不能使用列表。
有没有一种方法可以在没有环境的情况下做同样的事情,description
以便我wrapfig
也可以使用?
答案1
下面定义了一个非常简单的fakedescription
环境(可以进一步增强它,而不是定义间距的自定义长度,而是选择由 LaTeX(或enumitem
)为真实description
环境定义的间距)。它应该与wrapfig
(下面有一个使用的小演示wrapfig
,但我没有做任何广泛的测试)。
\documentclass[]{article}
\usepackage{wrapfig}
\makeatletter
\newlength\fakedescription@indent
\newlength\fakedescription@labelsep
\newlength\fakedescription@itemsep
\newlength\fakedescription@topsep
\newcommand\fakeitem[1][]
{%
\GenericError{}
{Error: Usage of \string\fakeitem\space outside of fakedescription}
{}
{}%
}
\AtBeginDocument
{% setting AtBeginDocument since earlier we can't rely on em being correct
\fakedescription@indent=3em
\fakedescription@labelsep=1em
\fakedescription@itemsep=\smallskipamount
\fakedescription@topsep=\medskipamount
}
\newenvironment{fakedescription}
{%
\par
\vspace\fakedescription@topsep
\renewcommand\fakeitem[1][]
{%
\par
\vskip\fakedescription@itemsep
\noindent\kern-\fakedescription@indent
\sbox0{\textbf{##1}}%
\ifdim\wd0>\dimexpr
\fakedescription@indent-\fakedescription@labelsep\relax
\usebox0\kern\fakedescription@labelsep
\else
\makebox[\fakedescription@indent][l]{\usebox0}%
\fi
\ignorespaces
}%
\advance\leftskip\fakedescription@indent
\ignorespaces
}
{%
\par
\vspace\fakedescription@topsep
\@endpetrue
}
\makeatother
\usepackage[]{graphicx}
\usepackage{duckuments}
\begin{document}
\blindduck[-]
\begin{wrapfigure}{r}[0pt]{5cm}
\includegraphics[width=5cm]{example-image-duck}
\end{wrapfigure}
\begin{fakedescription}
\fakeitem[A] the first one letter of the Latin alphabet
\fakeitem[AB] the first two letters of the Latin alphabet
\fakeitem[ABC] the first three letters of the Latin alphabet
\fakeitem[ABCD] the first four letters of the Latin alphabet
\fakeitem[ABCDE] the first five letters of the Latin alphabet
\fakeitem[story] \blindduck[-]
\end{fakedescription}
\blindduck[-]
\end{document}