From bb2c005f534cf51cdeb8b5067987bb99cec9e33b Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 23 Nov 2007 20:19:20 +0000 Subject: new package flacards (without doc, no source) git-svn-id: svn://tug.org/texlive/trunk@5573 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/flacards/flacards.cls | 183 ++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/flacards/flacards.cls (limited to 'Master/texmf-dist/tex/latex/flacards/flacards.cls') diff --git a/Master/texmf-dist/tex/latex/flacards/flacards.cls b/Master/texmf-dist/tex/latex/flacards/flacards.cls new file mode 100644 index 00000000000..40e89a45c2c --- /dev/null +++ b/Master/texmf-dist/tex/latex/flacards/flacards.cls @@ -0,0 +1,183 @@ +% This file is part of flacards. +% +% Flacards is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% Flacards is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Foobar; if not, write to the Free Software +% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +% +% +% Klasse für Lernkarten +% class for flashcards +% +% Version 0.1 2005/11/16 +% Norbert Stuhrmann +% +% Changelog: +% +% 0.1.1: +% - bug fix: front side content also printed on back side +% - updated examples +% - improved/advanced interface for card layout +% +% 0.1: +% - file creation +% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{flacards}[2005/11/06 Klasse fuer Lernkarten/Class for flashcards] + + +\DeclareOption{frontgrid}{\def\fc@frontgrid{true}} +\DeclareOption{backgrid}{\def\fc@backgrid{true}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions +\LoadClass[twoside]{article} + +%TODO: margin managment +\RequirePackage[noheadfoot, margin=1cm, outer=1cm, inner=1cm]{geometry} + +\pagestyle{empty} + +% TODO: replace +\newcommand*{\fc@strippt}[1]{% + \strip@pt#1}% + +\newcounter{cardno}\setcounter{cardno}{0} +\newcount\cardperpage +\newdimen\cardwidth +\newdimen\cardheight + + +\newcommand{\fc@boxcontent}[2]{% +\parindent=0pt% +{\cardbox{#1}{#2}}% +} + +\newcommand{\cardbox}[2]{% +\vbox{% +\vskip\fboxsep% +\hbox{% +\hskip\fboxsep% +{\advance\cardheight by -2\fboxsep +\vbox to \cardheight {% +\hsize=\cardwidth\advance\hsize by -2\fboxsep% +{\cardinnerbox{#1}{#2}}}% +}\hskip\fboxsep}}% +} + +\newcommand{\cardinnerbox}[2]{% + \sloppy% + %\smash% + {% + \makebox[0pt][l]{\parbox[t]{\cardwidth}{\raggedright\csname #1lhead\endcsname}}\hfill% + \makebox[0pt][c]{\parbox[t]{\cardwidth}{\centering\csname #1chead\endcsname}}\hfill% + \makebox[0pt][r]{\parbox[t]{\cardwidth}{\raggedleft\csname #1rhead\endcsname}}% + }% + \vfill% + {\cardtext{#1}{#2}} + \vfill% + %\smash% + {% + \makebox[0pt][l]{\parbox[b]{\cardwidth}{\raggedright\csname #1lfoot\endcsname}}\hfill% + \makebox[0pt][c]{\parbox[b]{\cardwidth}{\centering\csname #1cfoot\endcsname}}\hfill% + \makebox[0pt][r]{\parbox[b]{\cardwidth}{\raggedleft\csname #1rfoot\endcsname}}% + }% +} + +\newcommand{\cardtext}[2]{% +\centering{\csname cardtextstyle#1\endcsname #2\\}% +} + +\newcommand{\cardtextstylef}{% +\itshape} + +\newcommand{\cardtextstyleb}{% +\itshape} + +%% front +\newsavebox\front +\setbox\front=\vbox{} +% layout +\newcommand{\flhead}{}\newcommand{\fchead}{}\newcommand{\frhead}{} +\newcommand{\flfoot}{}\newcommand{\fcfoot}{}\newcommand{\frfoot}{} + +%% back +\newsavebox\back +\setbox\back=\vbox{} +% layout +\newcommand{\blhead}{}\newcommand{\bchead}{}\newcommand{\brhead}{} +\newcommand{\blfoot}{}\newcommand{\bcfoot}{}\newcommand{\brfoot}{} + +\renewcommand{\frfoot}{\footnotesize \thecardno} +\renewcommand{\brfoot}{\footnotesize \thecardno} + +\newcommand{\pagesetup}[2]{% +\def\rowsperpage{#2}\relax% +\def\colsperpage{#1}\relax% +\cardwidth=\textwidth\relax% +\cardheight=\textheight\relax% +\divide\cardwidth by \colsperpage% +\divide\cardheight by \rowsperpage% +\cardperpage=\colsperpage\relax% +\multiply\cardperpage by \rowsperpage\relax% +} + +\newcommand{\card}[2]{% +\@tempcnta=-\thecardno\divide\@tempcnta by \cardperpage\multiply\@tempcnta by \cardperpage\advance\@tempcnta by \thecardno\relax% +\@tempcntb=\@tempcnta% +\count@=\@tempcnta\relax% +\divide\count@ by \colsperpage\relax% +\@tempcnta=\count@\relax% +\multiply\count@ by \colsperpage\relax% +\advance\@tempcntb by -\count@\relax% +\stepcounter{cardno}% +\unitlength=1pt% +\advance\@tempcnta by 1\relax% +\@tempdima=\cardheight\relax% +\@tempdimb=\cardwidth\relax% +\advance\@tempdima by \fboxrule\relax% +\advance\@tempdimb by \fboxrule\relax% +\multiply\@tempdima by \@tempcnta\relax% +\multiply\@tempdimb by \@tempcntb\relax% +\advance\@tempdima by -\baselineskip\relax% +\setbox\front=\vbox{\unvbox\front% +\noindent\begin{picture}(0,0)% +\put(\fc@strippt\@tempdimb,-\fc@strippt\@tempdima){% +\ifdefined\fc@frontgrid\framebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{f}{#1}} +\else\makebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{f}{#1}}% +\fi +}% +\end{picture}% +}% +\setbox\back=\vbox{\unvbox\back% +\noindent\begin{picture}(0,0)% +\multiply\@tempdimb by -1\relax% +\advance\@tempdimb by \textwidth\relax% +\advance\@tempdimb by -\cardwidth\relax% +\put(\fc@strippt\@tempdimb,-\fc@strippt\@tempdima){% +\ifdefined\fc@backgrid{true}\framebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{b}{#2}}% +\else\makebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{b}{#2}}% +\fi% +}% +\end{picture}% +}% +\count@=\thecardno\divide\count@ by \cardperpage\multiply\count@ by \cardperpage\advance\count@ by -\thecardno\relax% +\ifnum \count@=0\relax% +\noindent\box\front\newpage\box\back\newpage% +\else\fi +} + +\AtEndDocument{\box\front\newpage\box\back} + +% Default layout +\pagesetup{3}{8} -- cgit v1.2.3