【问题标题】:Latex Letter: From Address Left aligned乳胶字母:从地址左对齐
【发布时间】:2010-12-21 01:26:46
【问题描述】:

这是我第一次用 Latex 写信。我正在使用字母类。当我使用:

\address{100 From Address \\ City, State \\ Pin}

发件人地址右对齐。有什么办法可以让这个左对齐。我要找的信的格式是:发件人地址左对齐,接着是日期左对齐,接着是收件人地址左对齐,然后是开头和正文,最后是签名左对齐。

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

【问题讨论】:

    标签: latex alignment letter


    【解决方案1】:
    \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 的解决方案可以容纳这些宏。
    【解决方案2】:

    我假设“左对齐”是指您希望地址块位于页面的左边距,因为该块的各个行是左对齐的,但该块位于右边距。

    我发现调整 LaTeX 样式的最佳方法是在定义原始样式的 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 宏会将地址块移动到右侧,但会留下一些额外的间距,因此我也删除了表格环境。

    
    \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}
    

    带来新的风格。

    【讨论】:

    • 我知道这个答案来自很久以前,但要跟进:只是您在上面粘贴的文本(以 \renewcommand* 开头)包含在这个新的“myletter.sty”文件中,或者我是否要复制/粘贴整个“letter.cls”文本,然后简单地编辑包含您粘贴的文本的部分,并保留此编辑上方和下方的所有 letter.cls 部分?
    【解决方案3】:

    答案是使用完整的正楷样式——所有内容都左对齐。在 LaTeX 中,这就是 block.sty,您可能必须安装它。你可以在这里找到它http://www.ctan.org/tex-archive/macros/latex/contrib/block。用法很简单:

    \usepackage{块}

    【讨论】:

    • 2021:LaTeX 在使用 block 包时抱怨未定义的宏 \footline
    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2019-09-14
    • 2020-12-13
    • 2011-05-07
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多