Une MAJ de tikz rend obsolète mon code ?

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

[Résolu] Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Bonjour,
je suis enseignante en maths et il y a deux ans, j'ai passé beaucoup de temps à taper mon cours pour mes premières. Je me suis bien amusée avec LateX en créant notamment mon cours de trigo, et tous les cercles qui y sont associés.
néanmoins, en voulant réutiliser une figure dans un autre document, je m'aperçois que je ne peux plus le compiler. Il fonctionnait très bien lorsque je l'ai crée, plus maintenant.
Est-ce que quelqu'un d'autre a rencontré ce soucis ?
voici notamment, une figure très simple qui ne fonctionne plus :

Code : Tout sélectionner

\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
\tkzDrawArc[color=blue,very thick](O,A)(M)
\tkzDrawSegments(O,A O,M)
\tkzMarkAngle[size=0.7](A,O,M)
\tkzLabelPoints[below](O,A)
\tkzLabelPoint[above](M){$M$}
\tkzLabelAngle[pos=1](A,O,M){$\beta$°}
\end{tikzpicture}
Ceci est censé donner la figure en pièce-jointe.

j'utilise Tikz pour beaucoup, beaucoup de chose... j'ai donc un préambule plein de tikz, et comme ça se rempli de façon non linéaire, ce n'est certainement pas optimisé. Depuis l'an passé, j'ai retiré le \usetkzobj{all} qui semble être maintenant intégré dans la version 3.
Est-ce que c'est aussi le cas d'autres ? est-ce que je pb peut venir de là ?

En compilant juste ce code, j'ai 15 erreurs. la première est :

Code : Tout sélectionner

! Package tikz Error : + or - expected  
(pas de précision de ligne)
puis,  l.96\tkzDrawSegments(O,A O,M)
! Package tikz Error : Giving up on this path. Did uoi forget a semicolon?
Voici la liste des packages que je charge en préambule en rapport avec tikz :

Code : Tout sélectionner

\usepackage[tikz]{bclogo}
\usepackage{tikz,tkz-tab}
\usepackage{tikz}
\usepackage{pgf,tikz}
\usepackage{tkz-euclide} %permet de faire des macros avec les figures géométriques
%\usetkzobj{all} %On charge tous les objets de la librairie de tkz euclide
\usepackage{pgfplots}
%\usetikzlibrary{arrows}
\usetikzlibrary[patterns]  %pour faire des zones hachurées
Edit : bon... je pensais qu'en mettant le code entre balise tex ça marcherait. c'est ce que j'avais cru comprendre en lisant le post dédié... j'ai du mal. J'en suis bien désolée. Si je retire les balises, j'ai l'impression qu'il l'exécute. Comment faire pour faire afficher le code ? :/ pardon... je n'ai jamais rien compris au mode de fonctionnement de tex sur les forums !

à défaut je joins aussi le .log
Pièces jointes
1Spe-CH3-trigonometriepour tester.log
(63.09 Kio) Téléchargé 12 fois
Capture d’écran 2022-06-16 134936.jpg
Capture d’écran 2022-06-16 134936.jpg (4.74 Kio) Consulté 192 fois
Thibault
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 201
Inscription : jeudi 28 février 2008, 16:20
Localisation : Vendée

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par Thibault »

Bonjour,

J'ai testé ton code en compilant avec XeLaTeX et cela fonctionne. Voici mon "ECM" avec les extensions utilisées:

Code : Tout sélectionner

%!TEX encoding = UTF-8 Unicode
%!TEX TS-program = xelatex

\documentclass[french]{article}

\usepackage{fontspec}
\usepackage{amsmath}
\usepackage[math-style=ISO,bold-style=ISO,Style={leqslant,subsetneq,parallelslant}]{fourier-otf}

\usepackage[svgnames]{xcolor}
%****************************************_Tikz et tkz_****************************************
\usepackage{tkz-tab,tkz-euclide,tkz-fct}
\color{black}

\begin{document}

\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
\tkzDrawArc[color=blue,very thick](O,A)(M)
\tkzDrawSegments(O,A O,M)
\tkzMarkAngle[size=0.7](A,O,M)
\tkzLabelPoints[below](O,A)
\tkzLabelPoint[above](M){$M$}
\tkzLabelAngle[pos=1](A,O,M){$\beta$°}
\end{tikzpicture}

\end{document}
et avec LaTeX aussi cela fonctionne :

Code : Tout sélectionner

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}			% Caractères accentués
\usepackage[english,frenchb]{babel}		% Typographie française
\usepackage[autolanguage,np]{numprint}	% séparateur décimal pour les milliers commande de babel \nombre{12354}
\usepackage[T1]{fontenc}				% Caractères accentués
\usepackage{textcomp}				% Caractères spéciaux
\usepackage{amsmath}


\usepackage[svgnames]{xcolor}
%****************************************_Tikz et tkz_****************************************
\usepackage{tkz-tab,tkz-euclide,tkz-fct}


\begin{document}

\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
\tkzDrawArc[color=blue,very thick](O,A)(M)
\tkzDrawSegments(O,A O,M)
\tkzMarkAngle[size=0.7](A,O,M)
\tkzLabelPoints[below](O,A)
\tkzLabelPoint[above](M){$M$}
\tkzLabelAngle[pos=1](A,O,M){$\beta$°}
\end{tikzpicture}

\end{document}
La seule petite différence est une petite marque sur l'arc de cercle de l'angle :
Sélection_208.png
Sélection_208.png (14.93 Kio) Consulté 186 fois
Bon courage

Tibo
Thibault
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 20.04)
Distrib TeXlive
Éditeur GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.14) + auctex + yasnippets
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

tout d'abord merci à la personne qui est passé mettre les balises code :) c'est mieux !

et merci pour tous les tests.
j'en conclus donc que c'est peut-être des extensions que j'ai dans mon préambule qui rentrent en conflit avec tikz.
je pars à la recherche...
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Je reviens, car après test des codes que thibault a donné, ça ne compile pas chez moi...
j'ai eu des erreurs du type 'tkz-base et tkz-fct" doivent être loadées avant tkz-euclide . J'ai donc changé l'ordre, et l'erreur est partie. mais pour le reste... ça reste ! La page obtenue est chargée mais vide.
est-ce que ça peut venir de mon compilateur ?
j'utilise TexnicCenter.

Code : Tout sélectionner

\documentclass[a4paper,12pt,french]{article}%

\usepackage[utf8]{inputenc}			% Caractères accentués
\usepackage[english,french]{babel}		% Typographie française
\usepackage[autolanguage,np]{numprint}	% séparateur décimal pour les milliers commande de babel \nombre{12354}
\usepackage[T1]{fontenc}				% Caractères accentués
\usepackage{textcomp}				% Caractères spéciaux
\usepackage{amsmath}


\usepackage[svgnames]{xcolor}
%****************************************_Tikz et tkz_****************************************
\usepackage{tkz-tab,tkz-base,tkz-fct,tkz-euclide}



 \begin{document}

\begin{tikzpicture}[scale=.8]
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
%\tkzLabelCircle[above=4pt](O,A)(140){$\CC$}
\tkzDrawArc[color=blue,very thick](O,A)(M)
\tkzDrawSegments(O,A O,M)
\tkzMarkAngle[size=0.7](A,O,M)
\tkzLabelPoints[below](O,A)
\tkzLabelPoint[above](M){$M$}
\tkzLabelAngle[pos=1](A,O,M){$\beta$°}
\end{tikzpicture}

\end{document}
14 erreurs, que je n'arrive pas à décrypter.
par ex : ! Package tikz Error: + or - expected.

ou bien :

Code : Tout sélectionner

  l.29 \tkzDrawSegments(O,A O,M)
This error message was generated by an \errmessage
command, so I can't give any explicit help.
Pretend that you're Hercule Poirot: Examine all clues,
and deduce the truth by order and method. 
<= j'aime :lol: :lol:

Je joins le log.
Pièces jointes
1Spe-CH3-trigonometriepour tester.log
(41.61 Kio) Téléchargé 14 fois
Thibault
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 201
Inscription : jeudi 28 février 2008, 16:20
Localisation : Vendée

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par Thibault »

Chez moi ça compile bien sans rien changer à mes codes.
Voici mes commandes de compilation (dans emacs) :
Pour XeLaTex :

Code : Tout sélectionner

xelatex -shell-escape %s.tex
Pour LaTeX :

Code : Tout sélectionner

latex -shell-escape -interaction=nonstopmode %s.tex && dvips -o %s.ps  %s.dvi && ps2pdf -sPAPERSIZE#a4 -dCompatibilityLevel=1.4 %s.ps
Voilà, à voir avec tes comandes de compilation dans TexnicCenter

Bon courage
Thibault
Prof de maths...
Utilisateur de LaTeX sous Linux (kubuntu 20.04)
Distrib TeXlive
Éditeur GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.14) + auctex + yasnippets
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Thibault a écrit : vendredi 17 juin 2022, 11:32
Pour LaTeX :

Code : Tout sélectionner

latex -shell-escape -interaction=nonstopmode %s.tex && dvips -o %s.ps  %s.dvi && ps2pdf -sPAPERSIZE#a4 -dCompatibilityLevel=1.4 %s.ps
Voilà, à voir avec tes comandes de compilation dans TexnicCenter
Je dois l'écrire où ?
Pièces jointes
Capture d’écran 2022-06-17 114756.jpg
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Bon après test des différentes lignes une à une, en fait une seule pose problème : \tkzDrawSegments qui ne semble plus convenir.

j'ai eu beau chercher, je ne comprends pas ce qui ne va pas. Alors que tout allait bien avec ce document il y a un an.
Je vais peut-être contacter le rédacteur Alain Matthes du document Tkz-Euclide.
En attendant, j'ai écrit à l'ancienne, j'aime moyennement mixer les deux versions car une fois il faut des point-virgules et une autre non ! \draw (O)--(A);

Code : Tout sélectionner


\documentclass[a4paper,12pt,french]{article}%

\usepackage[utf8]{inputenc}			% Caractères accentués
\usepackage[english,french]{babel}		% Typographie française
\usepackage[autolanguage,np]{numprint}	% séparateur décimal pour les milliers commande de babel \nombre{12354}
\usepackage[T1]{fontenc}				% Caractères accentués
\usepackage{textcomp}				% Caractères spéciaux
\usepackage{amsmath}


\usepackage[svgnames]{xcolor}
%****************************************_Tikz et tkz_****************************************
\usepackage{pgf,tikz}
\usepackage{tkz-tab,tkz-base,tkz-fct,tkz-euclide}



 \begin{document}

\begin{tikzpicture}[scale=.8]
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
%\tkzLabelCircle[above=4pt](O,A)(140){$\CC$}
\tkzDrawArc[color=blue,very thick](O,A)(M)
%\tkzDrawSegments(A,O  M,O)<= abandonnée
\draw (O)--(A);
\draw (O)--(M);
\tkzMarkAngle[size=0.7](A,O,M)
\tkzLabelPoints[below](O,A)
\tkzLabelPoint[above](M){$M$}
\tkzLabelAngle[pos=1](A,O,M){$\beta$°}
\end{tikzpicture}
et ça fonctionne.
C'est déjà rassurant de pouvoir cibler l'erreur. Ceci étant, est ce que dans la version tikz et non tkz, peut-on dessiner plusieurs segments en même temps ?
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par gigiair »

TeXnicenter n'a rien à voir dans le débat, c'est un simple éditeur de texte qui ne peut produire aucun message d'erreur de la compilation. Il se contente de transmettre le fichier au compilateur et affiche les messages produits par le compilateur.
-shell-escape non plus n'a rien à voir dans le débat.
J''ai deux machines sous TeXLive/Debian l'une avec la version stable et l'autre avec la version testing (logiciels plus à jour)
J'ai composé un ECM qui compile, mais pas si l'on décommente les parties commentées sous Debian testing contrairement à la version sous Debian stable.
AMHA il s'agit d'un bug. Le mieux est d'attendre un correctif (contacter Alain Mattes éventuellement)

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage{tkz-euclide}
\usepackage{babel}
\listfiles{}
\begin{document}
%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,-1){A}
\tkzDefPointBy[rotation= center O angle 60](A)
\tkzGetPoint{M}
\tkzDrawCircle(O,A)
\tkzLabelCircle[right=4pt](O,A)(30){$l$} %30 correspond à l'angle par rapport à OA
\tkzDrawArc[color=blue,very thick](O,A)(M)
% \tkzDrawSegments(O,A O,M)
% \tkzMarkAngle[size=0.7](A,O,M)
% \tkzLabelPoints[below](O,A)
% \tkzLabelPoint[above](M){$M$}
% \tkzLabelAngle[pos=1](A,O,M){$\beta$\degres}
\end{tikzpicture}
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\end{document}
J'ai utilisé la macro \degres qui vient avec french de babel (juste que c'est plus joli) J'ai ajouté listfiles qui permet de connaître (dans le fichier log) les versions des packages appelés.
Ma testing n'était pas très à jour. Je suis en train de recevoir la dernière version de TeXLive. Si ça change quelque chose, je compléterai ce message dans une heure environ.
JJR.
LaTeXien migrateur.
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Merci pour ces précisions.
J'avais en effet penser à contacter Alain Matthes. Je n'osais pas trop... c'est un peu un Dieu vivant pour moi :roll:
Je vais tout de même le faire, ça serait chouette d'avoir une réponse.

merci à tous les deux pour le temps passer sur mon problème.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par gigiair »

Il faut lui fournir le fichier ECM et le log correspondant.
JJR.
LaTeXien migrateur.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par MB »

Ou un lien vers ce sujet. A une époque il passait régulièrement et normalement il a un compte.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
missPi
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : jeudi 16 juin 2022, 12:32
Statut actuel : Enseignant

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par missPi »

Je lui ai envoyé un mail avec les fichiers .tex et .log joints.
Il m'a répondu très rapidement.
C'est apparemment un conflit dû à l'accentuation française et à Babel.

Ca fonctionne parfaitement maintenant !
Je copie/colle son message car l'air de rien, je crois qu'il peut être utile à d'autres pour nettoyer un peu leur préambule :)
Pour info, j'ai tout de même laissé \usepackage[french]{babel} pour que mon chapitre entier compile correctement. Mais c'est un énorme soulagement !!

Merci à tous pour l'aide

voici donc la réponse d'Alain Matthes :
La version 4.2 de tkz-euclide est prête et va sortir bientôt et il se peut que cela entraîne quelques modifications dans les anciens codes.

Non il n’y a pas de bug mais TikZ génère parfois des problèmes avec certains
caractères actifs employés avec les langues occidentales, particulièrement latines.

Votre code compile si vous supprimez la ligne avec babel : \usepackage[english,french]{babel}

Là il y a un moyen de s’en sortir avec l’aide de TikZ c’est de charger après tkz-euclide, \usetikzlibrary{babel} :

Code : Tout sélectionner

\usepackage{tkz-tab,tkz-base,tkz-fct,tkz-euclide}
\usetikzlibrary{babel}
Au passage vous pouvez supprimer la ligne \usepackage{pgf,tikz} car tkz-euclide charge TikZ.

Vous n’avez pas besoin à priori de « english » avec babel sauf si bien sûr vous mélangez les deux langues.

Un conseil il est désormais possible de travailler en UTF8 ce qui permet de supprimer les lignes:
\usepackage[utf8]{inputenc}
et
\usepackage[T1]{fontenc}

Je compile toutes mes documentations avec UTF8 et avec lualatex, sans aucun problème.
Edit : j'ai voulu mettre mon premier post en "résolu" mais étrangement, c'est le seul post qui ne me propose pas l'édition... quand ça veut pas, ça veut pas !!
Dernière modification par missPi le vendredi 17 juin 2022, 19:19, modifié 1 fois.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2703
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Une MAJ de tikz rend obsolète mon code ?

Message non lu par gigiair »

J'ai reçu la dernière mise à jour de TeXLive sur testing/Debian. Aucun changement, l'erreur vient apparemment du fichier tkz-obj-eu-draw-lines.tex version 4.051b du 25 février 2022. J'essaye de faire un latexdiff pour voir si je peux trouver le défaut, mais je suis une brèle en TeX et en tikz en particulier.
JJR.
LaTeXien migrateur.