我想以某种方式将文本右对齐。我尝试了以下方法:
\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}