% Pour compiler ce fichier, vous devez d'abord installer
% hevea: http://hevea.inria.fr
% giacfr.tex: http://www-fourier.ujf-grenoble.fr/~parisse/giac/giacfr.tex
% copier hevea.sty dans le repertoire courant
% ensuite vous pouvez tester avec la commande hevea test 
\documentclass[a4paper,11pt]{article}
%\textwidth 11,8 cm
%\textheight 17 cm
\textheight 23 cm
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{makeidx}
\usepackage{times}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{latexsym}
\usepackage{graphicx}
%\usepackage{pst-plot}
\usepackage{ifpdf}
\ifpdf
 \usepackage[pdftex,colorlinks]{hyperref}
\else
 \usepackage[ps2pdf,
            breaklinks=true,
            colorlinks=true,
            linkcolor=red,
            citecolor=green
            ]{hyperref}
\fi

\input{giacfr.tex}
\usepackage[auto]{mathjax}
\renewcommand{\jax@meta}{\begin{rawhtml}<script language="javascript"> 
var ua = window.navigator.userAgent;  
var old_ie = ua.indexOf('MSIE ');  
var new_ie = ua.indexOf('Trident/');  
if ((old_ie > -1) || (new_ie > -1) || Boolean(window.chrome)){
 (function () {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src  = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML";
  document.getElementsByTagName("head")[0].appendChild(script);
})();
}
</script>
\end{rawhtml}}


\newtheorem{thm}{Théorème}
\newtheorem{defn}[thm]{D\'efinition}
\newtheorem{prop}[thm]{Proposition}
\newtheorem{lemma}[thm]{Lemme}
\newtheorem{example}[thm]{Exemple}


\newcommand{\R}{{\mathbb{R}}}
\newcommand{\C}{{\mathbb{C}}}
\newcommand{\Z}{{\mathbb{Z}}}
\newcommand{\N}{{\mathbb{N}}}
\newcommand{\Q}{{\mathbb{Q}}}
\newcommand{\tr}{\mbox{tr\,}}

\makeindex

\title {Exemple de calculs interactifs dans un fichier \LaTeX\ compil\'e
en HTML et PDF.}
\author{B. Parisse\\Institut Fourier\\UMR 5582 du CNRS
\\Université de Grenoble}

\date{Juillet 2015}


\begin{document}
\begin{giacjshere}
%\loadgiacjs
%\loadgiacjsonline
Un $x$
$$ 1/2 $$
 
\maketitle

\tableofcontents

\printindex

\section{Description}
Ce source \LaTeX\ illustre l'utilisation du moteur de calcul formel Giac
lorsqu'on le compile en HTML avec {\tt hevea} (test\'e avec
\verb|hevea 2.23, 2.25|).  Il est possible de compiler \`a la fois
vers HTML5 et vers PDF en compilant avec {\tt icas} sous linux.


\section{Installation}
Vous devez installer
\ahref{http://hevea.inria.fr}{hevea} 
et recopier
\ahref{http://www-fourier.ujf-grenoble.fr/\%7eparisse/giac/giacfr.tex}{giacfr.tex}
et \ahref{http://hevea.inria.fr/distri/hevea.sty}{hevea.sty}
dans le m\^eme r\'epertoire que votre fichier source.
Vous pouvez t\'el\'echarger une copie du source
\ahref{http://www-fourier.ujf-grenoble.fr/\%7eparisse/giac/testfr.tex}{testfr.tex}
de ce fichier et v\'erifier votre installation en le compilant\\
\verb|hevea testfr|

\section{Utilisation} 
La commande\verb|\begin{giacjshere}|\index{giacjshere}, 
\verb|\begin{giacjs}|\index{giacjs} ou \verb|\begin{giacjsonline}|\index{giacjsonline}
doit figurer juste apr\`es \verb|\begin{document}|, selon que l'on va charger le moteur
de calcul \verb|giac.js| de la m\^eme fa\c{c}on que la page HTML,
depuis une installation de Xcas sur le disque dur
ou depuis le serveur de l'Institut Fourier. La
commande correspondante \verb|\end{giacjs}|, \verb|\end{giacjshere}| 
ou \verb|\end{giacjsonline}| 
doit figurer juste avant \verb|\end{document}|.
Pour que les liens du tableau de bord Table et Index fonctionnent,
vous devez imprimer la table des mati\`eres et l'index au d\'ebut du
document, comme dans ce fichier (commandes \verb|\tableofcontents|\index{table} et
\verb|\printindex|\index{index} juste apr\`es
\verb|\begin{giacjsonline}| et commande \verb|\makeindex| 
juste avant \verb|\begin{document}|).

Pour cr\'eer une commande en ligne avec r\'eponse en MathML (ou
graphique 2d) utilisez
\verb|\giacinputmath{}|,
par exemple\\ \verb|\giacinputmath{factor(x^10-1)}|\index{giacinputmath}
\giacinputmath{factor(x^10-1)}
On peut ajouter un argument optionnel pour changer le style~:\\
\verb|\giacinputmath[style="width:200px;height:20px;font-size:large"]{factor(x^10-1)}|\\
\giacinputmath[style="width:200px;height:20px;font-size:large"]{factor(x^10-1)}
Vous pouvez imposer la commande appliqu\'ee avec
\verb|\giaccmdmath{}{}|,
par exemple\\ \verb|\giaccmdmath{factor}{x^4-1}|\index{giaccmdmath} 
\giaccmdmath{factor}{x^4-1}
et ajouter un argument de style\\
\verb|\giaccmdmath[style="width:200px;height:20px;font-size:large"]{factor}{x^4-1}|\\
\giaccmdmath[style="width:200px;height:20px;font-size:large"]{factor}{x^4-1}

Pour cacher le champ de saisie et donner un nom au bouton, 
utiliser \verb|\giachidden{}{}| 
ou \verb|\giachiddenmath{}{}| 
par exemple
\giachidden{factor(x^10-1)}{reponse} ou
\giachiddenmath{factor(x^10-1)}{reponse}
 
Pour cr\'eer une commande hors-ligne avec r\'eponse en MathML (ou sous forme de graphique 2d)
utilisez \verb|\giacinputbigmath{}| ou 
\verb|\giaccmdbigmath{}{}|, ces commandes
acceptent aussi un argument optionnel de style~:\\
\verb|\giacinputbigmath{factor(x^100-1)}|\index{giacinputbigmath}\\
\giacinputbigmath{factor(x^100-1)}\\
\verb|\giacinputbigmath[style="width:600px;height:20px;font-size:large"]{factor(x^100-1)}|\\
\giacinputbigmath[style="display:none;width:600px;height:20px;font-size:large"]{factor(x^100-1)}\\
\verb|\giaccmdbigmath{factor}{x^100-1}|\index{giaccmdbigmath}\\
\giaccmdbigmath{factor}{x^100-1}\\
\verb|\giaccmdbigmath[style="width:600px;height:20px;font-size:large"]{factor}{x^100-1}|\\
\giaccmdbigmath[style="width:600px;height:20px;font-size:large"]{factor}{x^100-1}


Pour une commande avec r\'eponse en mode texte ou sous forme de graphique 2d 
utiliser \verb|\giacinput|ou
\verb|\giacinputbig|\index{giacinputbig}, 
par exemple\\ \verb|\giacinput{factor(x^4-1)}|\index{giacinput}  donne~:\\
\giacinput{factor(x^4-1)}\\
La m\^eme avec un argument de style optionnel de la ligne de commande\\ 
\verb|\giacinput[style="width:200px;height:20px;font-size:large"]{plot(sin(x))}|\\
\giacinput[style="width:200px;height:20px;font-size:large"]{plot(sin(x))}

Un bouton avec une commande qui sera appliqu\'ee \`a un argument avec
\verb|\giaccmd|, ici \verb|\giaccmd{factor}{x^4-1}|\index{giaccmd}~:\\
\giaccmd{factor}{x^4-1}\\
accepte aussi un argument de style optionnel~:\\
\verb|\giaccmd[style="width:200px;height:20px;font-size:large"]{factor}{x^4-1}|\\
\giaccmd[style="width:200px;height:20px;font-size:large"]{factor}{x^4-1}

{\bf Attention}, pour toutes ces commandes, il faut remplacer dans le
source latex le signe \verb|<| par
\verb|&lt;| et \verb|>| par \verb|&gt;| sinon ces caract\`eres
sont interpr\'et\'es comme des d\'elimieturs HTML.

La m\^eme chose avec un programme ou une commande de plusieurs lignes
avec \verb|\begin{giacprog}...\end{giacprog}|\index{giacprog}~:
\begin{giacprog}
f(x):={
  local y;
  si x<0 alors y:=-x; sinon y=x; fsi;
  return y;
}
\end{giacprog}
Ici on peut utiliser les caract\`eres \verb|<| et \verb|>|. Attention, il 
ne pas utiliser cet environement dans un autre environement (itemize,
enumerate...).
Si vous souhaitez que le programme soit interpr\'et\'e au chargement
de la page HTML, utilisez \verb|giaconload| au lieu de \verb|giacprog|.

La commande \verb|\giacslider{}{}{}{}{}|
permet de cr\'eer une variable
modifiable par le lecteur \`a la souris et des calculs qui
d\'ependent de cette variable~:\\
\verb|\giacslider{a}{-5}{5}{0.1}{2.3}{plot(x^2+a*x)}|\index{giacslider} \\
\giacslider{a}{-5}{5}{0.1}{2.3}{plot(x^2+a*x)}

Pour cr\'eer un lien utiliser \verb|\giaclink{}|, par
exemple un lien vers Xcas offline~:\\
\verb|\giaclink{http://www-fourier.ujf-grenoble.fr/\%7eparisse/xcasfr.html#+factor(x^4-1)&+a:=idn(3)&}|\index{giaclink}\\
\giaclink{http://www-fourier.ujf-grenoble.fr/\%7eparisse/xcasfr.html#+factor(x^4-1)&+a:=idn(3)&}

\section{Postprocessing}
On peut utiliser \verb|hevea --mathjax| du fork 
\verb|https://github.com/YannickChevalier/hevea-mathjax|
pour laisser MathJax faire le rendu des formules math\'ematiques.
On peut alors convertir en mathml en utilisant itex2mml
\verb|https://golem.ph.utexas.edu/~distler/blog/itex2MML.html|
Attention, il faut remplacer \verb|\(| et \verb|\)| par \verb|$|,
certains caract\`eres ne sont pas support\'es (par exemple \verb|\ |),
et \verb|\begin|\verb|{equation}| ou \verb|eqnarray| n'est pas support\'e.

\section{Tortue logo}
\giacinput{efface; avance 30;}

\end{giacjshere}
\end{document}
