• Algoritmique et Programmation en LaTeX

    Cette année, j'ai des cours d'algorithmique et de programmation, du coup je fais mes rapports en LaTeX. Un de mes collègues m'a passé de quoi intégrer du code et des algorithmes dans vos rapports, et ce proprement et joliment.

    Listings de Programmation

    Pour afficher des bouts de code, rien de bien compliqué. On commence par charger l'environnement listing.

    \usepackage{listings}
    [code=Latex]
    \usepackage{listings}[/code]

    Ensuite, on le configure un peu.

    \lstset{
    language=C,
    keywordstyle=bfseriesttfamilycolor[rgb]{0,0,1
    },
    identifierstyle=ttfamily,
    commentstyle=color[rgb]{0.133,0.545,0.133},
    stringstyle=ttfamilycolor[rgb]{0.627,0.126,0.941},
    showstringspaces=false,
    basicstyle=footnotesize,
    numberstyle=footnotesize,
    numbers=left,
    stepnumber=1,
    numbersep=10pt,
    tabsize=2,
    breaklines=true,
    breakatwhitespace=false,
    aboveskip={1.5baselineskip},
    columns=fixed,
    upquote=true,
    extendedchars=true,
    }
    [code=Latex]\lstset{
    language=C,
    keywordstyle=bfseriesttfamilycolor[rgb]{0,0,1},
    identifierstyle=ttfamily,
    commentstyle=color[rgb]{0.133,0.545,0.133},
    stringstyle=ttfamilycolor[rgb]{0.627,0.126,0.941},
    showstringspaces=false,
    basicstyle=footnotesize,
    numberstyle=footnotesize,
    numbers=left,
    stepnumber=1,
    numbersep=10pt,
    tabsize=2,
    breaklines=true,
    breakatwhitespace=false,
    aboveskip={1.5baselineskip},
    columns=fixed,
    upquote=true,
    extendedchars=true,
    }
    [/code]

    Rien de bien sorcier dans la config, en bidouillant un peu, on peut obtenir ce que l'on veut (langage, espacements, etc...) Il suffit ensuite d'encapsuler le bout de code qu'on veut afficher dans un environnement lstlisting

    \begin{lstlisting}
     #include <stdio.h>
     int main(){
         printf("Hello World");
         return 0;
     }
     \end{lstlisting}
    [code=C]\begin{lstlisting}
    #include <stdio.h>
    int main(){
        printf("Hello World");
        return 0;
    }
    \end{lstlisting}[/code]

    Algoritmique

    Pour afficher des algorithmes dans vos documents LaTeX, rien de bien compliqué non plus, sauf qu'on va franciser un peu les packages dont on se sert (personnellement je trouve ça affreux, mais on est obligés de faire comme ça en cours :/). On commence par charger les packages.

    \usepackage{algorithm,algorithmic};
    [code=Latex]\usepackage{algorithm,algorithmic};[/code]

    On redéfinit ensuiteles commandes des packages algorithmic et algorithm.

    % Francisation des algorithmes
    \renewcommand{algorithmicrequire} {textbf{textsc{Entrées:}}}
    \renewcommand{algorithmicensure}  {textbf{textsc{Sorties:}}}
    \renewcommand{algorithmicwhile}   {textbf{tant que}}
    \renewcommand{algorithmicdo}      {textbf{faire}}
    \renewcommand{algorithmicendwhile}{textbf{fin tant que}}
    \renewcommand{algorithmicend}     {textbf{fin}}
    \renewcommand{algorithmicif}      {textbf{si}}
    \renewcommand{algorithmicendif}   {textbf{fin si}}
    \renewcommand{algorithmicelse}    {textbf{sinon}}
    \renewcommand{algorithmicthen}    {textbf{alors}}
    \renewcommand{algorithmicfor}     {textbf{pour}}
    \renewcommand{algorithmicforall}  {textbf{pour tout}}
    \renewcommand{algorithmicdo}      {textbf{faire}}
    \renewcommand{algorithmicendfor}  {textbf{fin pour}}
    \renewcommand{algorithmicloop}    {textbf{boucler}}
    \renewcommand{algorithmicendloop} {textbf{fin boucle}}
    \renewcommand{algorithmicrepeat}  {textbf{répéter}}
    \renewcommand{algorithmicuntil}   {textbf{jusqu'à}}
    \renewcommand{algorithmiccomment} {STATE //}
    \newcommand{BEGIN}{STATE fbox{Début}}
    \newcommand{END}{STATE fbox{Fin}}
    \floatname{algorithm}{Algorithme}
    [code=Latex]% Francisation des algorithmes
    \renewcommand{algorithmicrequire} {textbf{textsc{Entrées:}}}
    \renewcommand{algorithmicensure}  {textbf{textsc{Sorties:}}}
    \renewcommand{algorithmicwhile}   {textbf{tant que}}
    \renewcommand{algorithmicdo}      {textbf{faire}}
    \renewcommand{algorithmicendwhile}{textbf{fin tant que}}
    \renewcommand{algorithmicend}     {textbf{fin}}
    \renewcommand{algorithmicif}      {textbf{si}}
    \renewcommand{algorithmicendif}   {textbf{fin si}}
    \renewcommand{algorithmicelse}    {textbf{sinon}}
    \renewcommand{algorithmicthen}    {textbf{alors}}
    \renewcommand{algorithmicfor}     {textbf{pour}}
    \renewcommand{algorithmicforall}  {textbf{pour tout}}
    \renewcommand{algorithmicdo}      {textbf{faire}}
    \renewcommand{algorithmicendfor}  {textbf{fin pour}}
    \renewcommand{algorithmicloop}    {textbf{boucler}}
    \renewcommand{algorithmicendloop} {textbf{fin boucle}}
    \renewcommand{algorithmicrepeat}  {textbf{répéter}}
    \renewcommand{algorithmicuntil}   {textbf{jusqu'à}}
    \renewcommand{algorithmiccomment} {STATE //}
    \newcommand{BEGIN}{STATE fbox{Début}}
    \newcommand{END}{STATE fbox{Fin}}
    \floatname{algorithm}{Algorithme}[/code]

    Pour intégrer un algo dans son document LaTeX, il ne reste plus qu'à faire comme ceci :

    \begin{algorithm}
      \caption{Algo de test}
      \begin{algorithmic}
        \require entiers a, b
        \ensure entier d
        \begin
          \state d $leftarrow (a+b)$
        \end
      \end{algorithmic}
    \end{algorithm}
    [code=Latex]\begin{algorithm}
      \caption{Algo de test}
      \begin{algorithmic}
        \require entiers a, b
        \ensure entier d
        \begin
          \state d $leftarrow (a+b)$
        \end
      \end{algorithmic}
    \end{algorithm}[/code]

    Normalement, vous devriez avoir tout ce qu'il faut pour impressionn^Wfaire plaisir à votre prof d'Algo - Programmation préféré(e). Bon courage et bonne programmation !

    Merci à Julien pour m'avoir passé ces bouts de code !


    5 commentaires
  • Victoire !Les Rats d'Arts ont été élus au BDA de Centrale Nantes dès le premier tour, avec 66% des suffrages. Du coup ça nous évite une journée de travail inutile.

    Merci à tous ceux qui nous ont soutenu, encore bravo aux deux autres listes BDA, et bon courage aux deux listes BDS encore en lice.

    1 commentaire
  • Le premier tour est demainLa consécration de ces semaines de folie, c'est demain. Enfin tout à l'heure. Il est même pas 1h du matin, dans mon nouveau référentiel, 1h du matin, c'est tout juste le début de la soirée. 1h du matin, ça veut dire qu'il reste minimum 3 à 4h de boulot avant de se coucher. Aujourd'hui, à 1h du matin, je n'ai plus rien à faire pour les listes. Je peux glander, aller me coucher, whatever. La folie que je viens de traverser s'arrête d'un coup. Plus de nuit blanches, plus de lever à 5h30 du matin pour aller donner des croissants, ou faire des inventaires. Plus de course contre la montre pour trouver le temps de manger, de bosser un peu ses cours ou de lire un bouquin.

    Le film de liste BDA a été diffusé aujourd'hui aux élèves de Centrale, celui des listes BDS il y a quelques jours. Les deux ont été appréciés, ça fait plaisir. C'est con à dire, mais malgré tous les efforts déployés pour la Comm', la promotion de notre programme, et pour l'organisation d'événements au sein de l'école, une partie non négligeable des Centraliens va nous juger sur deux choses : Le film de Liste, et les Crêpes. Tant pis pour eux. J'espère juste que c'est pas pour une question de finesse de pâte à crêpes qu'une Liste vaincra une autre.

    Sur ce magnifique craquage, je vais rejoindre le lit de camp dans lequel je dors depuis que mon matelas est posé contre un mur, à côté d'un lit trop encombré pour qu'on puisse y poser la moindre chose.

    Pour ceux qui veulent jeter un coup d'œil aux films, contactez-moi par DM sur Eklablog ou Twitter ou Facebook ou Whatever.
    En attendant, vous pouvez visiter le site des Rats D'arts

    1 commentaire
  • La pré-campagne commence MercrediLa précampagne pour les listes BDA commence mercredi. On a une soirée d'épreuves à préparer (spectacle, présentation PowerBrasse, chorégraphie, etc...). Après cette soirée, c'est le début des campagnes : soirée sur soirée, événement sur événement, pas un instant de repos à prévoir.

    Les nuits de sommeil réparateur me semblent bien lointaines... Depuis 22h, je bosse sur tous les derniers préparatifs, tout ce qu'il faut régler avant l'entrée officielle dans les campagnes. Ce n'est pas tant un boulot de secrétaire que de respo Geek : fignoler le site Web, faire les slides, uploader toutes les photos pour la présentation de l'équipe, finir des graphismes.

    Comme si ça ne suffisait pas, tout ça tombe en même temps qu'un projet d'étude dans le cadre des mes cours, où je dois faire un comparatif entre différents SDKs pour téléphones mobiles multimedia, et qu'une grosse étude relativement critique pour la JE. La solution que j'ai pour l'instant est de rogner sur les heures de sommeil, mais ça ne marchera pas indéfiniement, même avec toute la bonne volonté et tout le Red Bull du monde... Il va pourtant falloir que je me démerde.

    Je n'ai jamais été aussi débordé que maintenant. Jusqu'à présent, ça a été extrêmement formateur et intéressant, j'attends de voir ce que ça va donner quand la pression va monter d'un cran.
    Vous gérez comment les situations de pression où plein d'impératifs se superposent ?

    6 commentaires
  • J'ai enfin (à peu près) compris comment créer un thème Beamer from scratch. Voilà la méthode (ce n'est en aucun cas un lexique de commandes). Pour les différentes commandes, ça se trouve facilement (ici et ici par exemple). J'écris cet article car il n'y a quasiment aucune ressource qui explique comment créer un thème entier (juste comment en modifier des existants).


    Tout se passe dans les fichiers suivants (remplacez Theme par le nom de votre thème):
    • beamerthemeTheme.sty
    • beamerouterthemeTheme.sty
    • beamerinnerthemeTheme.sty
    • beamercolorthemeTheme.sty
    Chaque fichier comporte la ligne :
    \ProvidesPackage{beamercolorthemeTheme}[AAAA/JJ/MM]
    (color pour le fichier colortheme, à remplacer par inner, outer ou rien)

    Le fichier principal est beamerthemeTheme.sty, c'est lui qui définit tout le reste (il contient les liens vers les trois autres fichiers de thèmes). Pour indiquer au compilateur d'utiliser votre fichier de thème, insérez la commande suivante \usetheme{Theme} dans la partie \mode<presentation>{}.

    Pour la structure des slides (fond, menu, etc...), ça se passe dans outertheme. Par exemple, pour définir le fond des slides :
    \pgfdeclareimage[height=\paperheight,width=\paperwidth]{frame_bg}{frame_bg}
    \setbeamertemplate{background}{\pgfuseimage{frame_bg}}
    On définit une image (frame_bg.png) de la taille du slide (height=\paperheight,width=\paperwidth), puis on la met comme fond de chaque slide.

    Pour les différentes couleurs (ici la couleur de fond des slides) :
    \definecolor{couleur}{HTML}{F0F6F8}
    \setbeamercolor{background canvas}{fg=couleur, bg=couleur}


    Le innertheme définit le contenu des slides. J'ai pas trop d'idées de commandes à mettre dedans.

    Voilà pour une brève explication de la méthode. Pour des explications des différentes commandes, je vous conseille l'excellent site mcclinews.free.fr, qui est complet et détaillé. Le passage sur les beamercolorbox est très intéressant et utile. Enjoy !

    aucun commentaire