LaTeX信函:发件地址左对齐

6
这是我第一次使用Latex写信,我正在使用letter类。当我使用:
\address{100 From Address \\ City, State \\ Pin}

发件人地址变为右对齐。有没有办法使其左对齐。我想要的信件格式是: 发件人地址左对齐,接着日期左对齐,然后收件人地址左对齐,再接着是开头和正文,最后签名左对齐。

我使用了\longindentation=0pt使签名左对齐,其余项目都正确对齐 - 只有发件人地址是右对齐的。

3个回答

8

1
2021年:使用“block”包时,LaTeX会抱怨未定义的宏“\footline”。 - Alan

6
\makeatletter
\def\opening#1{\ifx\@empty\fromaddress
  \thispagestyle{firstpage}%
    {\raggedleft\@date\par}%
  \else  % home address
    \thispagestyle{empty}%
    {\noindent\let\\\cr\halign{##\hfil\cr\ignorespaces
      \fromaddress \cr\noalign{\kern 2\parskip}%
      \@date\cr}\par}%
  \fi
  \vspace{2\parskip}%
  {\raggedright \toname \\ \toaddress \par}%
  \vspace{2\parskip}%
  #1\par\nobreak}
\makeatother

如果您在地址中使用某些宏,此方法将无法正常工作。失败的宏示例包括 texttturlhrefnolinkurl。@Tommy McGuire 的解决方案可以适应这些宏。 - Nicolas Dudebout

4
我假设你所说的“左对齐”是指你希望地址块位于页面的左边距,因为该块的各行都是左对齐的,但该块却位于右边距。
我发现调整LaTeX样式的最佳方法是找到原始样式定义的位置,将其复制到样式文件中并进行微调。在这种情况下,原始源代码是letter.cls文件,通过查找\address宏,我找到了地址格式,然后找到了\fromaddress宏,再到\opening宏。在原始文件中,它是这样定义的:

\newcommand*{\opening}[1]{\ifx\@empty\fromaddress
  \thispagestyle{firstpage}%
    {\raggedleft\@date\par}%
  \else  % home address
    \thispagestyle{empty}%
    {\raggedleft\begin{tabular}{l@{}}\ignorespaces
      \fromaddress \\*[2\parskip]%
      \@date \end{tabular}\par}%
  \fi
  \vspace{2\parskip}%
  {\raggedright \toname \\ \toaddress \par}%
  \vspace{2\parskip}%
  #1\par\nobreak}

移除\raggedleft宏将地址块移动到右侧,但是留下了一些额外的间距,因此我也删除了tabular环境。

\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
  \thispagestyle{firstpage}%
    {\@date\par}%
  \else  % home address
    \thispagestyle{empty}%
    \ignorespaces%
      \fromaddress \\*[2\parskip]%
      \@date \par%
  \fi
  \vspace{2\parskip}%
  {\raggedright \toname \\ \toaddress \par}%
  \vspace{2\parskip}%
  #1\par\nobreak}

这个\renewcommand调用需要放在一个.sty样式文件中,因为它使用了包含@字符的宏。(我刚看到了Alexey Malistov的答案;另一个选择是使用\makeatletter和\makeatother宏。)


\usepackage{myletter}

为了引入新风格。

我知道这个答案是很久以前的,但是为了跟进一下:新的“myletter.sty”文件中是否只包含你上面粘贴的文本(以\renewcommand*开头),还是我需要复制/粘贴整个“letter.cls”文本,并简单地编辑包含你粘贴文本的部分,同时保留所有其他在此编辑之上和之下的letter.cls部分? - doorguote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接