如何右浮动但左对齐

如何右浮动但左对齐

我正在为一个更大的文档(数百页)排版一封正式信函。我想制作一些类似于letterdocument 类的内容,但实际上没有该类。(我已经投入了大量精力memoir。)

我最纠结的是地址。要求是地址框一直向右浮动,但在框内保持左对齐。

我取得的最好成绩是这个 hack:

\hspace*{0.6\linewidth}
\begin{minipage}{0.4\linewidth}
Joe Bloggs\\
123 ABC Street\\
Townville, Regionia\\
Countrystan\\
Friday, May 29, 2015
\end{minipage}

但结果却不尽人意。

我如何让这个地址浮动到右侧但又使其左对齐?

答案1

将地址放在 a 里面tabular并使用\hfill将其推到右边:

在此处输入图片描述

\documentclass{memoir}
\usepackage{showframe}% Just for this example
\begin{document}

\hfill
\begin{tabular}{l@{}}
  Joe Bloggs \\
  123 ABC Street \\
  Townville, Regionia \\
  Countrystan \\
  Friday, May 29, 2015
\end{tabular}

\end{document}

l使用 移除了左对齐列右侧的列间隙@{}。左侧无需移除,因为内容已从左边距填充。

答案2

此方法基于\parbox[pos][height][contentpos]{width}{text}。声明一个新的长度变量,并使用宏将\lnglen其值设置为输入文本中最长行(即显示日期的最后一行)的宽度。现在,我们可以使用此长度变量来设置 的宽度,以使其与输入文本完全一样宽,这样当使用 刷新到右边缘时,它不会留下任何尾随空格。\settowidth\parbox\hfill

为了向您显示输出的确切宽度,我\vrule在左边缘添加了一个parbox,并且为了更好地比较,我在顶部vrule也包含了@werner 的解决方案。

代码:

\documentclass{memoir}
\usepackage{showframe} % Just for this example
\newlength{\lnglen} % defines a new custom length variable
\settowidth{\lnglen}{Friday, May 29, 2015} % sets variable value to longest line's width
\begin{document}
%
%%%%%% by @werner %%%%%%
\hfill
\vrule               % added by @amar
\begin{tabular}{l@{}}
  Joe Bloggs \\
  123 ABC Street \\
  Townville, Regionia \\
  Countrystan \\
  Friday, May 29, 2015
\end{tabular}
%%%%%% by @werner %%%%%%
%
\vspace*{0.2in}
\hrule
\vspace*{0.2in}
%
%%%%%% by @amar %%%%%%
\hfill % flushes everything to right
\vrule
\parbox[c][][s]{\lnglen}{% sets \parbox of \lnglen width!
  Joe Bloggs \\
  123 ABC Street \\
  Townville, Regionia \\
  Countrystan \\
  Friday, May 29, 2015
}%
%%%%%% by @amar %%%%%%
%
\end{document}

输出:

在此处输入图片描述

相关内容