summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/petiteannonce/petiteannonce.cls
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/petiteannonce/petiteannonce.cls')
-rw-r--r--macros/latex/contrib/petiteannonce/petiteannonce.cls308
1 files changed, 308 insertions, 0 deletions
diff --git a/macros/latex/contrib/petiteannonce/petiteannonce.cls b/macros/latex/contrib/petiteannonce/petiteannonce.cls
new file mode 100644
index 0000000000..da246ed761
--- /dev/null
+++ b/macros/latex/contrib/petiteannonce/petiteannonce.cls
@@ -0,0 +1,308 @@
+% %NAME% : Petiteannonce
+% %AUTHOR% : Vincent Bela\"\i che
+% %EMAIL% : vincent.b.1@hotmail.fr
+% %VERSION% : v1.001
+%%
+%% This is file `petiteannonce.cls'.
+%%
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This file is part of the "petiteannonce" package.
+%% This package is distributed under the terms of the LaTeX Project
+%% Public License (LPPL) described in the file lppl.txt.
+%%
+%% Ce fichier fait partie de la distribution du paquetage "petiteannonce".
+%% Ce paquetage est distribué sous les termes de la License Publique
+%% du Projet LaTeX (LPPL) décrite dans le fichier lppl.txt.
+%%
+%
+% ****************************************
+% * PREAMBULE *
+% ****************************************
+%
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{graphicx}
+\RequirePackage{keyval}
+\ProvidesClass{petiteannonce}[2012/04/10 v1.001]
+% Get font sizes
+\makeatletter
+\newcommand\@ptsize{}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+
+
+%\typeout{}
+%% petiteannonce options
+%\DeclareOption{someoption}{do something}
+\ExecuteOptions{10pt}
+
+\newdimen\petiteannonce@margin
+\petiteannonce@margin=1mm
+\define@key{petiteannonce@args}{margin}{\petiteannonce@margin=#1}
+
+\DeclareOption*{%
+ \def\@tempa#1{\setkeys{petiteannonce@args}{#1}}%
+ \expandafter\@tempa\expandafter{\CurrentOption}%
+}
+\ProcessOptions
+\input{size1\@ptsize.clo}
+%
+% ****************************************
+% * POLICES *
+% ****************************************
+%
+\DeclareOldFontCommand{\rm}{\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sl}{\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\it}{\itshape}{\mathit}
+\DeclareOldFontCommand{\sc}{\scshape}{\@nomath\sc}
+\DeclareOldFontCommand{\bf}{\bfseries}{\mathbf}
+\DeclareOldFontCommand{\sf}{\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\ttfamily}{\mathtt}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+
+
+%
+% ****************************************
+% * MISE-EN-PAGE : parametres *
+% ****************************************
+%
+\topmargin =\petiteannonce@margin% marge sup.
+% suppression de l'offset vertical
+\advance\topmargin by -1in
+\headheight 0pt% entete
+\headsep 0mm% sep. d'entete
+\textheight 297mm
+\advance\textheight by -2\petiteannonce@margin% hauteur texte
+\footskip 0mm% sep d'embase
+%
+% total vertical 1+0+295+0=296 mm, reste 1 mm sur A4 = 297 mm.
+%
+\footnotesep 0mm%
+\marginparpush 0mm%
+%
+% marge gauche
+\oddsidemargin =\petiteannonce@margin%
+\evensidemargin =\petiteannonce@margin%
+% suppression de l'offset horizontal
+\advance \oddsidemargin by -1in%
+\advance \evensidemargin by -1in%
+\textwidth 210mm
+\advance\textwidth by -2\petiteannonce@margin%largeur texte
+\marginparsep 0mm% separation note lat\'erale
+\marginparwidth 0mm% largeur note latérale
+%
+% total horizontal 1+208+0+0=209 mm, reste 1 mm sur A4 = 210 mm.
+%
+\skip\footins 4mm plus 2pt minus 4pt%
+\pagestyle{empty}
+
+% objects for keyval-ed arguments
+\newcount \petiteannonce@cols
+\newcount \petiteannonce@count
+\newcount \petiteannonce@skip
+\newdimen \petiteannonce@cutvspace
+\newdimen \petiteannonce@telcolsep % separation between telephone columns
+\newdimen \petiteannonce@telrulewidth
+\newdimen \petiteannonce@telvspace % space before and after telephone number
+\newdimen \petiteannonce@texthspace % space before and after text
+\newdimen \petiteannonce@textvspace % space above and below text
+\newdimen \petiteannonce@frame@width
+\newdimen \petiteannonce@width
+\newdimen \petiteannonce@this@textwidth
+% ============================================================================
+% Define keys and their default values
+% ============================================================================
+\define@key{petiteannonce}{cols}[1]{%
+ \petiteannonce@cols=#1\relax
+ \petiteannonce@frame@width=\textwidth
+ \divide\petiteannonce@frame@width by \petiteannonce@cols
+ \petiteannonce@width=\petiteannonce@frame@width
+ \advance\petiteannonce@width by -2\fboxrule
+ \advance\petiteannonce@width by -2\fboxsep
+}
+\define@key{petiteannonce}{count}[1]{\petiteannonce@count=#1}
+\define@key{petiteannonce}{cutvspace}[10pt]{\petiteannonce@cutvspace=#1}
+\define@key{petiteannonce}{skip}[0]{\petiteannonce@skip=#1}
+\define@key{petiteannonce}{telcolsep}[10pt]{\petiteannonce@telcolsep=#1}
+\define@key{petiteannonce}{telrulewidth}[0.5pt]{\petiteannonce@telrulewidth=#1}
+\define@key{petiteannonce}{telvspace}[10pt]{\petiteannonce@telvspace=#1}
+\define@key{petiteannonce}{textvspace}[10pt]{\petiteannonce@textvspace=#1}
+\define@key{petiteannonce}{texthspace}[20pt]{\petiteannonce@texthspace=#1}
+\define@key{petiteannonce}{width}[\textwidth]{\petiteannonce@frame@width=#1\relax
+ \petiteannonce@width=\petiteannonce@frame@width
+ \advance\petiteannonce@width by -2\fboxrule
+ \advance\petiteannonce@width by -2\fboxsep
+}
+% other objects for dimensions
+\newcount \petiteannonce@telcount@temp
+\newdimen \petiteannonce@half@colsep@worule % without rule
+\newdimen \petiteannonce@telheight% width of telephone number when horizontal + hspace
+\newdimen \petiteannonce@telwidth % total = height + depth of telephone number when horizontal
+\newdimen \petiteannonce@telwidth@temp
+\newdimen \petiteannonce@textwidth
+\newdimen \petiteannonce@width@min@colsep % width reduced by column separator.
+% counters for counting telephone number strips
+\newcount \petiteannonce@telcount
+\newcount \petiteannonce@telcount@minone % same as above minus 1
+% counters for counting petiteannonce
+\newcount \petiteannonce@count@temp
+\newcount \petiteannonce@col@temp
+% boxes
+\newsavebox{\petiteannonce@telbox}
+\newsavebox{\petiteannonce@box}
+\newsavebox{\petiteannonce@tel}
+
+% ==============================================================================
+% The \petiteannonce command:
+%
+% Arg 1 = Telephone number
+% Arg 2 = Advertisement text
+% Arg 3 (optional) = Option keys
+% ==============================================================================
+\newcommand\petiteannonce[3][]{%
+ % Omitting keyed arguments is same as setting them to their default values
+ \KV@petiteannonce@cols@default{}%
+ \KV@petiteannonce@count@default{}%
+ \KV@petiteannonce@cutvspace@default{}%
+ \KV@petiteannonce@skip@default{}%
+ \KV@petiteannonce@telcolsep@default{}%
+ \KV@petiteannonce@telrulewidth@default{}%
+ \KV@petiteannonce@telvspace@default{}%
+ \KV@petiteannonce@texthspace@default{}%
+ \KV@petiteannonce@textvspace@default{}%
+ \KV@petiteannonce@width@default{}%
+ % parse keyed arguments
+ \setkeys{petiteannonce}{#1}%
+ % consistency checks
+ \ifnum\petiteannonce@cols<1\relax%
+ \ClassError{petiteannonce}%
+ {non positive cols key value}%
+ {The value of key cols shall be positive;\MessageBreak
+ cols value will be forced to 1.}%
+ \petiteannonce@cols=1
+ \fi%
+ % consistency check is To Be Compeleted
+ \petiteannonce@width@min@colsep=\petiteannonce@width%
+ \advance\petiteannonce@width@min@colsep by -\petiteannonce@telcolsep%
+ % compute half values and other temporary dimensions and counters
+ \petiteannonce@textwidth=\petiteannonce@width%
+ \advance\petiteannonce@textwidth by -\petiteannonce@texthspace%
+ \petiteannonce@half@colsep@worule=0.5\petiteannonce@telcolsep%
+ \advance\petiteannonce@half@colsep@worule by -\petiteannonce@telrulewidth%
+ %
+ \sbox{\petiteannonce@tel}{\mbox{#2}}%
+ \def\petiteannonce@text{%
+ \hspace{0.5\petiteannonce@texthspace}%
+ \begin{minipage}{\petiteannonce@textwidth}%
+ #3%
+ \end{minipage}%
+ \hspace{0.5\petiteannonce@texthspace}%
+ }%
+ % compute tel dimension
+ % ------------------------------
+ %
+ % tel-width = total height+depth when looked at horizontally
+ % this is a first approximate that is going to be refined later on
+ \settoheight{\petiteannonce@telwidth}{\usebox{\petiteannonce@tel}}%
+ \settodepth{\petiteannonce@telwidth@temp}{\usebox{\petiteannonce@tel}}%
+ \advance\petiteannonce@telwidth by \petiteannonce@telwidth@temp%
+ % tel-height = width when looked at horizontally + some vspace
+ \settowidth{\petiteannonce@telheight}{\usebox{\petiteannonce@tel}}
+ \advance\petiteannonce@telheight by \petiteannonce@telvspace
+ % compute into \petiteannonce@telwidth@temp the number of columns (as a real number)
+ \advance\petiteannonce@telwidth by \petiteannonce@telcolsep
+ \petiteannonce@telwidth@temp=\petiteannonce@width%
+ %\advance\petiteannonce@telwidth@temp by \petiteannonce@telcolsep
+ \divide\petiteannonce@telwidth@temp by \petiteannonce@telwidth
+ \petiteannonce@telcount=\petiteannonce@telwidth@temp % floor
+ % column count - 1
+ \petiteannonce@telcount@minone=\petiteannonce@telcount
+ \advance\petiteannonce@telcount@minone by -1
+ % refine tel width now
+ \petiteannonce@telwidth@temp=\petiteannonce@telcolsep
+ \multiply\petiteannonce@telwidth@temp by \petiteannonce@telcount
+ \petiteannonce@telwidth=\petiteannonce@width
+ \advance\petiteannonce@telwidth by - \petiteannonce@telwidth@temp
+ \divide\petiteannonce@telwidth by \petiteannonce@telcount
+ % save the telephone into a box
+ \savebox{\petiteannonce@telbox}[\petiteannonce@telwidth]{%
+ \rotatebox{90}{%
+ \hspace{0.5\petiteannonce@telvspace}\usebox{\petiteannonce@tel}\hspace{0.5\petiteannonce@telvspace}%
+ }%
+ }
+ % define the row of repeated telephone number
+ % -----------------------------------------------
+ \def\petiteannonce@telrow
+ {%
+ \makebox[\petiteannonce@width]{%
+ \hspace{0.5\petiteannonce@telcolsep}%
+ \usebox{\petiteannonce@telbox}%
+ \petiteannonce@telcount@temp=\petiteannonce@telcount%
+ \loop%
+ \hspace\petiteannonce@half@colsep@worule%
+ \vrule width\petiteannonce@telrulewidth height\petiteannonce@telheight%
+ \hspace\petiteannonce@half@colsep@worule%
+ \usebox{\petiteannonce@telbox}%
+ \advance\petiteannonce@telcount@temp by -1%
+ \ifnum\petiteannonce@telcount@temp>2\repeat\relax%
+ \hspace{0.5\petiteannonce@telcolsep}%
+ }%
+ }%
+ % now make one petiteannonce
+ \savebox{\petiteannonce@box}[\petiteannonce@frame@width]{%
+ \framebox[\petiteannonce@frame@width]{%
+ \begin{minipage}{\petiteannonce@width}%
+ \vspace{0.5\petiteannonce@textvspace}%
+
+ \petiteannonce@this@textwidth=\petiteannonce@textwidth
+ \noindent\petiteannonce@text%
+
+ \vspace{0.5\petiteannonce@textvspace}%
+
+ \noindent \hbox to\petiteannonce@width{\dotfill}%
+
+ \vspace{\petiteannonce@cutvspace}%
+
+ \noindent\petiteannonce@telrow%
+ \end{minipage}%
+ }%
+ }%
+ % now the petiteannonce main loop
+ \petiteannonce@count@temp=\petiteannonce@skip%
+ \petiteannonce@col@temp=1%
+ %
+ \noindent%
+ \loop\ifnum\petiteannonce@count@temp<\petiteannonce@count\relax%
+ \usebox{\petiteannonce@box}%
+ \advance\petiteannonce@count@temp by 1%
+ \advance\petiteannonce@col@temp by 1%
+ \ifnum\petiteannonce@col@temp=\petiteannonce@cols\relax%
+ \newline%
+ \petiteannonce@col@temp=1%
+ \fi%
+ \repeat%
+ }%
+
+\@ifundefined{petiteannoncewidth}{%
+ \def\petiteannoncewidth#1{#1\petiteannonce@this@textwidth}%
+}{%
+ \ClassError{petiteannonce}%
+ {Already defined command petiteannoncewidth}%
+ {Already defined command petiteannoncewidth}%
+}
+
+\@ifundefined{petiteannonceaddtowidth}{%
+ \def\petiteannonceaddtowidth#1{\advance \petiteannonce@this@textwidth by #1\relax}%
+}{%
+ \ClassError{petiteannonce}%
+ {Already defined command petiteannonceaddtowidth}%
+ {Already defined command petiteannonceaddtowidth}%
+}
+
+\makeatother
+%
+%%
+%% End of file `petiteannonce.cls.