=======
EniBook
=======

.. goal:: 

    Présenter le concept EniBook et l'illustrer à l'aide d'exemples.

.. contents:: Sommaire
    :backlinks: none

Le projet
=========

|enibook| est un projet pédagogique initié en 2012 à l'Ecole nationale 
d'ingénieurs de Brest (|enib|). Ce projet concerne la conception et la
réalisation d'un ensemble d'outils compatibles entre eux pour l'aide 
à la création de documents pédagogiques, numériques et interactifs sur la Toile.

    -   Du point de vue du lecteur, ces documents numériques se consultent et se 
        manipulent uniquement à travers l'interface de leur navigateur Web 
        (|chrome|, |firefox|, |ie|, |opera|, |safari|...).
    -   Du point de vue de l'auteur, ces documents se rédigent dans un 
        formalisme unique : le langage |reST| de l'environnement 
        |sphinx|/|python|, sans avoir besoin de connaître ni le langage |python|
        ni les langages du Web (|html|, |css|, |javascript|...).

Un document créé dans le cadre de ce projet est appelé un... EniBook.

L'objet
=======

Un EniBook est donc également :

    -   un document numérique interactif pour le Web ne nécessitant qu'un 
        navigateur sur le poste de l'utilisateur : il est *a priori* indépendant
        de la plateforme sur laquelle il est consulté (stations, portables, 
        tablettes, smartphones);
    -   un document à vocation pédagogique, du simple exercice interactif 
        au manuel de cours interactif, accompagnant le lecteur dans ses
        apprentissages.


.. help::
    :title: Histoire d'un acronyme

    L'acronyme du projet a commencé avec celui des *e-books* 
    (*electronic book*).

    Un livre électronique n'étant pas nécessairement interactif,
    nous avons voulu insérer dans l'acronyme le « i » de *interactive*.
    On aurait ainsi pu obtenir le *eibook* (*electronic interactive book*).
    Mais nous avons préféré *enibook* (*enib book*) 
    car en glissant le « n » entre le « e » et le « i », 
    nous retrouvions l'acronyme de l'Enib.
    Ceci étant, un « livre Enib » ne dit rien sur sa nature numérique,
    d'où la volonté, tout en conservant l'acronyme *enibook* pour rappeler 
    son origine, d'approfondir la définition de l'acronyme. 
      
    Le « n » de *numerical* traduit bien l'aspect numérique du document
    mais fait double emploi avec le « e » de *electronic*, d'où l'idée
    de supprimer ce « e » pour le remplacer par celui de *embedded*
    (embarqué) qui rappelle qu'un EniBook  est « embarqué » dans
    le navigateur de l'utilisateur.
    Ainsi le « livre Enib » devient un « livre numérique embarqué 
    et interactif » : *embedded numerical interactive book*.
    
    Mais un EniBook n'est pas qu'un livre, c'est aussi un ensemble
    d'outils pour concevoir des EniBook : en quelque sorte un « kit »
    de conception. Ainsi le « k » de *enibook* participe à son tour à la 
    définition de *enibook* !
    Sachant par ailleurs qu'un EniBook est ouvert (*open*) à tous et 
    disponible en ligne (*online*), chaque lettre de l'acronyme
    trouve naturellement sa place dans la définition :
    
    |enibook| : *Embedded Numerical Interactive Book with Open Online Kit*.
    
    Cette version « fonctionnelle » de l'acronyme dit ce qu'est un EniBook 
    aujourd'hui. Mais elle ne nous apprend rien sur l'ambition d'un EniBook, 
    à savoir celle de permettre au lecteur de se construire au fil du temps 
    des connaissances par un couplage actif, au sens de l'énaction, avec le 
    support numérique devenant lui-même de plus en plus pertinent. D'où cette
    version plus « visionnaire » de l'acronyme :

    |enibook| : *Enactive numerical intelligent book for open online knowledge*


Par l'intermédiaire du menu principal d'un EniBook
(icone  
:raw-html:`<a href="#enibook-tableofcontent">
<span class="btn glyphicons glyphicons-menu-hamburger"
style="background-color: rgb(234,138,0); font-size: 75%;">
</span></a>` 
en haut à droite de la fenêtre) :

    -   Le lecteur peut récupérer sous forme d'une archive ``site.tar.gz``
        l'ensemble des fichiers composant l'EniBook qu'il est en train de 
        consulter. Une fois désarchivée sur son disque dur personnel, il lui
        suffit d'ouvrir le fichier ``site/html/index.html`` dans son navigateur
        pour pouvoir consulter cet EniBook en toutes circonstances, y
        compris hors connexion internet.
    -   L'auteur peut récupérer sous forme d'une archive ``enibook.tar.gz``
        l'ensemble des fichiers permettant de créer un nouvel EniBook.
        Une fois désarchivée sur son disque dur personnel, il lui suffit
        de compléter le répertoire ``enibook/newproject`` (ou une copie de ce 
        répertoire) avec ses propres fichiers |reST|, de compiler son projet
        (``make html``) pour créer le répertoire ``site/`` spécifique à son
        projet d'EniBook. Le fichier ``site/html/index.html`` est le
        point d'entrée de ce nouvel EniBook.
    
Des exemples
============
.. info:: 

    Cette section s'enrichit au jour le jour, 
    n'hésitez pas à la revisiter régulièrement.

Outils de base
--------------

L'ensemble des outils |reST| sont disponibles dans un EniBook.
Seuls les outils spécifiques aux EniBook sont présentés ici.

Structuration
+++++++++++++
    -   :ln:`Colonnes </enibook/demos/tools/multicolumn/site/html/index.html>`
    -   :ln:`Aides  </enibook/demos/tools/help/site/html/index.html>`

Médias
++++++
.. atwork::

    -   :ln:`Audio </enibook/demos/tools/audio/site/html/index.html>`
    -   :ln:`Vidéo </enibook/demos/tools/video/site/html/index.html>`

Questionnaires
++++++++++++++
    -   :ln:`QCM    </enibook/demos/tools/mcq/site/html/index.html>`
    -   :ln:`Textes à trous </enibook/demos/tools/input/site/html/index.html>`

Interpréteurs
+++++++++++++
.. atwork::

    -   :ln:`C/C++      </enibook/demos/tools/c/site/html/index.html>`
    -   :ln:`Dot        </enibook/demos/tools/dot/site/html/index.html>`
    -   :ln:`Html       </enibook/demos/tools/html/site/html/index.html>`
    -   :ln:`Javascript </enibook/demos/tools/javascript/site/html/index.html>`
    -   :ln:`Python     </enibook/demos/tools/python/site/html/index.html>`
    -   :ln:`SQL        </enibook/demos/tools/sql/site/html/index.html>`
    -   :ln:`Xcas       </enibook/demos/tools/xcas/site/html/index.html>`

Simulateurs
+++++++++++

    -   :ln:`Circuits logiques </enibook/demos/tools/logical-circuit/site/html/index.html>`

Utilisation des outils de base
------------------------------


Interpréteurs
+++++++++++++
    -   :ln:`Exercice de programmation en Python </enibook/demos/usecases/python/site/html/index.html>`

Simulateurs
+++++++++++
    -   :ln:`Conception d'un circuit logique </enibook/demos/usecases/logic/site/html/index.html>`

Livrets numériques
------------------
.. atwork::

    -   :ln:`Affectation </enibook/demos/booklets/affectation/site/html/index.html>`

La chaîne de traitements
========================

.. image:: tikz-traitement.png

