summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/gcard/gcard.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/gcard/gcard.sty')
-rw-r--r--macros/latex/contrib/gcard/gcard.sty83
1 files changed, 83 insertions, 0 deletions
diff --git a/macros/latex/contrib/gcard/gcard.sty b/macros/latex/contrib/gcard/gcard.sty
new file mode 100644
index 0000000000..58dea2e51a
--- /dev/null
+++ b/macros/latex/contrib/gcard/gcard.sty
@@ -0,0 +1,83 @@
+% 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}
+
+}
+