左对齐的文本强制右对齐

左对齐的文本强制右对齐

我正在创建一个信头或其他标题,用于发票顶部等,并且遇到一个元素的间距问题:

\documentclass[12pt]{article}
\usepackage{changepage}
\setlength{\parindent}{0pt}

\begin{document}

\begin{center}
    \Large \bfseries My Name
\end{center}

\hrulefill

\begin{minipage}[t]{0.5\textwidth}
My street \\
And my city, zip
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\raggedleft
(my) phone-number \\
[email protected]
\end{minipage}

\vspace{0.5in}

\begin{minipage}[t]{0.5\textwidth}
\textbf{To:}
  \begin{adjustwidth}{1em}{}
    The Person \\
    His street \\
    His city, zip
  \end{adjustwidth}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
  \textbf{Date:}

  \hspace*{1em}\today
\end{minipage}

\end{document}

第一次尝试

我希望“日期”块与页面右侧对齐,就像其上方的电话和电子邮件块一样。我尝试的第一个解决方案是添加\raggedleft一些间距调整到最后一个minipage

\begin{minipage}[t]{0.5\textwidth}
  \raggedleft
  \textbf{Date:}\phantom{\today}\hspace*{-1.4em}

  \hspace*{1em}\today
\end{minipage}

第二次尝试--快完成了!

几乎有效:不幸的是,我无法设计一种方法来确保“日期:”的开始和“一月......”的开始之间的水平距离正好是 1em,因为我能够在“到”块中指定。

我脑子里想到的解决方案如下:

\hfill % or \hspace{\fill}: which is preferred here?
\begin{minipage}[t]{\the-exact-width-of-the-date-block}
  Date:

  \hspace*{1em}\today
\end{minipage}

但是,我想不出让 TeX 帮我计算宽度的方法——也许是某种可以强制移到左边的多行框?

答案1

我会将各个块分别设置tabular

在此处输入图片描述

\documentclass{article}
\setlength{\parindent}{0pt}

\begin{document}

\begin{center}
    \Large \bfseries My Name
\end{center}

\hrulefill

\begin{tabular}[t]{@{}l}
  My street \\
  And my city, zip
\end{tabular}
\hfill
\begin{tabular}[t]{r@{}}
  (my) phone-number \\
  [email protected]
\end{tabular}

\vspace{0.5in}

\begin{tabular}[t]{@{\hspace{1em}}l}
  \hspace{-1em}\textbf{To:} \\
      The Person \\
      His street \\
      His city, zip
\end{tabular}
\hfill
\begin{tabular}[t]{@{\hspace{1em}}l@{}}
  \hspace{-1em}\textbf{Date:} \\
  \today
\end{tabular}

\end{document}

答案2

您可以简单地使用varwidth来自同一包的 而不是minipagevarwidth环境与 类似minipage,但其宽度由其内容决定。

因此,您只需加载包varwidthminipage用替换,并在连续的 s 之间varwidth添加即可。\hfillvarwidth

平均能量损失

\documentclass[12pt]{article}
\usepackage{changepage,varwidth}
\setlength{\parindent}{0pt}

\begin{document}

\begin{center}
    \Large \bfseries My Name
\end{center}

\hrulefill

\begin{varwidth}[t]{0.5\textwidth}
My street \\
And my city, zip
\end{varwidth}\hfill
\begin{varwidth}[t]{0.5\textwidth}
\raggedleft
(my) phone-number \\
[email protected]
\end{varwidth}

\vspace{0.5in}

\begin{varwidth}[t]{0.5\textwidth}
\textbf{To:}
  \begin{adjustwidth}{1em}{}
    The Person \\
    His street \\
    His city, zip
  \end{adjustwidth}
\end{varwidth}\hfill
\begin{varwidth}[t]{0.5\textwidth}
  \textbf{Date:}

  \hspace*{1em}\today
\end{varwidth}

\end{document} 

输出

在此处输入图片描述

相关内容