我想在段落的第一行放置一些右对齐的文本,并让其余文本环绕它,如下所示:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed {right-aligned text}
do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat...
我怎样才能实现这个目标?
答案1
使用wrapfig
包裹:
\documentclass[12pt]{article}
\usepackage[showframe]{geometry}% http://ctan.org/pkg/geometry
\usepackage{wrapfig}% http://ctan.org/pkg/wrapfig
\usepackage{xparse}% http://ctan.org/pkg/xparse
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\NewDocumentCommand{\rtext}{O{1} O{5em} m}{%
\begin{wrapfigure}[#1]{r}[0pt]{#2}%
\begin{minipage}{#2}\raggedleft#3\end{minipage}%
\end{wrapfigure}%
}
\rtext[5][50pt]{Here is some right-aligned text}%
\lipsum[1]
\end{document}
上述代码规定\rtext[<lines>][<width>]{<stuff>}
,排版<stuff>
右对齐(实际上是\raggedleft
),<lines>
行宽为<width>
(默认为1
行宽为5em
,但可以更改)。<lines>
和<width>
都是可选参数。
geometry
showframe
与显示文本对齐方式的选项一起使用。lipsum
提供虚拟文本,同时xparse
提供了一种指定混合可选/强制参数(和默认值)的简单方法。
答案2
另请参阅在段落第一行的文本片段周围浮动右对齐文本enumerate
。Wrapfig与配合使用效果不佳,itemize
而\parshape
双向布局(例如\luatextextdir
和\beginR
)都可以处理这种情况。