%%% ====================================================================
%%% @LaTeX-file{
%%%   filename  = "beamerarticle-teacher-doc.tex",
%%%   version   = "1.00",
%%%   date      = "2013/09/26",
%%%   time      = "18:02:46 EDT",
%%%   author    = "Benoit LANDRIEU",
%%%   copyright = "copyleft",
%%%   email     = "benoit.landrieu@gmail.com",
%%%   codetable = "ISO/ASCII",
%%%   supported = "yes",
%%%   keywords  = "latex, beamer, beamerarticle, maths, teacher",
%%%   abstract  = "This file is the User's Guide for the 
%%%                beamerarticle-teacher class".
%%%                package.",
%%% }
%%% ====================================================================
\documentclass[twoside,french]{article}
\pagestyle{myheadings}

% Use the same version numbers as for the amslatex instructions.
\def\instrversion{1.00}
\def\instrdate{September 2014}

\title{Utilisation de la classe \pkg{beamerarticle-teacher}}
\author{Version \instrversion, \instrdate\\Benoit LANDRIEU}
\date{}

\providecommand{\qq}[1]{\textquotedblleft#1\textquotedblright}
\providecommand{\mdash}{\textemdash\penalty\hyphenpenalty}

% Embedded \index commands are a legacy from the time when this
% documentation was part of amsldoc. Since they don't hurt anything,
% let's leave them in. Maybe they will become useful again in the
% future. [mjd,2000/06/06]

\chardef\bslchar=`\\ % p. 424, TeXbook
\newcommand{\ntt}{%
  \fontfamily\ttdefault \fontseries\mddefault \fontshape\updefault
  \selectfont
}
\DeclareRobustCommand{\cn}[1]{{\ntt\bslchar#1}}
\DeclareRobustCommand{\cls}[1]{{\ntt#1}}
\DeclareRobustCommand{\pkg}[1]{{\ntt#1}}
\DeclareRobustCommand{\opt}[1]{{\ntt#1}}
\DeclareRobustCommand{\env}[1]{{\ntt#1}}
\DeclareRobustCommand{\fn}[1]{{\ntt#1}}

\providecommand{\qedsymbol}{\leavevmode
  \hbox to.77778em{%
  \hfil\vrule
  \vbox to.675em{\hrule width.6em\vfil\hrule}%
  \vrule\hfil}}

%%  Provide a meta-command facility; provide an alternate escape
%%  character so it can be used within the verbatim environment.

\catcode`\|=0
\begingroup \catcode`\>=13 % in LaTeX2e verbatim env makes > active
\gdef\?#1>{{\normalfont$\langle$\textup{#1}$\rangle$}}
\gdef\0{\relax}
\endgroup
\def\<#1>{{\normalfont$\langle$\textup{#1}$\rangle$}}
\def\ntnote#1{{\normalfont$^{#1}$}}

\hfuzz4pt \vbadness9999 \hbadness5000
\def\latex/{{\protect\LaTeX}}

\setlength{\textwidth}{210mm}\addtolength{\textwidth}{-2in}
\setlength{\oddsidemargin}{39pt}
\setlength{\evensidemargin}{39pt}
\addtolength{\textwidth}{-2\oddsidemargin}

%Ben
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{url}
\urlstyle{sf}

\begin{document}
\maketitle
\markboth{Utilisation de la classe \pkg{beamerarticle-teacher}}{Utilisation de la classe \pkg{beamerarticle-teacher}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Introduction}

\begin{sloppypar}
La classe \pkg{beamerarticle-teacher} a été développé dans le but de faciliter 
la rédaction de cours pour les enseignants. La problématique était la suivante : 
\og Comment à partir du même source \LaTeX{} générer plusieurs documents à 
destination de l'impression pour les étudiants, l'impression pour le professeur 
et la présentation pour la classe \fg{}.

Actuellement le développement de la classe \pkg{beamerarticle-teacher} permet à 
partir du même source \LaTeX{} de générer :
\begin{itemize}
\item un \textit{polycopié pour l'étudiant (article)}
\item un \textit{polycopié pour le professeur (article)}
\item une \textit{présentation pour la classe (beamer)}
\item un \textit{polycopié pour les élèves dys (dys)}
\item un \textit{polycopié pour les élèves en format a3 double page (a3)}
\end{itemize}

La classe s'appuie sur la classe \pkg{beamerarticle}, pour générer les 5 
fichiers en même temps, il faut utiliser un \pkg{Makefile}.

La génération peut se faire depuis un éditeur mais on ne peut générer qu'un 
seul fichier document à la fois et il faut changer une ligne dans le code pour 
générer les autres fichiers.

Vous trouverez la dernière version de la classe \pkg{beamerarticle-teacher} sur 
le \emph{gitlab} \url{https://gitlab.com/benoitldr/beamerarticle-teacher}

Un exemple de cours qui montre les fonctionnalités de cette classe se trouve dans le fichier 
\fn{beamerarticle-teacher-example.tex}
\end{sloppypar}

\section{La classe \pkg{beamerarticle-teacher}}

Je tape depuis quelques années mes cours en \LaTeX{} et je trouvais 
pénible de devoir gérer plusieurs sources pour les polycopiés des 
élèves, pour ma version et pour ma présentation \pkg{beamer}.

J'ai trouvé une solution qui permettait de gérer à la fois l'\pkg{article} et 
le \pkg{beamer} : la classe \pkg{beamerarticle}. En effet grâce à cette classe 
on peut taper comme si l'on tapait du \pkg{beamer} et ensuite générer au choix 
l'aspect \pkg{article} ou \pkg{beamer}.

J'ai donc commencé à créer une classe qui permettrait de générer les trois 
fichiers documents : \emph{STUDENT}, \emph{TEACHER} et \emph{BEAMER}.

La classe \pkg{beamerarticle-teacher} est le fruit de cette réflexion.

Pour commencer un document il suffit d'insérer le code 
\begin{verbatim}
\documentclass[]{beamerarticle-teacher}
\end{verbatim}
Cette classe a trois options :
\begin{verbatim}
% student version
\documentclass[student]{beamerarticle-teacher}
% teacher version
\documentclass[teacher]{beamerarticle-teacher}
% beamer version
\documentclass[beamer]{beamerarticle-teacher}
% dys version
\documentclass[dys]{beamerarticle-teacher}
% a3 version
\documentclass[a3]{beamerarticle-teacher}
\end{verbatim}

Si vous n'utilisez pas le \emph{Makefile}, il vous faudra choisir 
l'option du document que vous voulez générer (voir le code ci-dessus) 
(il est normalement presque compatible Windows 
avec GnuMake32)

Un document standard pour le commencement serait le suivant :
\begin{verbatim}
\listfiles
\documentclass[]{beamerarticle-teacher}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
% CONTENU
\end{document}
\end{verbatim}

Pour compiler vous aurez besoin aussi du \pkg{Makefile}
\begin{verbatim}
% File common.mk
LATEX=pdflatex
LATEXOPT=--shell-escape -synctex=1
NONSTOP=--interaction=nonstopmode

STUDENTOPT="\PassOptionsToClass{student,landscape,twocolumn}{beamerarticle-teacher}\input{%S}"
TEACHEROPT="\PassOptionsToClass{teacher,landscape,twocolumn}{beamerarticle-teacher}\input{%S}"
BEAMEROPT="\PassOptionsToClass{beamer}{beamerarticle-teacher}\input{%S}"

STUDENTSUFF=ELEV
TEACHERSUFF=PROF
BEAMERSUFF=PRES

LATEXMK=latexmk
LATEXMKOPT=-pdf
CONTINUOUS=-pvc

USBDIR=/Volumes/BENOIT-VERB/00-ENCOURS
USBPRINTDIR=/Volumes/BENOIT-VERB/00-TOPRINT/


CSTUDENT: $(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) $(CONTINUOUS)\
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(STUDENTOPT)' 
%-jobname='$(TEXSRC)-$(STUDENTSUFF)' $(STUDENT)

CTEACHER:$(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) $(CONTINUOUS)\
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(TEACHEROPT)' 
%-jobname='$(TEXSRC)-$(TEACHERSUFF)' $(TEACHER)

CBEAMER:$(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) $(CONTINUOUS)\
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(BEAMEROPT)' 
%-jobname='$(TEXSRC)-$(BEAMERSUFF)' $(BEAMER)

STUDENT: $(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) \
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(STUDENTOPT)' 
%-jobname='$(TEXSRC)-$(STUDENTSUFF)' $(STUDENT)

TEACHER:$(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) \
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(TEACHEROPT)' 
%-jobname='$(TEXSRC)-$(TEACHERSUFF)' $(TEACHER)

BEAMER:$(TEXSRC).tex
$(LATEXMK) $(LATEXMKOPT) \
-pdflatex='$(LATEX) $(LATEXOPT) $(NONSTOP) %O $(BEAMEROPT)' 
%-jobname='$(TEXSRC)-$(BEAMERSUFF)' $(BEAMER)

article: $(TEXSRC).tex
make STUDENT
make TEACHER

all: $(TEXSRC).tex
make STUDENT
make TEACHER
make BEAMER

usb-student:
cp $(TEXSRC)-$(STUDENTSUFF).pdf $(USBDIR)
ps2pdf $(USBDIR)/$(TEXSRC)-$(STUDENTSUFF).pdf 
$(USBPRINTDIR)/$(TEXSRC)-$(STUDENTSUFF).pdf

usb-teacher:
cp $(TEXSRC)-$(TEACHERSUFF).pdf $(USBDIR)
ps2pdf $(USBDIR)/$(TEXSRC)-$(TEACHERSUFF).pdf 
$(USBPRINTDIR)/$(TEXSRC)-$(TEACHERSUFF).pdf

usb-beamer:
cp $(TEXSRC)-$(BEAMERSUFF).pdf $(USBDIR)

usb-all:
make usb-student
make usb-teacher
make usb-beamer

clean:
rm -rf *.aux *.bbl *.bcf *.blg *.fdb_latexmk *.fls *.log *.maf *.mtc* *.out 
*.run.xml *.synctex.gz *.nav *.toc *.snm *.gnuplot *.thm *.vrb

cleanall:
make clean
rm -rf *.pdf
\end{verbatim}

et pour le \pkg{Makefile}
\begin{verbatim}
% File Makefile
TEXSRC=example-beamerarticle-teacher
include ../common.mk
\end{verbatim}

Il suffit juste de taper
\begin{verbatim}
make all % generate the 3 files
make BEAMER % generate BEAMER version
make STUDENT % generate STUDENT version
make TEACHER % generate TEACHER version
make clean % cleaning temp files
make cleanall % make clean + clean pdf
make CSTUDENT % make STUDENT avec compilation continue
etc...
\end{verbatim}

Voilà les commandes basiques pour générer les 3 documents.

\section{Différenciations des versions}

Il est parfois important de pouvoir différencier les versions, 
ceci est possible grâce aux \emph{booléens} \emph{isprof} et \emph{isbm}

Si vous voulez différencier les versions \emph{TEACHER} et \emph{STUDENT}
\begin{verbatim}
\ifisteach
% contents for TEACHER version
\else
% contents for STUDENT version
\fi
\end{verbatim}

Vous pouvez regarder dans le \cn{beamerarticle-beamer.cls}, j'ai définie 
des commandes pour gérer les \og trous \fg{} du polycopié \emph{STUDENT}

Si vous voulez différencier les versions \emph{BEAMER} et \emph{ARTICLE}
\begin{verbatim}
\ifisbm
% contents for BEAMER version
\else
% contents for ARTICLE version
\fi
\end{verbatim}

Ceci peut être utile parfois par exemple, une figure est de la bonne taille 
pour un \emph{article} par contre elle est trop grande pour le \emph{beamer}, 
il suffit d'un code du style
\begin{verbatim}
\ifisbm
\includegraphics[scale=0.5]{some-graphics}
\else
\includegraphics[scale=1]{some-graphics}
\fi
\end{verbatim}

Voilà les grandes lignes, j'espère que cela vous servira, vous trouverez 
un exemple complet sur le \emph{gitlab} 
\url{https://gitlab.com/benoitldr/beamerarticle-teacher} notamment sur 
l'utilisation des commandes qui génèrent les trous 
pour les polycopiés, quelques commandes utiles (faire des lignes pointillées, 
des parties de copie petits carreaux etc...).

J'ai essayé de commenter au maximum mon code, vu le nombre de ligne assez faible, 
je pense que c'est assez lisible. 


Si vous avez des questions sur l'utilisation cette classe contacter moi par 
mail \url{benoit.landrieu@ac-grenoble.fr}, n'hésitez pas à me donner vos 
avis 
sur le \emph{gitlab} (issues, requests etc...)


\end{document}
