您好,我想在粗体“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 environment
和enumitem
。我定义了一个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}