将文本右对齐,同时保留一些文本处于不缩进位置

将文本右对齐,同时保留一些文本处于不缩进位置

我想以某种方式将文本右对齐。我尝试了以下方法:

\documentclass{book}

\usepackage[utf8]{inputenc}
\usepackage{lipsum}

\begin{document}

\noindent \textbf{Chapter 1:} \quad \lipsum[1]

\bigbreak

\noindent \textbf{Chapter 2:} \quad \lipsum[2-3]

\bigbreak

\noindent \textbf{Chapter 3:} \quad \lipsum[4]

\bigbreak

\end{document}

我希望整个文本都位于第一个位置,quad除了我想要位于其位置的章节之外noindent

我如何实现这个目标?

答案1

那么使用列表怎么样?

在此处输入图片描述

\documentclass{book}
\usepackage{enumitem}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{showframe} % to show frames

\begin{document}
\begin{enumerate}[label={\textbf{Chapter~\arabic*:}},left=0cm]
\item \lipsum[1]
\item \lipsum[2]
\item[\textbf{Summary:}] \lipsum[3] % <-- supress item label
\end{enumerate}
\end{document}

答案2

大多数方法的关键是测量宽度,这可以使用保存框来完成。请注意,这只\hangindent影响一个段落,这就是我在这里没有使用它的原因。

另一方面,如果您希望它们全部对齐,则需要提前选择宽度。(这很大程度上取决于您是否打算列出超过 9 个章节。)

\documentclass{book}

\usepackage[utf8]{inputenc}
\usepackage{lipsum}

\newcommand{\myindent}[2]% #1=title, #2=text
{\bgroup% use local box register
  \sbox0{\textbf{#1}\quad}% measure width
  \leftskip=\wd0
  \noindent\llap{\usebox0}#2\par
\egroup}

\begin{document}

\myindent{Chapter 1:}{\lipsum[1]}

\bigbreak

\myindent{Chapter 2:}{\lipsum[2-3]}

\bigbreak

\myindent{Chapter 3:}{\lipsum[4]}

\bigbreak

\end{document}

相关内容