You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
6.3 KiB
177 lines
6.3 KiB
%an experimental documentclass for flashcards.
|
|
%Use only with the understanding it may not work at all.
|
|
%More documentation after \endinput
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
\ProvidesClass{flashcard}
|
|
[2000/25/01 document class for flashcards]
|
|
\newcommand\@ptsize{}
|
|
\DeclareOption{a4paper}
|
|
{\setlength\paperheight {297mm}%
|
|
\setlength\paperwidth {210mm}}
|
|
\DeclareOption{letterpaper}
|
|
{\setlength\paperheight {11in}%
|
|
\setlength\paperwidth {8.5in}}
|
|
\DeclareOption{landscape}
|
|
{\setlength\@tempdima {\paperheight}%
|
|
\setlength\paperheight {\paperwidth}%
|
|
\setlength\paperwidth {\@tempdima}}
|
|
\DeclareOption{centering}{\def\flashcardformat{\centering}}
|
|
\DeclareOption{raggedright}{\def\flashcardformat{\raggedright}}
|
|
\DeclareOption{raggedleft}{\def\flashcardformat{\raggedleft}}
|
|
\DeclareOption{justify}{\def\flashcardformat{\relax}}
|
|
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
|
|
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
|
|
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
|
|
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
|
|
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
|
|
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
|
|
\DeclareOption{final}{\setlength\overfullrule{0pt}}
|
|
\ExecuteOptions{10pt,oneside,justify,final}
|
|
\ProcessOptions\relax
|
|
\ifdim\paperwidth=0pt
|
|
\ClassError{Flashcard}{No papersize specified}
|
|
{Please specify one of `a4paper' or `letterpaper' \MessageBreak
|
|
as a option to the documentclass}
|
|
\fi
|
|
\RequirePackage{calc}
|
|
\input{size1\@ptsize.clo}
|
|
\setlength\lineskip{1\p@}
|
|
\setlength\normallineskip{1\p@}
|
|
\renewcommand\baselinestretch{}
|
|
\setlength\parskip{0pt}
|
|
\setlength\parindent{0pt}
|
|
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
|
|
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
|
|
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
|
|
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
|
|
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
|
|
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
|
|
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
|
|
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
|
|
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
|
|
\def\today{\ifcase\month\or
|
|
January\or February\or March\or April\or May\or June\or
|
|
July\or August\or September\or October\or November\or December\fi
|
|
\space\number\day, \number\year}
|
|
\setlength\columnsep{10\p@}
|
|
\setlength\columnseprule{0\p@}
|
|
\interlinepenalty=10000
|
|
\pagestyle{empty}
|
|
\newsavebox\flashcardi
|
|
\newsavebox\flashcardii
|
|
\newsavebox\flashcardiii
|
|
\newsavebox\flashcardiv
|
|
\newsavebox\flashcardv
|
|
\newsavebox\flashcardvi
|
|
\newsavebox\flashcardvii
|
|
\newsavebox\flashcardviii
|
|
\newcounter{flashcard}
|
|
\setcounter{flashcard}{1}
|
|
\newlength\flashcardwidth
|
|
\newlength{\flashcardheight}
|
|
\newlength{\halfflashcardwidth}
|
|
\setlength{\flashcardwidth}{0.5\textwidth-0.5\columnsep-2\fboxrule}
|
|
\setlength{\flashcardheight}{0.25\textheight-2\fboxrule-0.5\columnsep}
|
|
\setlength{\halfflashcardwidth}{0.5\flashcardwidth - 4pt}
|
|
|
|
|
|
\newcommand{\FC@pvbox}[1]{\fboxsep=2pt\fboxrule=0pt\fbox{\vbox{#1}}}
|
|
\newcommand\FC@nopadfbox{\fboxsep=0pt\fbox}
|
|
\newcommand{\flashcardtopic}[1]{\gdef\theflashcardtopic{#1}}
|
|
\flashcardtopic{}
|
|
|
|
\providecommand{\flashcardfrontword}{Question}
|
|
\providecommand{\flashcardbackword}{Answer}
|
|
|
|
\newcommand\flashcard{\@ifnextchar[{\@flashcardx}{\@flashcardx[]}}
|
|
\long\def\@flashcardx[#1]{\@ifnextchar[%
|
|
{\@flashcardy[#1]}
|
|
{\@flashcardy[#1][\theflashcardtopic]}}
|
|
\long\def\@flashcardy[#1][#2]#3#4{%
|
|
\noindent\FC@nopadfbox{%
|
|
\vbox to \flashcardheight{\@parboxrestore
|
|
\setlength{\hsize}{\flashcardwidth-4pt}%
|
|
\hbox to \flashcardwidth{\strut\FC@pvbox{%
|
|
\hsize=\halfflashcardwidth
|
|
\leavevmode\raggedright #1}%
|
|
\hss\vrule\hss
|
|
\FC@pvbox{
|
|
\hsize=\halfflashcardwidth
|
|
\leavevmode\raggedleft #2}}%
|
|
\hrule
|
|
\vss
|
|
\FC@pvbox{\advance\hsize by -4pt\flashcardformat #3}%
|
|
\vss
|
|
\hrule
|
|
\hbox to \flashcardwidth{\strut\hfill\FC@pvbox{\flashcardfrontword}}}}%
|
|
\ifodd\c@flashcard
|
|
\hskip\columnsep
|
|
\else
|
|
\hfill
|
|
\par
|
|
\fi
|
|
\expandafter\setbox\csname flashcard\romannumeral\c@flashcard\endcsname
|
|
\hbox{%
|
|
\FC@nopadfbox{%
|
|
\vbox to \flashcardheight{\@parboxrestore
|
|
\setlength{\hsize}{\flashcardwidth-4pt}%
|
|
\hbox to \flashcardwidth{\strut\FC@pvbox{%
|
|
\hsize=\halfflashcardwidth
|
|
\leavevmode\raggedright #1}%
|
|
\hss\vrule\hss
|
|
\FC@pvbox{%
|
|
\hsize=\halfflashcardwidth
|
|
\leavevmode\raggedleft #2}}%
|
|
\hrule
|
|
\vss
|
|
\FC@pvbox{\advance\hsize by -4pt\flashcardformat #4}%
|
|
\vss
|
|
\hrule
|
|
\hbox to \flashcardwidth{\strut\hfill\FC@pvbox{\flashcardbackword}}}}}%
|
|
\ifnum\value{flashcard}=8\relax
|
|
\vfill
|
|
\pagebreak
|
|
\noindent\hfill\unhbox\flashcardii\hskip\columnsep\unhbox\flashcardi\par
|
|
\noindent\hfill\unhbox\flashcardiv\hskip\columnsep\unhbox\flashcardiii\par
|
|
\noindent\hfill\unhbox\flashcardvi\hskip\columnsep\unhbox\flashcardv\par
|
|
\noindent\hfill\unhbox\flashcardviii\hskip\columnsep\unhbox\flashcardvii\par\par\vfill\pagebreak
|
|
\setcounter{flashcard}{1}%
|
|
\else
|
|
\stepcounter{flashcard}%
|
|
\fi\ignorespaces}
|
|
|
|
\AtEndDocument{\flushflashcards}
|
|
\newcommand\flushflashcards{%
|
|
\loop\ifnum\value{flashcard}>1\@flashcardy[][]{}{}\repeat}
|
|
|
|
%\newcount\@@endlinechar
|
|
%\@@endlinechar=\endlinechar
|
|
\endlinechar=32 %pars must be explicit.
|
|
|
|
\endinput
|
|
|
|
The use of this class is as follows:
|
|
|
|
\documentclass[a4paper]{flashcard}
|
|
\renewcommand{\flashcardformat}{\centering\LARGE}
|
|
\renewcommand{\flashcardbackword}{Solution}
|
|
\flashcardtopic{The Holy Grail}
|
|
|
|
\begin{document}
|
|
\flashcard{Who rescues Sir Galahad from the Castle Anthrax?}{Sir
|
|
Lancelot}
|
|
\flashcard[Ni!]{What is the one word the Knights of Ni can't hear?}{It}
|
|
\flashcard[][Credits]{What once bit the narrator's sister?}{A Moose}
|
|
\flashcard{How does King Arthur defeat the killer rabbit?}{Uses the Holy
|
|
Hand Grenade of Antioch}
|
|
\flashcard{What majority is required by the peasants council for
|
|
external matters?}{2/3}
|
|
\flashcard{What initial punishment is to be given to Zut for her setting
|
|
off the beacon?}{A spanking}
|
|
\flashcard{How much does it cost to `bring out your dead'}{Nine pence}
|
|
\flashcard{Who's last words are recorded in the cave?}{Joseph of
|
|
Arimathea}
|
|
\flashcard{What is the name of the enchanter}{There are some that call
|
|
him Tim}
|
|
\flashcard{What shape has the earth been proven to be?}{Banana shaped}
|
|
\end{document}
|
|
|