% package file for gcard package: typeset four ``panels'' on a single % sheet so that sheet can be folded twice to produce a greeting card. % Uses \rotatebox command from the graphicx package to invert two % of the panels, and the textpos package to place all four panels on % the page. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{gcard}[2007/08/21 simple greeting card package] \DeclareOption{showboxes}{\PassOptionsToPackage{showboxes}{textpos}} \ProcessOptions \RequirePackage[absolute]{textpos} \RequirePackage{graphicx} \RequirePackage{calc} % main code begins here; each panel will be typeset and stored in % the box register \paneltext \newsavebox{\paneltext} % Define lengths \newlength{\gcguttermargin} \newlength{\gcedgemargin} \newlength{\gctopmargin} \newlength{\gcbottommargin} \newlength{\panelwidth} \newlength{\panelheight} % Set default values for margins. These are the apparent margins after % the card has been folded. The user should set these four to taste. % All four panels use the same margins. % Here, edge and gutter are set the same, as are top and bottom; that's % not required, and it's okay to use 4 different values. \setlength{\gcguttermargin}{0.2 in} % inside of panel \setlength{\gcedgemargin}{\gcguttermargin} % outside \setlength{\gctopmargin}{0.2 in} % top \setlength{\gcbottommargin}{\gctopmargin} % bottom % Define environments for four panels. The two outside ones (frontcover and % backcover) need to be rotated. % These environments place the user's material vertically centered in a minipage % of width \panelwidth and height \panelheight. \newenvironment{frontcover}{% \begin{lrbox}{\paneltext}\begin{minipage}[t][\panelheight][c]{\panelwidth}} {\end{minipage}\end{lrbox} \begin{textblock*}{\panelwidth}(0pt,0pt) \noindent \rotatebox[origin=c]{180}{\usebox{\paneltext}} \end{textblock*}} \newenvironment{backcover}{% \begin{lrbox}{\paneltext}\begin{minipage}[t][\panelheight][c]{\panelwidth}} {\end{minipage}\end{lrbox} \begin{textblock*}{\panelwidth}(\TPHorizModule,0pt) \noindent \rotatebox[origin=c]{180}{\usebox{\paneltext}} \end{textblock*}} \newenvironment{insideleft}{% \begin{textblock*}{\panelwidth}(0pt,\TPVertModule) \noindent \begin{minipage}[t][\panelheight][c]{\panelwidth}} {\end{minipage}\end{textblock*}} \newenvironment{insideright}{% \begin{textblock*}{\panelwidth}(\TPHorizModule,\TPVertModule) \noindent \begin{minipage}[t][\panelheight][c]{\panelwidth}} {\end{minipage}\end{textblock*}} \AtBeginDocument{ % turn off page numbering \pagestyle{empty} % User should have chosen margins by now; compute panel sizes % and ``step sizes'' for placing panels \setlength{\panelwidth}{(\paperwidth-2\gcguttermargin-2\gcedgemargin)/2} \setlength{\panelheight}{(\paperheight-2\gctopmargin-2\gcbottommargin)/2} \setlength{\TPHorizModule}{\panelwidth + 2\gcguttermargin} \setlength{\TPVertModule}{\panelheight + 2\gctopmargin} % Set position of upper left corner of upper left panel (front cover) % with command from textpos package. \textblockorigin{\gcedgemargin}{\gcbottommargin} }