I. Introduction▲
Le format .pdf s'imposant, le moteur kitxmlcodeinlinelatexdvp\rm pdf\LaTeXfinkitxmlcodeinlinelatexdvp est créé fournissant directement après compilation un document <fichier>.pdf. De nombreux packages viennent augmenter les possibilités du programme, la plupart étant compatibles autant avec le moteur kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp d'origine qu'avec kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp Cependant quelques difficultés demeurent : kitxmlcodeinlinelatexdvp\rm pdf\LaTeXfinkitxmlcodeinlinelatexdvp n'accepte pas les images avec l'extension .ps par exemple, il n'accepte pas non plus le remarquable package de dessin — et donc de construction de graphe de fonction mathématique — PSTricks. Un autre package de dessin est créé :TikZ fonctionnant avec kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp
Le début du XXIème siècle marque un tournant pour : kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp le développement de moteurs — à ce jour non encore stabilisés — qui permettent d'augmenter et de faciliter les possibilités de ce formateur de texte :
D'abord avec kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeXfinkitxmlcodeinlinelatexdvp qui permet d'utiliser toutes les polices installées sur le système d'exploitation, la plupart des formats image, les packages TikZ et PSTricks pour les dessins. Les polices spécifiques pour les mathématiques sont actuellement en train de se développer grâce au package unicode-math.
Enfin avec kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp très récent qui intègre notamment la possibilité de calculer grâce au langage Lua intégré. kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp n'est pas stabilisé, en plein développement et le programme va encore évoluer : un source créé aujourd'hui peut ne plus fonctionner demain car des commandes auront été modifiées.
Attention : Pour le moment kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp ne fonctionne pas avec PSTricks contrairement à kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeX ,finkitxmlcodeinlinelatexdvp Les développeurs du programme kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp devraient à terme trouver une solution à son intégration. Finalement, la solution kitxmlcodeinlinelatexdvp\rm X\textbf{ꓱ}\LaTeXfinkitxmlcodeinlinelatexdvp apparaît comme la plus complète et relativement facile à ce jour.
La qualité typographique de kitxmlcodeinlinelatexdvp\rm \LaTeXfinkitxmlcodeinlinelatexdvp depuis ses origines a une contrainte : kitxmlcodeinlinelatexdvp\rm \LaTeXfinkitxmlcodeinlinelatexdvp n'est pas WYSIWYG(1) comme par exemple Word, ce qui en rebute plus d'un ! Heureusement, l'utilisation de plus en plus ergonomique des éditeurs de texte pallie en partie à ce qui peut être considéré par certains comme un inconvénient mais par d'autres comme un avantage.
Il faut noter l'existence d'au moins deux éditeurs de texte quasi-WYSIWYG : Texmacs et Lyx. L'auteur n'est pas bien convaincu que ceux-ci apportent une simplification dans l'élaboration d'un document. Ils peuvent cependant être utiles pour l'apprentissage de kitxmlcodeinlinelatexdvp\rm Lua\LaTeX .finkitxmlcodeinlinelatexdvp Mais rien ne vaut un stage pour bien démarrer, prendre les bonnes habitudes pour devenir ensuite autonome.
À ce jour, 24 mars 2013, seul TeXworks, éditeur de texte fourni avec TeX Live et avec MikTeX au moment de leur installation, a intégré dans sa barre d'icônes une compilation pour kitxmlcodeinlinelatexdvp\rm Lua\LaTeX .finkitxmlcodeinlinelatexdvp kitxmlcodeinlinelatexdvp\rm Lua\LaTeXfinkitxmlcodeinlinelatexdvp semble être appelé à remplacer kitxmlcodeinlinelatexdvp\rm pdf\LaTeX .finkitxmlcodeinlinelatexdvp Il serait l'avenir de kitxmlcodeinlinelatexdvp\rm pdf\LaTeX !finkitxmlcodeinlinelatexdvp
Pour résumer :
moteur |
kitxmlcodelatexdvp\rm pdf\LaTeXfinkitxmlcodelatexdvp | kitxmlcodelatexdvp\rm X\bbold{ꓱ}\LaTeXfinkitxmlcodelatexdvp | kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
---|---|---|---|
Fonctionnement avec les polices LaTeX |
OUI |
OUI |
OUI |
Fonctionnement avec l les polices du système d'exploitation |
NON |
OUI |
OUI |
Fonctionnement avec image.ps |
NON |
OUI |
NON |
Fonctionnement avec image,png |
OUI |
OUI |
OUI |
Fonctionnement avec PSTricks |
OUI |
OUI |
OUI |
Fonctionnement avec sageTeX |
OUI |
OUI |
OUI |
Langage de programmation intégré |
NON |
NON |
OUI |
II. Le préambule d'un document LuaLaTeX▲
Il ressemble beaucoup à celui d'un document kitxmlcodeinlinelatexdvp\rm X\bbold{ꓱ}\LaTeX .finkitxmlcodeinlinelatexdvp Seul le package xltxtra est remplacé par luatextra. Voici un exemple de préambule pour un document ayant un contenu mathématique avec graphique :
\documentclass
[12pt]{article}
\usepackage
{luatextra,xcolor}
\usepackage
{tikz}
\usepackage
{amsmath}
\usepackage
{amsfonts}
\usepackage
{amssymb}
\usepackage
{unicode-math}
\usepackage
[left=1cm,right=1cm,top=1cm,bottom=1.5cm]{geometry}
\usepackage
[francais]{babel}
\setmainfont
[Ligatures=TeX]{Linux Libertine O}
\setmathfont
{Asana Math}
III. Le langage Lua et sa correspondance en LuaLaTeX▲
III-A. Console Lua▲
Pour vérifier l'installation et le fonctionnement de Lua sur l'ordinateur, il est possible d'écrire un script avec quelques lignes de code Lua et de les enregistrer dans un fichier <fichier>.lua Pour que ce fichier soit lu, on peut utiliser par exemple la console, se placer dans le dossier où se trouve le fichier et écrire lua <fichier>.lua pour lancer le programme qui doit alors s'exécuter.
Une autre solution consiste à utiliser un programme dédié à Lua pour exécuter le code avec une interface plus conviviale. C'est le cas avec ZeroBrane Studio dont l'installation est très simple sous Windows. Ce logiciel fournit aussi différents exemples de scripts qu'on peut essayer et décortiquer pour apprendre la syntaxe de Lua. Il y a deux possibilités de lancement d'un programme écrit en Lua : dans le menu Project, le classique Run mais aussi Run as Scratchpad qui lance le programme en direct permettant de voir immédiatement l'effet de tout changement dans le code. Notamment, par clic maintenu sur un nombre, en déplaçant la souris, la valeur change avec effet immédiat sur la compilation du document.
III-B. Commentaires en Lua▲
Ce qui est écrit après -- est en commentaire [[ ]] permet des commentaires sur plusieurs lignes.
III-C. Calculs▲
On utilise la fonction print()
III-C-1. Écriture des nombres▲
syntaxe Lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(12.34*10^-3) |
\directlua{tex.print(12.34*10^-3)} |
0.01234 |
print(12.34e-3) |
\directlua{tex.print(12.34e-3)} |
0.01234 |
print(12.34E-3) |
\directlua{tex.print(12.34E-3)} |
0.01234 |
print(math.pi) |
\directlua{tex.print(math.pi)} |
3.1415926535898 |
III-C-2. Arithmétique▲
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(3+7) |
\directlua{tex.print(3+7)} |
10 |
print(3-7) |
\directlua{tex.print(3-7)} |
-4 |
print(3*7) |
\directlua{tex.print(3*7)} |
21 |
print(3/7) |
\directlua{tex.print(3/7)} |
0.42857142857143 |
print(3^7) |
\directlua{tex.print(3^7)} |
2187 |
III-C-3. Fonctions trigonométriques▲
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(math.sin(-3)) |
\directlua{tex.print(math.sin(-3))} |
-0.14112000805987 |
print(math.cos(-3)) |
\directlua{tex.print(math.cos(-3))} |
-0.98999249660045 |
print(math.tan(-3)) |
\directlua{tex.print(math.tan(-3))} |
0.14254654307428 |
print(math.asin(0.5)) |
\directlua{tex.print(math.asin(0.5))} |
0.5235987755983 |
print(math.acos(0.5)) |
\directlua{tex.print(math.acos(0.5))} |
1.0471975511966 |
print(math.acos(-3)) |
\directlua{tex.print(math.acos(-3))} |
nan |
print(math.atan2(-3,1)) |
\directlua{tex.print(math.atan2(-3,1))} |
1.2490457723983 |
Fonctions logarithmiques et exponentielles
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(math.log(2)) |
\directlua{tex.print(math.log(2))} |
0.69314718055995 |
print(math.log10(100)) |
\directlua{tex.print(math.log10(100))} |
2 |
print(math.exp(-3)) |
\directlua{tex.print(math.exp(-3))} |
0.049787068367864 |
print(math.frexp(3)) |
\directlua{tex.print(math.frexp(3))} |
2 |
print(math.ldexp(0.3,2)) |
\directlua{tex.print(math.ldexp(0.3,2))} |
01/02/14 |
Nombres aléatoires
Syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(math.random()) |
\directlua{tex.print(math.random())} |
0.94077464981972 |
print(math.random(100)) |
\directlua{tex.print(math.random(100))} |
44 |
print(math.random(3,10)) |
\directlua{tex.print(math.random(3,10))} |
7 |
print(math.randomseed(12)) |
\directlua{tex.print(math.randomseed(12))} |
III-C-4. Autres fonctions mathématiques▲
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(math.abs(-3)) |
\directlua{tex.print(math.abs(-3))} |
3 |
print(math.ceil(-3.5)) |
\directlua{tex.print(math.ceil(-3.5))} |
-3 |
print(math.floor(-3.5)) |
\directlua{tex.print(math.floor(-3.5))} |
-4 |
print(math.max(-3,1,5.6)) |
\directlua{tex.print(math.max(-3,1,5.6))} |
5.6 |
print(math.min(-3,1,5.6)) |
\directlua{tex.print(math.min(-3,1,5.6))} |
-3 |
print(math.mod(8,3)) |
\directlua{tex.print(math.mod(8,3))} |
2 |
print(math.mod(8,3.2)) |
\directlua{tex.print(math.mod(8,3.2))} |
1.6 |
print(math.pow(2,0.5)) |
\directlua{tex.print(math.pow(2,0.5))} |
1.4142135623731 |
print(math.sqrt(3)) \ |
directlua{tex.print(math.sqrt(3))} |
1.7320508075689 |
III-C-5. Degrés et radians▲
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print(math.deg(3.14)) |
\directlua{tex.print(math.deg(3.14))} |
179.90874767108 |
print(math.rad(90)) |
\directlua{tex.print(math.rad(90))} |
1.5707963267949 |
III-D. Texte et concaténation▲
syntaxe lua |
syntaxe kitxmlcodelatexdvp\rm Lua\LaTeXfinkitxmlcodelatexdvp |
résultat |
---|---|---|
print('bonjour') |
\directlua{tex.print('bonjour')} |
bonjour |
print("bonjour") |
\directlua{tex.print("bonjour")} |
bonjour |
print([[bonjour]]) |
\directlua{tex.print([[bonjour]])} |
bonjour |
print('bon'..'jour') |
\directlua{tex.print('bon'..'jour')} |
bonjour |
III-E. Boucles▲
III-E-1. While do end▲
\begin
{luacode}
i=3
while i>0 do
tex.print(i)
i=i-1
end
\end
{luacode}
Affichera : 3 2 1
III-E-2. Repeat untill▲
\begin
{luacode}
i=3
repeat
tex.print(i)
i=i-1
until i==0
\end
{luacode}
Affichera : 3 2 1
III-E-3. For do end ▲
\begin
{luacode}
for i=3,0,-1 do
tex.print(i)
end
\end
{luacode}
Affichera : 3 2 1 0
Les résultats de la compilation sont mis côte à côte. Pour les avoir les uns en dessous des autres, voici la technique :
\begin
{luacode}
for i=3,0,-1 do
tex.print(i..'
\\
\\
'
)
end
\end
{luacode}
Affichera :
3
2
1
0
La règle est la suivante : à l'intérieur d'un tex.print(),
- une commande
kitxmlcodeinlinelatexdvp\rm\LaTeXfinkitxmlcodeinlinelatexdvp
\<
commande> devient '\\<commande>' ; \\
devient '\\\\' ;- entre une variable — par exemple i — et du texte, il faut concaténer avec ..
IV. exemples▲
Dans cette section, il s'agit de choisir quelques fonctions mathématiques, de réaliser un tableau de valeurs et de tracer les graphiques correspondants.
kitxmlcodelatexdvpy=x^2-3x+1finkitxmlcodelatexdvpTableau de valeurs :
\begin
{luacode}
tex.print("\\
begin{tabular}{c|c}")
tex.print("x & y \\
\\
\\
hline")
for x=-2,5,0.5 do
tex.print( x .. '
&'
.. x^
2-3*x+1 .. '
\\
\\
'
)
end
tex.print("\\
end{tabular}")
\end
{luacode}
x |
y |
---|---|
-2 |
11 |
-1.5 |
01/07/75 |
-1 |
5 |
-0.5 |
2,75 |
0 |
1 |
0.5 |
-0.25 |
1 |
-1 |
1,5 |
-1,25 |
2 |
-1 |
2,5 |
-0,25 |
3 |
1 |
3,5 |
2,75 |
4 |
5 |
4,5 |
7,75 |
5 |
11 |
Graphe:
\begin
{tikzpicture}
[
xscale
=
1.5
]
\tkzInit
[
xmin
=
-
3
,
xmax
=
6
,
ymin
=
-
2
,
ymax
=
12
]
\tkzAxeXY
\begin
{
luacode
}
for
x
=
-
2
,
5
,
0.05
do
tex
.
print
(
"
\
\fill
(
"
.
.
x
.
.
"
,
"
.
.
x
^
2
-
3
*
x
+
1
.
.
"
)
circle
(
1
pt
)
;
"
)
end
\end
{
luacode
}
\end
{tikzpicture}
x |
y |
---|---|
-2 |
0.090909090909091 |
-1.5 |
0.12903225806452 |
-1 |
0.2 |
-0.5 |
0.36363636363636 |
0 |
1 |
0.5 |
-4 |
1 |
-1 |
1,5 |
-0.8 |
2 |
-1 |
2,5 |
-4 |
3 |
1 |
3,5 |
0.36363636363636 |
4 |
0,2 |
4,5 |
0.12903225806452 |
5 |
0.090909090909091 |