我已经用 设置了我的信件,\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
在整个文档中更改和使用它)。