文本块前的水平空间

文本块前的水平空间

所需文本间距

您好,我想在粗体“Lorem Ipsum 1.”后创建一列文本,该文本没有指定的换行符。文本前的这个空间(在图像上用红线和问号标记)的宽度应与“Lorem Ipsum 1”的宽度完全相同。如何在 LaTeX 中实现?

答案1

您可以使用enumitem的描述列表:

在此处输入图片描述

笔记:

  • 这可以正确处理跨越页面边界的文本。
  • 如果您不想在两者之间留空行,只需添加nosep如下选项即可\begin{description}[leftmargin=!, labelwidth=\widthof{\bfseries #1},nosep]
  • 包裹showframe 仅用于显示页边距。实际使用中不需要它。
  • 包裹lipsum仅用于提供虚拟文本。您的文档中也不需要它。

代码:

\documentclass{article}
\usepackage{showframe}
\usepackage{enumitem}
\usepackage{calc}
\usepackage{lipsum}

\newcommand{\MyEntry}[2][]{%
    % #1 = label
    % #2 = content
    \begin{description}[leftmargin=!, labelwidth=\widthof{\bfseries #1}]
        \item [#1] #2
    \end{description}
}%


\begin{document}
\MyEntry[Lorem Ipsum1.]{\lipsum[1]}

\MyEntry[Phasellus elementum 2.]{\lipsum[2]}
\end{document}

答案2

一种变体,也使用description environmentenumitem。我定义了一个sommaire环境(来自描述该类印刷排版的法语术语——我不知道如何用英语翻译它)。此环境采用一个强制参数,即“标题”,以及一个可选参数,即\parindent环境内部的值(默认值为 0em)。我不知道如何将当前字体传递给环境,以便将其用作标题字体(描述默认为罗马粗体),因此我不得不在环境代码中编写字体系列。

我给出了一个包含多个段落和缩进的示例:

\documentclass{article}
\usepackage[utf8]{inputenc} 

\usepackage{enumitem}
\usepackage{lipsum}
\usepackage[showframe, nomarginpar]{geometry}

\newenvironment{sommaire}[2][itemindent=1em]{
\newlength\mymarginwd\settowidth{\mymarginwd}{\bfseries#2\enspace} \setlength\listparindent{1em} \begin{description}[style=sameline, labelindent=0pt, #1, leftmargin=\mymarginwd, font = \sffamily]%
\item[#2]\setlength\parindent{\itemindent}
}%
{\end{description}}

\begin{document}

\sffamily
\vspace*{0.7\textwidth}
\begin{sommaire}{Lorem Ipsum 1.}
\lipsum[1-4]
\end{sommaire}

\end{document} 

在此处输入图片描述

相关内容