信件上的可选地址

信件上的可选地址

我正在尝试添加一个可选的信件地址,可以通过将其定义为 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}

我删除了上面最小示例中所有不必要的内容。

相关内容