Initialisation du projet bclogo
[bclogo.git] / dev / latex / bclogo.sty
diff --git a/dev/latex/bclogo.sty b/dev/latex/bclogo.sty
new file mode 100644 (file)
index 0000000..e7fe269
--- /dev/null
@@ -0,0 +1,329 @@
+\NeedsTeXFormat{LaTeX2e}
+\def\PackageName{bclogo}
+\def\fileversion{v2.26}
+\def\filedate{2011/07/06}
+\ProvidesPackage{bclogo}
+   [\filedate\space\fileversion]
+\RequirePackage{xkeyval,ifthen}
+
+%% Les options globales du package sont au nombre de 2: tikz ou pstricks
+\newif\ifbclogotikz%
+\newif\ifbclogoblur
+\define@key{bclogo.sty}{tikz}[]{\bclogotikztrue}%
+\define@key{bclogo.sty}{pstricks}[]{\bclogotikzfalse}%
+\define@key{bclogo.sty}{blur}[]{\bclogoblurtrue}%
+\newlength{\logowidth}\setlength{\logowidth}{17pt}%
+\ProcessOptionsX%
+
+
+\RequirePackage{graphicx}%
+\ifbclogotikz%
+\RequirePackage{tikz}%
+\usetikzlibrary{shadows}% pour l'ombre
+\usetikzlibrary{decorations.pathmorphing} % pour la barre ondulee
+\else%
+\ifbclogoblur\RequirePackage{pst-blur}\fi%
+\RequirePackage{pstricks}%
+\RequirePackage{pst-grad}%
+\RequirePackage{pst-coil}% pour la barre ondulee
+\fi%
+\edef\Gin@extensions{.mps,\Gin@extensions}
+\RequirePackage{ifpdf}
+\ifpdf\relax\else\DeclareGraphicsRule{mps}{eps}{*}{}\fi
+% les symboles
+% ==============================================================================
+
+% la fleur
+\newcommand\bcfleur{\includegraphics[width=\logowidth]{bc-fleur}}
+% une note (Thomas Labarussias)
+\newcommand\bcnote{\includegraphics[width=\logowidth]{bc-note}}
+% panneau chantier (Jean-Michel Sarlat)
+\newcommand\bcpanchant{\includegraphics[width=\logowidth]{bc-aux-301}}
+% ours
+%\newcommand\bcours{\begingroup\input{bc-ours.tex}\endgroup}
+\newcommand\bcours{\includegraphics[width=\logowidth]{bc-ours}}
+% etoile
+%\newcommand\bcetoile{\begingroup\input{bc-etoile.tex}\endgroup}
+\newcommand\bcetoile{\includegraphics[width=\logowidth]{bc-etoile}}
+% attention
+%\newcommand\bcattention{\begingroup\input{bc-attention.tex}\endgroup}
+\newcommand\bcattention{\includegraphics[width=\logowidth]{bc-attention}}
+% attention P.Fradin
+\newcommand\bctakecare{\includegraphics[width=\logowidth]{bc-takecare}}
+% lampe P.Fradin
+\newcommand\bclampe{\includegraphics[width=\logowidth]{bc-lampe}}
+% coeur
+\newcommand\bccoeur{\includegraphics[width=\logowidth]{bc-coeur}}
+% ornement (tire du site http://openclipart.org )
+\newcommand\bcorne{\includegraphics[width=\logowidth]{bc-orne}}
+% danger (Francois)
+\newcommand\bcdanger{\includegraphics[width=\logowidth]{bc-danger}}
+% smiley bonne humeur (Francois)
+\newcommand\bcsmbh{\includegraphics[width=\logowidth]{bc-smiley-bonnehumeur}}
+% smiley bonne humeur (Francois)
+\newcommand\bcsmmh{\includegraphics[width=\logowidth]{bc-smiley-mauvaisehumeur}}
+% le trefle
+\newcommand\bctrefle{\includegraphics[width=\logowidth]{bc-trefle}}
+% le livre
+\newcommand\bcbook{\includegraphics[width=\logowidth]{bc-book}}
+% point d'interrogation
+\newcommand\bcquestion{\includegraphics[width=\logowidth]{bc-inter}}
+% crayon anne-sophie philippe
+\newcommand\bccrayon{\includegraphics[width=\logowidth]{bc-crayon}}
+% info (thomas labarrussias)
+\newcommand\bcinfo{\includegraphics[width=\logowidth]{bc-info}}
+% plume
+\newcommand\bcplume{\includegraphics[width=\logowidth]{bc-plume}}
+% le pic LaTeX
+\newcommand\bcspadesuit{{\centering \huge $\spadesuit$}}
+% logos Alphonse Capriani
+\newcommand\bcbombe{\includegraphics[width=\logowidth]{bc-bombe}}
+\newcommand\bccube{\includegraphics[width=\logowidth]{bc-cube}}
+\newcommand\bcdallemagne{\includegraphics[width=\logowidth]{bc-dallemagne}}
+\newcommand\bcdautriche{\includegraphics[width=\logowidth]{bc-dautriche}}
+\newcommand\bcdbelgique{\includegraphics[width=\logowidth]{bc-dbelgique}}
+\newcommand\bcdbulgarie{\includegraphics[width=\logowidth]{bc-dbulgarie}}
+\newcommand\bcdfrance{\includegraphics[width=\logowidth]{bc-dfrance}}
+\newcommand\bcditalie{\includegraphics[width=\logowidth]{bc-ditalie}}
+\newcommand\bcdluxembourg{\includegraphics[width=\logowidth]{bc-dluxembourg}}
+\newcommand\bcdpaysbas{\includegraphics[width=\logowidth]{bc-dpaysbas}}
+\newcommand\bcdodecaedre{\includegraphics[width=\logowidth]{bc-dodecaedre}}
+\newcommand\bceclaircie{\includegraphics[width=\logowidth]{bc-eclaircie}}
+\newcommand\bcicosaedre{\includegraphics[width=\logowidth]{bc-icosaedre}}
+\newcommand\bcinterdit{\includegraphics[width=\logowidth]{bc-interdit}}
+\newcommand\bcneige{\includegraphics[width=\logowidth]{bc-neige}}
+\newcommand\bcoctaedre{\includegraphics[width=\logowidth]{bc-octaedre}}
+\newcommand\bcpluie{\includegraphics[width=\logowidth]{bc-pluie}}
+\newcommand\bcpoisson{\includegraphics[width=\logowidth]{bc-poisson}}
+\newcommand\bcsoleil{\includegraphics[width=\logowidth]{bc-soleil}}
+\newcommand\bcstop{\includegraphics[width=\logowidth]{bc-stop}}
+\newcommand\bctetraedre{\includegraphics[width=\logowidth]{bc-tetraedre}}
+\newcommand\bccalendrier{\includegraphics[width=\logowidth]{bc-calendrier}}
+\newcommand\bchorloge{\includegraphics[width=\logowidth]{bc-horloge}}
+\newcommand\bcyin{\includegraphics[width=\logowidth]{bc-yin}}
+\newcommand\bcrosevents{\includegraphics[width=\logowidth]{bc-rosevents}}
+% fin alphonse
+% Vincent Pantaloni route glissante
+\newcommand\bcdz{\includegraphics[width=\logowidth]{bc-dz}}
+% François Pétiard
+\newcommand\bcvelo{\includegraphics[width=\logowidth]{bc-velo}}
+\newcommand\bcoeil{\includegraphics[width=\logowidth]{bc-oeil}}
+\newcommand\bcpeaceandlove{\includegraphics[width=\logowidth]{bc-peaceandlove}}
+\newcommand\bcnucleaire{\includegraphics[width=\logowidth]{bc-nucleaire}}
+\newcommand\bcfemme{\includegraphics[width=\logowidth]{bc-femme}}
+\newcommand\bchomme{\includegraphics[width=\logowidth]{bc-homme}}
+\newcommand\bcloupe{\includegraphics[width=\logowidth]{bc-loupe}}
+\newcommand\bcrecyclage{\includegraphics[width=\logowidth]{bc-recyclage}}
+\newcommand\bcvaletcoeur{\includegraphics[width=\logowidth]{bc-valetcoeur}}
+\newcommand\bccle{\includegraphics[width=\logowidth]{bc-cle}}
+\newcommand\bcclefa{\includegraphics[width=\logowidth]{bc-clefa}}
+\newcommand\bcclesol{\includegraphics[width=\logowidth]{bc-clesol}}
+\newcommand\bcfeujaune{\includegraphics[width=\logowidth]{bc-feujaune}}
+\newcommand\bcfeurouge{\includegraphics[width=\logowidth]{bc-feurouge}}
+\newcommand\bcfeutricolore{\includegraphics[width=\logowidth]{bc-feutricolore}}
+\newcommand\bcfeuvert{\includegraphics[width=\logowidth]{bc-feuvert}}
+\newcommand\bcoutil{\includegraphics[width=\logowidth]{bc-outil}}
+\newcommand\bctrombone{\includegraphics[width=\logowidth]{bc-trombone}}
+% fin François
+% =========================== La fonction listable =============================
+
+\newcommand{\titrebclogo}{Liste des \texttt{bclogo}}
+\newcommand\bccaption[1]{\addcontentsline{bcl}{bclogo}{#1}}
+\newcommand\listofbclogo{\section*{\titrebclogo}\@starttoc{bcl}}
+\newcommand\l@bclogo[2]{\par\noindent #1,~\textit{page~#2}}
+\newcounter{bclogocompteur} % idee de Francois Petiard
+
+% ======================================= les keys =============================
+
+\newlength{\bcval@epBarre} % on definit une longueur : l'epaisseur de la barre en point
+\newlength{\bcval@framesep} % on definit une longueur : l'epaisseur de la marge en point
+\newlength{\bcval@tailleOndu} % on definit une longueur : taille d'une ondulation
+\newlength{\bcval@borderWidth} % on definit une longueur : epaisseur du bord
+\define@key{bclogo}{logo}[\bcfleur]{\def\bcval@logo{#1}}
+\define@key{bclogo}{couleur}[white]{\def\bcval@couleur{#1}}
+\define@key{bclogo}{arrondi}[0]{\def\bcval@arrondi{#1}}
+\define@key{bclogo}{epOmbre}[0.125]{\def\bcval@epOmbre{#1}}
+\define@key{bclogo}{arrondi}[0]{\def\bcval@arrondi{#1}}
+\define@key{bclogo}{couleurOmbre}[black]{\def\bcval@couleurOmbre{#1}}
+\define@key{bclogo}{couleurBarre}[black]{\def\bcval@couleurBarre{#1}}
+\define@key{bclogo}{couleurBord}[black]{\def\bcval@couleurBord{#1}} % modification Philippe Fortemps
+\define@key{bclogo}{imageBarre}[]{\def\bcval@imageBarre{#1}}
+\define@key{bclogo}{motifBarre}[*]{\def\bcval@motifBarre{#1}}
+\define@key{bclogo}{marge}[4]{\setlength{\bcval@framesep}{#1 pt}\ifbclogotikz\else\setlength{\psframesep}{#1 pt}\fi}
+\define@key{bclogo}{sousTitre}[]{\def\bcval@sousTitre{#1}}
+\define@key{bclogo}{epBarre}[1.5]{\setlength{\bcval@epBarre}{#1 pt}}
+\define@key{bclogo}{epBord}[0.8]{\setlength{\bcval@borderWidth}{#1 pt}}%
+\define@key{bclogo}{tailleOndu}[2.5]{\setlength{\bcval@tailleOndu}{#1 pt}}
+\define@boolkey{bclogo}{cadreTitre}[true]{}
+\define@boolkey{bclogo}{noborder}[true]{}
+\define@boolkey{bclogo}{ombre}[true]{}
+\define@boolkey{bclogo}{avecBarre}[true]{}
+\define@boolkey{bclogo}{blur}[true]{}
+\define@choicekey{bclogo}{barre}{none,line,snake,motif,zigzag,imageExt,imageClip, wave}[line]{%
+\ifthenelse{\equal{#1}{none}}{\KV@bclogo@avecBarrefalse}%
+{\def\bc@barre{\@nameuse{bc@barre#1}}}%
+}%
+
+% selection par defaut
+\presetkeys{bclogo}{logo,barre,couleur,arrondi,couleurOmbre,couleurBarre,epOmbre,epBarre,epBord,tailleOndu,ombre=false,cadreTitre=false, avecBarre=true,noborder=false,marge,sousTitre, couleurBord,blur=false}{}%
+
+% les differente commande de barre vertical a gauche
+
+\newcommand{\bc@barreline}{\color{\bcval@couleurBarre}\vrule width \bcval@epBarre}%
+
+\newcommand{\bc@barremotif}{%
+\begin{minipage}{\logowidth}\color{\bcval@couleurBarre}\centering%
+\vbox to \bc@invboxh{\cleaders\vbox{\vss \bcval@motifBarre \vss}\vfill}%
+\end{minipage}}
+
+\newcommand{\bc@barrewave}{%
+\begin{minipage}{\logowidth}\color{\bcval@couleurBarre}\centering%
+\vbox to \bc@invboxh{\cleaders\vbox{\vss $\leftwave\right.$ \vss}\vfill}%
+\end{minipage}}
+
+\newcommand{\bc@barresnake}{%
+\begin{minipage}{\logowidth}\centering
+\ifbclogotikz
+\begin{tikzpicture}[decoration={snake,segment length=2.66\bcval@tailleOndu, amplitude=\bcval@tailleOndu}]
+\draw[decorate,line width=1pt, color=\bcval@couleurBarre](0,\bc@invboxh)--(0,0);\end{tikzpicture}%
+\else
+\psset{unit=1pt}
+\begin{pspicture}(0,0)(0,\bc@invboxh)
+\pszigzag[coilarm=0pt,coilwidth=2\bcval@tailleOndu,linewidth=1pt, linearc=1pt,coilheight=1.33,linecolor=\bcval@couleurBarre](0,\bc@invboxh)(0,0)
+\end{pspicture}%
+\fi
+\end{minipage}}%
+
+\newcommand{\bc@barrezigzag}{%
+\begin{minipage}{\logowidth}\centering
+\ifbclogotikz
+\begin{tikzpicture}[decoration={zigzag,segment length=2.66\bcval@tailleOndu, amplitude=\bcval@tailleOndu}]
+\draw[decorate,line width=1pt,color=\bcval@couleurBarre](0,\bc@invboxh)--(0,0);\end{tikzpicture}%
+\else
+\psset{unit=1pt}
+\begin{pspicture}(0,0)(0,\bc@invboxh)
+\pszigzag[coilarm=0pt,coilwidth=2\bcval@tailleOndu,linewidth=1pt,coilheight=1.33,linecolor=\bcval@couleurBarre](0,\bc@invboxh)(0,0)
+\end{pspicture}%
+\fi
+\end{minipage}}%
+
+\newcommand{\bc@barreimageExt}{% l'image est deformee
+\begin{minipage}{\logowidth}\centering
+\includegraphics[width=\logowidth,height=\bc@invboxh]{\bcval@imageBarre}
+\end{minipage}
+}%
+
+\newcommand{\bc@barreimageClip}{%
+\begin{minipage}{\logowidth}\centering
+\includegraphics[viewport=0 0 \logowidth~ \bc@invboxh,%
+clip=true]{\bcval@imageBarre}%
+\end{minipage}
+}%
+
+
+%======================= Quelques definitions===================================
+% boite globale
+\newsavebox{\bc@envbox}
+% boite interieure la ligne 2 du tableau barre + texte
+\newsavebox{\bc@invbox}
+% pour la hauteur de la boite
+\newlength{\bc@invboxh}\newlength{\bc@invboxd}
+%%% precaution JCC
+\newcommand*\bclogotitre{}
+\newcommand\styleSousTitre[1]{\normalsize \textit{#1}}
+\newcommand\bcStyleTitre[1]{\large \textbf{#1}}
+%======================= L'environnement =======================================
+
+\newenvironment*{bclogo}[2][]{%
+  \setkeys{bclogo}{#1}%on recupere les options
+  % on definit les commandes qui seront utilisees dans la seconde
+  % parti de l'environnement
+  % la commande pour le titre
+  \renewcommand*\bclogotitre{#2}%
+  % La commande pour les coins arrondis
+  \newcommand{\arr}{\bcval@arrondi}%
+  % deux types de titres
+  \ifKV@bclogo@cadreTitre% si cadreTitre = true
+  \newcommand{\structitre}{%
+    \ifbclogotikz% cadreTitre tizk
+    \hfil
+    \begin{tikzpicture}\node[rectangle, thick, top color=red!60!green!40, bottom color=white,draw]{\large #2};%
+    \end{tikzpicture}%
+    \hfil%
+    \else% cadreTitre pstricks
+    \hfil
+    \psframebox[fillstyle=gradient,gradmidpoint=0.2, gradangle=0,gradbegin=red!60!green!40, gradend=white]{\large  #2}%
+    \hfil%
+    \fi%
+  }%
+  \else%sinon cadreTitre = false
+  \newcommand{\structitre}{\bcStyleTitre{#2} \styleSousTitre{\bcval@sousTitre}}%
+  \fi%
+  \begin{lrbox}{\bc@invbox}%
+\begin{minipage}{\dimexpr\linewidth-2\bcval@framesep-2\bcval@borderWidth-\logowidth-\ifKV@bclogo@ombre\bcval@epOmbre cm\else0pt\fi\relax}%
+}%
+{%
+\end{minipage}%
+\end{lrbox}%
+% calcul de la hauteur totale de la boite interieure
+\settoheight{\bc@invboxh}{\usebox{\bc@invbox}}%
+\settodepth{\bc@invboxd}{\usebox{\bc@invbox}}%
+\addtolength{\bc@invboxh}{\bc@invboxd}%
+
+  % on commence la boite interieur ou est le texte et la barre vertical
+  \begin{lrbox}{\bc@envbox}%
+   \begin{tabular}{@{}c@{}p{\dimexpr\linewidth-2\bcval@framesep-2\bcval@borderWidth-\logowidth-\ifKV@bclogo@ombre\bcval@epOmbre cm\else0pt\fi+0pt}@{}}%
+\begin{minipage}{\logowidth}%
+\refstepcounter{bclogocompteur}\bccaption{\bclogotitre}\bcval@logo%
+\end{minipage}%
+&%
+   \ifKV@bclogo@cadreTitre%
+ \begin{minipage}{\dimexpr\linewidth-2\bcval@framesep-\logowidth-\ifKV@bclogo@ombre\bcval@epOmbre cm\else0pt\fi}\structitre\end{minipage}%
+   \else\structitre\fi\tabularnewline%
+   \ifKV@bclogo@avecBarre% si il y a une barre verticale
+   \bc@barre&\usebox{\bc@invbox}%
+   \else\multicolumn{2}{c}{\usebox{\bc@invbox}}%
+   \fi%
+   \end{tabular}%
+  \end{lrbox}%
+% Affiche l'ensemble dans un cadre en couleur.
+  \ifbclogotikz% tikz
+  \par\noindent%
+  \begin{tikzpicture}%
+    \ifKV@bclogo@ombre%cadre ombre
+    \ifKV@bclogo@blur%blur
+    \node[%
+preaction={line width=6,line join=round,opacity=0.1,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+preaction={line width=5,line join=round,opacity=0.15,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+preaction={line width=4,line join=round,opacity=0.2,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+preaction={line width=3,line join=round,opacity=0.3,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+preaction={line width=2,line join=round,opacity=0.4,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+preaction={line width=1,line join=round,opacity=0.5,draw=\bcval@couleurOmbre,transform canvas={xshift=\bcval@epOmbre cm, yshift=-\bcval@epOmbre cm}},%
+general shadow={fill=\bcval@couleurOmbre,opacity=1,shadow xshift=\bcval@epOmbre cm, shadow yshift=-\bcval@epOmbre cm},%
+fill=\bcval@couleur,shape=rectangle,line width=\bcval@borderWidth, inner sep=\bcval@framesep, rounded corners=\arr cm,%
+draw=\ifKV@bclogo@noborder none\else \bcval@couleurBord\fi]{\usebox{\bc@envbox}};%
+    \else%ombre sans blur
+    \node[fill=\bcval@couleur,shape=rectangle,line width=\bcval@borderWidth, inner sep=\bcval@framesep, rounded corners=\arr cm,%
+    general shadow={fill=\bcval@couleurOmbre, shadow xshift=\bcval@epOmbre cm, shadow yshift=-\bcval@epOmbre cm}, draw=\ifKV@bclogo@noborder none\else \bcval@couleurBord\fi]{\usebox{\bc@envbox}};%
+    \fi% fin ifblur
+    \else%cadre sans ombre
+    \node[fill=\bcval@couleur,thick, shape=rectangle,line width=\bcval@borderWidth, inner sep=\bcval@framesep,rounded corners=\arr cm, draw=\ifKV@bclogo@noborder none\else \bcval@couleurBord\fi]{\usebox{\bc@envbox}};%
+    \fi%
+  \end{tikzpicture}%
+  %\par%
+  \else%  pstricks
+  \noindent%
+  \ifKV@bclogo@ombre%cadre ombre
+    \ifKV@bclogo@blur%blur
+    \psframebox[cornersize=absolute,linearc=\dimexpr\arr cm * 2,fillstyle=solid, shadow=true, blur=true, shadowsize=\bcval@epOmbre cm,%
+    shadowcolor=\bcval@couleurOmbre, fillcolor=\bcval@couleur,linewidth=\bcval@borderWidth, linestyle=\ifKV@bclogo@noborder none\else solid\fi,linecolor=\bcval@couleurBord]{\usebox{\bc@envbox}}%
+    \else%
+    \psframebox[cornersize=absolute,linearc=\dimexpr\arr cm * 2,fillstyle=solid, shadow=true, shadowsize=\bcval@epOmbre cm,%
+    shadowcolor=\bcval@couleurOmbre, fillcolor=\bcval@couleur,linewidth=\bcval@borderWidth,linestyle=\ifKV@bclogo@noborder none\else solid\fi,linecolor=\bcval@couleurBord]{\usebox{\bc@envbox}}%
+    \fi%
+  \else%cadre sans ombre
+  \psframebox[cornersize=absolute,linearc=\dimexpr\arr cm * 2  ,fillstyle=solid, fillcolor=\bcval@couleur,linewidth=\bcval@borderWidth, linestyle=\ifKV@bclogo@noborder none\else solid\fi,linecolor=\bcval@couleurBord]{\usebox{\bc@envbox}}%
+  \fi%
+  \fi%fin
+  \ifKV@bclogo@ombre\vspace*{\bcval@epOmbre cm}\fi%
+\hspace*{0pt}\par}%

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.