如何在 newlfm 中打印日期

如何在 newlfm 中打印日期

我已经用 设置了我的信件,\usepackage{newlfm}并且非常满意,但有一个小细节让我很纠结。我想在标题中打印一些信息,但似乎找不到打印 定义的日期的方法\dateset{}。以下代码可以正常工作:

\documentclass[stdletter]{newlfm}
%%To-address data%%
\nameto{Jane Doe}
\addrto{123 Belch Street\\Belcherville\\USA}
\namefrom{John Doe}
\addrfrom{321 Belch Street\\Belcherville\\USA}
%%Letter setup%%
\dateset{\today}
\Lheader{To:~\printnameto}%
\Cheader{\today}%

\begin{document}

%%Greeting
\closeline{Yours faithfully}
\greetto{Dear Sir or Madam}

%%Letter
\begin{newlfm}

TEXT

\end{newlfm}
\end{document}

但是当我重新定义时\dateset{},标题中的日期不再正确。

\documentclass[stdletter]{newlfm}
%%To-address data%%
\nameto{Jane Doe}
\addrto{123 Belch Street\\Belcherville\\USA}
\namefrom{John Doe}
\addrfrom{321 Belch Street\\Belcherville\\USA}
%%Letter setup%%
\dateset{5 January 2011}
\Lheader{To:~\printnameto}%
\Cheader{\today}%

\begin{document}

%%Greeting
\closeline{Yours faithfully}
\greetto{Dear Sir or Madam}

%%Letter
\begin{newlfm}

TEXT

\end{newlfm}
\end{document}

问题是,有一个命令\printnameto可以打印变量的内容\nameto(我在 中使用过\Lheader{}),但似乎没有命令可以打印 的内容\dateset(我需要\Cheader{})。我知道我可以\Cheader{}手动更改,但最后我想在 letrinfo.tex 文件中设置标题,所以我很感激有一个针对该变量的打印方法,这样我就不必永久更改此文件。

答案1

\dateset将其内容存储在名为的宏中\@xdate,您可以按以下方式使用它:

在此处输入图片描述

\documentclass[stdletter]{newlfm}
%%To-address data%%
\nameto{Jane Doe}
\addrto{123 Belch Street\\Belcherville\\USA}
\namefrom{John Doe}
\addrfrom{321 Belch Street\\Belcherville\\USA}
%%Letter setup%%
\dateset{5 January 2011}
\Lheader{To:~\printnameto}%
\makeatletter
\Cheader{\@xdate}%
\makeatother
\begin{document}

%%Greeting
\closeline{Yours faithfully}
\greetto{Dear Sir or Madam}

%%Letter
\begin{newlfm}

TEXT

\end{newlfm}
\end{document}

@有关宏使用的参考,请参阅做什么\makeatletter\makeatother做什么?


我一直反对使用letter(或其他,包括newlfm)类。它有限制性,因为你往往要在序言中执行很多设置,然后不得不在主文档中调整内容以满足你的需求。鉴于此,这里有一个与你的文档article相匹配的实现:newlfm

在此处输入图片描述

\documentclass{article}

% Page layout content
\usepackage[margin=1in,vmargin=0.75in]{geometry}

% Header content
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}% Clear header/footer
\fancyhead[L]{To: Jane Doe}
\fancyhead[C]{5 January 2011}
\renewcommand{\headrulewidth}{1pt}
\renewcommand{\footrulewidth}{1pt}

% Document body settings
\setlength{\parindent}{0pt}

\begin{document}

\vspace*{2cm}

\hfill
5 January 2011

\bigskip

\hfill
\begin{tabular}{@{}l@{}}
  321 Belch Street \\
  Belcherville \\
  USA
\end{tabular}

\bigskip

\begin{tabular}{@{}l@{}}
  Jane Doe \\
  123 Belcher Street \\
  Belcherville \\
  USA
\end{tabular}

\bigskip

Dear Sir or Madam

\bigskip

TEXT

\bigskip

\hfill
\begin{tabular}{@{}l@{}}
  Yours faithfully \\[5\normalbaselineskip]
  John Doe
\end{tabular}

\end{document}

当然,这可以扩展为包含宏中的内容,供整个文档通用(类似于\addrto\addrfrom\dateset)。但是,目前,我仅展示替代方案。

具体来说,\dateset可以使用isodate或者datetime2管理日期(也许\today在整个文档中更改和使用它)。

相关内容