我正在尝试添加一个可选的信件地址,可以通过将其定义为 true 或 false 来将其添加到信件中。地址无法打印,这有什么原因吗?
\documentclass[letterpaper]{article}
\usepackage{ifthen}
\usepackage{changepage}
\usepackage{everyshi}
\usepackage{atbegshi}
\def\toName{Some Really Important People}
\def\toAddress{Their Address // Some St Some Town.}
\newif\ifAddOrNot
\AddOrNottrue
\usepackage{parskip}
\setlength{\parskip}{0.8\baselineskip}
\pagestyle{empty}
\newsavebox{\startletter}
\makeatletter
\AtBeginDocument{
\ifAddOrNot
\changetext{0pt}{-2in}{1in}{1in}{0pt}%
\sbox{\startletter}{%
\parbox{\linewidth}{%
\bigskip\par
\@date\toName\medskip\par\toAddress}}
\else
\fi
}
\thispagestyle{empty}%
\vspace*{4in}\par
\makeatother
\begin{document}
Some text
\end{document}
答案1
你的条件是绝不打印任何内容是因为您将地址内容存储在盒子使用
\sbox{\startletter}{%
<stuff>
}
但绝不使用盒子形式
\usebox{\startletter}
当然,如果您使用条件放置内容,则无需将内容存储在盒子中。
\documentclass{article}
\def\toName{Some Really Important People}
\def\toAddress{Their Address // Some St Some Town.}
\newif\ifAddOrNot
\AddOrNottrue
\pagestyle{empty}
\makeatletter
\AtBeginDocument{%
\ifAddOrNot
\parbox{\linewidth}{%
\bigskip\par
\@date\toName\medskip\par\toAddress}
\fi
}
\makeatother
\begin{document}
Some text
\end{document}
我删除了上面最小示例中所有不必要的内容。