incompatibilité pgf-pie et \no

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

incompatibilité pgf-pie et \no

Messagepar anonyme74170 » Vendredi 22 Décembre 2017, 11:06

Bonjour,

suivant que l'on charge le package pgf-pie, on obtient le résultat souhaité (pas activé) ou non activé. Le caractère "°" n'est placé au bon endroit.

L'ECM :
Code: Tout sélectionner
\documentclass[11pt,twoside, french]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}

%\usepackage{pgf-pie} % pie chart

\begin{document}   
 \no 1
\end{document}


Comment pourrait-on trouver une solution ?
Merci bien.
AO
anonyme74170
Hecto-utilisateur
 
Messages: 53
Inscription: Jeudi 21 Avril 2016, 10:34
Statut actuel: Actif et salarié

Publicité

Re: incompatibilité pgf-pie et \no

Messagepar OG » Vendredi 22 Décembre 2017, 14:44

Bonjour

pgf-pie redéfinit \scalefont et c'est la cause du mauvais positionnement. Compilé avec texlive 2017 et l'entête
(\usetikzlibrary{babel} est important)
Code: Tout sélectionner
\documentclass[11pt,twoside,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage{pgf-pie_mod} % pie chart modifié à la va vite.
\usetikzlibrary{babel}


\begin{document}   
\no 1
ooo
\no aa

O\fup{p}

\begin{tikzpicture}
\pie{10/A, 20/, 30/, 40/}
\pie[pos={8,0},  rotate =180]{10/ , 20/, 30/,
40/}
\pie[pos={17,0},  radius =4]{10/ , 20/, 30/, 40/}
\end{tikzpicture}

\end{document}


mais en utilisant une version modifiée de pgf-pie (remplacement des \scalefont pas \sscalefont, voir fichier ci-joint)
j'obtiens un camembert et un numéro bien placé. Mais je ne garantis pas d'autres effets de bord, d'autres incompatibilités...
Il y a certainement un moyen plus élégant...

O.G.
Fichiers joints
pgf-pie_mod.sty
(10.31 Kio) Téléchargé 4 fois
OG
Modérateur
 
Messages: 2227
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: incompatibilité pgf-pie et \no

Messagepar balf » Vendredi 22 Décembre 2017, 14:53

Il semble que ce soit la commande\up de french qui soit modifiée. Le résultat est en effet que le « o » de \no, non seulement soit mal placé, mais que la taille de police utilisée soit \normal size.

En attendant qu'une solution soit trouvée, je vous propose de définir des commandes \mup et \mno qui n'ont pas ce problème et n'est qu'une version légèrement modifiée de celle de french, et qui donne sensiblement le même résultat. Pour comparaison, vous pourrez vérifier que la solution « évidente » utilisant \textsuperscriptplace le o nettement plus haut que french:
Code: Tout sélectionner
    \documentclass[11pt,twoside, french]{article}

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
     \usepackage{pgf-pie} % pie chart
    \usepackage{babel}
    \providecommand*{\mup}[1]{\leavevmode{\raise0.75ex\hbox{\scriptsize#1}}}
    \DeclareRobustCommand*{\mno}{n\mup{o}\FBmedkern}

    \begin{document}

    Avec \verb|pgfpie| : \medskip

    n\textsuperscript{o\FBmedkern}1 \quad\no 1\quad\mno 1

    \end{document}

En p.j. les pdf avec et sans chargement de pgfpie, pour comparer.

B. A.
Fichiers joints
pbpgfpie+french.pdf
(59.51 Kio) Téléchargé 3 fois
pbpgfpie-french.pdf
(74.21 Kio) Téléchargé 6 fois
balf
Zetta-utilisateur
 
Messages: 3692
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: incompatibilité pgf-pie et \no

Messagepar anonyme74170 » Samedi 23 Décembre 2017, 09:15

Bonjour,

Merci à vous deux. Pour le moment je tente la solution de B.A.
1) Lorsque je copie le code proposé j'ai les messages d'erreurs suivants :
Code: Tout sélectionner
! Undefined control sequence.
<argument> ...sf@size \z@ \selectfont o\FBmedkern
                                                 
l.15     n\textsuperscript{o\FBmedkern}
                                       1 \quad\no 1\quad\mno 1
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Undefined control sequence.
\mno  ->n\mup {o}\FBmedkern
                           
l.15 ...erscript{o\FBmedkern}1 \quad\no 1\quad\mno
                                                   1
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.


2) ce qui fonctionne dans un texte normal c'est :
Code: Tout sélectionner
\documentclass[11pt,twoside, french]{article}

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage{pgf-pie} % pie chart
    \usepackage{babel}
    \providecommand*{\mup}[1]{\leavevmode{\raise0.75ex\hbox{\scriptsize#1}}}
   % \DeclareRobustCommand*{\mno}{n\mup{o}\FBmedkern}

    \begin{document}

    Avec \verb|pgfpie| : \medskip

   n\mup{o}1
   \begin{flushright}\huge \bfseries
    Note  n\mup{o} 1
     \end{flushright}
 \end{document}


En revanche dans le texte « huge », il me semble que le « ° » soit un peu petit.

Sur un plan purement opérationnel, cette solution n\mup{o} me convient. Mais peut-être faut-il pousser les solutions un peu plus loin pour être plus robuste.
Merci bien.
AO
anonyme74170
Hecto-utilisateur
 
Messages: 53
Inscription: Jeudi 21 Avril 2016, 10:34
Statut actuel: Actif et salarié

Re: incompatibilité pgf-pie et \no

Messagepar touhami » Samedi 23 Décembre 2017, 11:08

Bon jour.
Comme il a déjà été dit par OG, il s'agit d'une redéfinition incorrecte de la commande \scalefont. Vous pouvez essayer le code suivant

Code: Tout sélectionner
\makeatletter
\renewcommand{\scalefont}[1]
{%   %<-  % était manquant
  \ifscalefont
  \pgfmathparse{#1 / \pgfpie@sum * 3 + 0.9}
  \scalefontorg{\pgfmathresult}
  \else  % cette partie a été oublié
  \scalefontorg{#1}
  \fi
}
\makeatother
touhami
Méga-utilisateur
 
Messages: 389
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac

Re: incompatibilité pgf-pie et \no

Messagepar balf » Samedi 23 Décembre 2017, 11:58

@anonyme74170: effectivement, je n'ai testé qu'avec \normalsize, que ce soit 10, 11 ou 12 pt . Dès que vous changez par rapport à cette taille, utiliser \scriptsize pour le o haut perché n'a plus de sens.
Quant au \FBmedkern, c'est un crénage défini par babel-french, utilisé dans la définition de la commande \up, que j'ai repris tel quel, sans me poser trop de questions puisque ça marchait chez moi. Je vais essayer d'enquêter.
B. A.
balf
Zetta-utilisateur
 
Messages: 3692
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: incompatibilité pgf-pie et \no

Messagepar OG » Samedi 23 Décembre 2017, 14:33

Bonjour

Merci touhami. Ce matin (j'avais autre chose à faire) je me disais bien que
le \scalefont redéfini par pgf-pie n'était pas très propre. Le code de pgf-pie n'est pas trés long (moins de 500 lignes).

pgf-pie ne redéfinit ni \up ni \fup (qui sont définis par frenchb) mais redéfinit
la commande \scalefont. La commande \scalefont est par contre utilisée par frenchb
Code: Tout sélectionner
 \AtEndOfPackage{\RequirePackage{scalefnt}}
  \newcommand*{\FBsupR}{-0.12}
  \newcommand*{\FBsupS}{0.65}
  \newcommand*{\FB@lc}[1]{\MakeLowercase{#1}}
  \DeclareRobustCommand*{\FB@up@fake}[1]{%
    \settoheight{\FB@Mht}{M}%
    \addtolength{\FB@Mht}{\FBsupR \FB@Mht}%
    \addtolength{\FB@Mht}{-\FBsupS ex}%
    \raisebox{\FB@Mht}{\scalefont{\FBsupS}{\FB@lc{#1}}}%
    }
................

d'où (avec un \scalefont avec effet de bord) le comportement non désiré de \up, \fup...

En général les définitions de commandes contiennent des tas de '%' en fin de ligne, pour éviter
la création d'espace. Comme l'a détecé touhami il y a un pb. Par contre le code donné par touhami semble toujours mettre un espace
et surtout "cassé" pgf-pie avec des tailles de caractères immenses
J'ai enlevé le \else et \scalefontorg{#1}
Code: Tout sélectionner
\makeatletter
\renewcommand{\scalefont}[1]
{%   %<-  % était manquant
\ifscalefont%
\pgfmathparse{#1 / \pgfpie@sum * 3 + 0.9}%
\scalefontorg{\pgfmathresult}%
\fi%
}
\makeatother

cela semble fonctionner. (un \no et un camembert).

Je ne sais pas s'il y a des alternatives (maintenues et sans effet de bord) à pgf-pie.

Joyeuses fêtes de fin d'année
O.G.
OG
Modérateur
 
Messages: 2227
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: incompatibilité pgf-pie et \no

Messagepar touhami » Samedi 23 Décembre 2017, 16:01

Je suis très désolé, je n'ai pas testé que ce qui ce passe de coté de *pgf-pie* (je n'aime pas le camembert :oops: )
touhami
Méga-utilisateur
 
Messages: 389
Inscription: Dimanche 11 Février 2007, 11:45
Statut actuel: Post-bac


Retourner vers LaTeX

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Grapeshot [Crawler], marco56 et 14 invités