我想要一个段落,它居中但本身左对齐。有人知道如何实现吗?
(我在一个段落中有文字,每行的文字都比宽度短,但如果我只是在周围放置“flushleft”,它就会出现在页面的左边距)
答案1
可以创建一个独立的环境,它可以一次性完成所有操作——居中和内部对齐元素:
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{environ}% http://ctan.org/pkg/environ
\NewEnviron{centerbox}[1][\linewidth]{% \begin{centerbox}[..] ... \end{centerbox}
\noindent\makebox[\linewidth][c]{%
\begin{minipage}{#1}%
\raggedright% Minipage alignment
\BODY% Typeset body/contents
\end{minipage}%
}
}%
\begin{document}
\lipsum[1]
\begin{centerbox}[0.5\linewidth]
\lipsum[2]
\end{centerbox}
\lipsum[3]
\end{document}
上述代码生成centerbox
环境(使用environ
包裹)。可选参数指定居中框的宽度,默认为\linewidth
。
答案2
另一种方法是利用这次引用包定义一个新环境,其左右边距相等(即“居中”),由一个可选参数控制,其默认值为2em
,\RaggedRight
内容为:
\documentclass{article}
\usepackage{quoting}
\usepackage{ragged2e}
\usepackage{lipsum}
\newenvironment{RCText}[1][2em]
{\begin{quoting}[leftmargin=#1,rightmargin=#1]\RaggedRight}
{\end{quoting}}
\begin{document}
\lipsum[1]
\begin{RCText}[2cm]
\lipsum[1]
\end{RCText}
\lipsum[1]
\end{document}
这里还有另一个选项,这次使用列表环境;同样,可以使用可选参数设置边距:
\documentclass{article}
\usepackage{ragged2e}
\usepackage{lipsum}
\newenvironment{RLCText}[1][2em]
{\begin{list}{}{\setlength\leftmargin{#1}\setlength\rightmargin{#1}}\item[]\RaggedRight}
{\end{list}}
\begin{document}
\lipsum[1]
\begin{RLCText}[2cm]
\lipsum[1]
\end{RLCText}
\lipsum[1]
\end{document}
两种解决方案都允许在新环境中进行分页。
答案3
\documentclass{article}
\usepackage{lipsum}% just for filler text
\begin{document}
\begin{center}
\parbox{0.5\textwidth}{\raggedright\lipsum[1]}
\end{center}
\end{document}
您可以调整0.5\textwidth
到您喜欢的任何宽度。请注意,文本不会\parbox
分页到新页面。
编辑:使用ragged2e
's \RaggedRight
,正如 Mico 所建议的那样他的回答如果您想在段落中使用连字符,则使用 而不是\raggedright
(就像我做的那样)会很有帮助,这将使段落填充得更均匀。以下是使用和's 的\lipsum[1]
填充文本段落的比较:\raggedright
ragged2e
\RaggedRight
注意\RaggedRight
结果少了一行。(我在它们周围放了方框,以使右侧的空白处更加明显。)
答案4
您可以使用ragged2e
包及其命令\RaggedRight
使行左对齐。要创建一个居中且文本整体宽度小于周围文本的段落,您可以使用center
和minipage
环境。在以下 MWE 中,此环境的默认宽度为 0.6* \textwidth
。
\documentclass{article}
\usepackage{ragged2e,lipsum}
\begin{document}
\begin{center}
\begin{minipage}{0.6\textwidth}
\RaggedRight
\lipsum[1] %% filler-text
\end{minipage}
\end{center}
\lipsum[2] %% more filler-text
\end{document}
附录:如果您需要创建多个居中且右侧不齐的段落,则为centragg
它们创建一个单独的环境(例如)会很有帮助。以下 MWE 说明了如何设置它以及如何使用它。请注意,centragg
环境的默认宽度为0.75\textwidth
,但可以通过指定显式宽度(例如)来覆盖5cm
。除了\RaggedRight
自动调用之外,它还会添加一些额外的段落间距,以防 centragg 环境中一次有多个段落。(传统上,排版为右侧不齐的段落没有特殊的段落缩进。)
\documentclass{article}
\usepackage{ragged2e,lipsum}
\newenvironment{centragg}[1][0.75\textwidth]{%
\begin{center}
\begin{minipage}{#1}
\RaggedRight \setlength{\parskip}{0.5\baselineskip} \noindent\ignorespaces}
{\end{minipage}\end{center}}
\begin{document}
\lipsum[2]
\begin{centragg}
(Default width) \lipsum[2] %% filler-text
\end{centragg}
\begin{centragg}[6cm]
(5 cm wide) \lipsum[10] %% filler-text
\end{centragg}
\lipsum[11] %% more filler-text
\end{document}
这种方法唯一的缺点是,LaTeX 不会跨页面拆分minipage
s(或parbox
es),如果居中段落的长度超过几行,则可能会造成页面过满。