我正在创建一个信头或其他标题,用于发票顶部等,并且遇到一个元素的间距问题:
\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
来自同一包的 而不是minipage
。varwidth
环境与 类似minipage
,但其宽度由其内容决定。
因此,您只需加载包varwidth
,minipage
用替换,并在连续的 s 之间varwidth
添加即可。\hfill
varwidth
平均能量损失
\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}
输出