Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

external, pgfplots, babel et hyperref

16 views
Skip to first unread message

Christophe Jorssen

unread,
Nov 19, 2008, 4:42:31 AM11/19/08
to
Rebonjour,

Je me permets de poster ici une question que j'ai postée sur la liste pgf
il y a deux jours, comme je n'ai pas eu de réponse et que c'est un peu
pressé... Bien entendu si réponse il y a ici ou ailleurs, je la ferai
suivre.

J'utilise la bibliothèque tikz "external" qui permet de ne générer les
figures qu'une seule fois (permet d'économiser un temps non négligeable
de compilation). Elle est disponible dans la version CVS de pgf/tikz (que
j'utilise et dont la documentation peut être trouvée ici

http://www.texample.net/tikz/builds/2008/11/13/a/

). Je compile avec pdflatex avec write18 autorisé.

Le source suivant fonctionne.

\documentclass{article}
\RequirePackage[english,francais]{babel}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize{external-pgfplots}
\tikzset{external/force remake}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot plot (\x,\x);
\end{axis}
\end{tikzpicture}
\end{document}

Mais avec hyperref, ça ne fonctionne plus...

\documentclass{article}
\RequirePackage[english,francais]{babel}
\RequirePackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize{external-pgfplots}
\tikzset{external/force remake}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot plot (\x,\x);
\end{axis}
\end{tikzpicture}
\end{document}

Si babel n'est pas appelé avec l'option francais, pas de problème. Si
j'essaye d'utiliser \shorthandoff{;}, ça ne change rien tout comme un
\selectlanguage{english}.

De plus, si je ne fais pas appel à pgfplot, c'est-à-dire un truc simple
du style

\listfiles
\documentclass{article}
\RequirePackage[english,francais]{babel}
\RequirePackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize{external-pgfplots}
\tikzset{external/force remake}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{document}

Ça marche. Bref, je ne comprends rien...

Je travaille avec la version cvs à jour de pgfplots et de pgf/tikz.
*File List*
article.cls 2005/09/16 v1.4f Standard LaTeX document class
size10.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
babel.sty 2008/07/06 v3.8l The Babel package
bblopts.cfg 2005/09/08 v0.1 add Arabic and Farsi to "declared"
options of b
abel
english.ldf 2005/03/30 v3.3o English support from the babel system
frenchb.ldf 2008/05/08 v2.2a French support from the babel system
frenchb.cfg
scalefnt.sty
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
hyperref.sty 2008/09/29 v6.78l Hypertext links for LaTeX
ifpdf.sty 2007/12/12 v1.6 Provides the ifpdf switch (HO)
ifvtex.sty 2007/09/09 v1.3 Switches for detecting VTeX and its modes
(HO)
ifxetex.sty 2008/09/18 v0.4 Provides ifxetex conditional
hycolor.sty 2008/09/08 v1.4 Code for color options of hyperref/
bookmark (HO
)
xcolor-patch.sty 2008/09/08 xcolor patch
pd1enc.def 2008/09/29 v6.78l Hyperref: PDFDocEncoding definition (HO)
etexcmds.sty 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
infwarerr.sty 2007/09/09 v1.2 Providing info/warning/message (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
kvoptions.sty 2007/10/18 v3.0 Keyval support for LaTeX options (HO)
url.sty 2006/04/12 ver 3.3 Verb mode for urls, etc.
bitset.sty 2007/09/28 v1.0 Data type bit set (HO)
intcalc.sty 2007/09/27 v1.1 Expandable integer calculations (HO)
bigintcalc.sty 2007/11/11 v1.1 Expandable big integer calculations (HO)
pdftexcmds.sty 2007/12/12 v0.3 LuaTeX support for pdfTeX utility
functions (
HO)
kvsetkeys.sty 2007/09/29 v1.3 Key value parser with default handler
support
(HO)
atbegshi.sty 2008/07/31 v1.9 At begin shipout hook (HO)
hpdftex.def 2008/09/29 v6.78l Hyperref driver for pdfTeX
tikz.sty 2008/10/02 v2.00-cvs (rcs-revision 1.54)
pgf.sty 2008/01/15 v2.00-cvs (rcs-revision 1.12)
pgfrcs.sty 2008/05/19 v2.00-cvs (rcs-revision 1.22)
everyshi.sty 2001/05/15 v3.00 EveryShipout Package (MS)
pgfrcs.code.tex
pgfcore.sty 2008/01/15 v2.00-cvs (rcs-revision 1.6)
graphicx.sty 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
graphics.sty 2006/02/20 v1.0o Standard LaTeX Graphics (DPC,SPQR)
trig.sty 1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg 2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
pdftex.def 2008/09/08 v0.04l Graphics/color for pdfTeX
pgfsys.sty 2008/09/27 v2.00-cvs (rcs-revision 1.33)
pgfsys.code.tex
pgfsyssoftpath.code.tex 2008/07/18 (rcs-revision 1.7)
pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4)
xcolor.sty 2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pgfcore.code.tex
pgfcomp-version-0-65.sty 2007/07/03 v2.00-cvs (rcs-revision 1.7)
pgfcomp-version-1-18.sty 2007/07/23 v2.00-cvs (rcs-revision 1.1)
pgffor.sty 2008/08/31 v2.00-cvs (rcs-revision 1.15)
pgffor.code.tex
tikz.code.tex
pgfplots.sty 2008/09/16 Version 1.1 CVS
nameref.sty 2007/05/29 v2.31 Cross-referencing by name of section
refcount.sty 2008/08/11 v3.1 Data extraction from references (HO)
external-pgfplots.out
external-pgfplots.out
supp-pdf.tex
***********

Merci d'avance

--
Christophe

Paul Gaborit

unread,
Nov 19, 2008, 5:44:15 AM11/19/08
to

À (at) 19 Nov 2008 09:42:31 GMT,
Christophe Jorssen <christoph...@libre.fr.invalid> écrivait (wrote):

> Je me permets de poster ici une question que j'ai postée sur la liste pgf
> il y a deux jours, comme je n'ai pas eu de réponse et que c'est un peu
> pressé... Bien entendu si réponse il y a ici ou ailleurs, je la ferai
> suivre.

Je n'ai pas la réponse précise à votre problème d'autant que je n'ai
pas installé la version CVS de PGF/TikZ pour tester.

Juste deux remarques :

- généralement le package 'babel' doit être chargé le plus tard possible.

- le package 'pgfplots' n'évolue pas aussi vite que 'pgf' et il pose
bien plus de problèmes que 'pgf'.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Christophe Jorssen

unread,
Nov 19, 2008, 6:15:44 AM11/19/08
to
Le Wed, 19 Nov 2008 11:44:15 +0100, Paul Gaborit a écrit/wrote :

> À (at) 19 Nov 2008 09:42:31 GMT,
> Christophe Jorssen <christoph...@libre.fr.invalid> écrivait
> (wrote):
>> Je me permets de poster ici une question que j'ai postée sur la liste
>> pgf il y a deux jours, comme je n'ai pas eu de réponse et que c'est un
>> peu pressé... Bien entendu si réponse il y a ici ou ailleurs, je la
>> ferai suivre.
>
> Je n'ai pas la réponse précise à votre problème d'autant que je n'ai pas
> installé la version CVS de PGF/TikZ pour tester.

ok. Par ailleurs, si quelqu'un a installé la version cvs de pgf mais pas
la version cvs de pgfplots, je veux bien savoir si ça fonctionne.

> Juste deux remarques :
>
> - généralement le package 'babel' doit être chargé le plus tard
> possible.

C'est vrai. Mais ici, cela ne semble rien changer.

>
> - le package 'pgfplots' n'évolue pas aussi vite que 'pgf' et il pose
> bien plus de problèmes que 'pgf'.

Intéressant. De quel(s) point(s) de vue ?

Merci

--
Christophe

pacotomi

unread,
Nov 19, 2008, 2:13:41 PM11/19/08
to
Christophe Jorssen <christoph...@libre.fr.invalid> wrote:

> Rebonjour,
>
> Je me permets de poster ici une question que j'ai postée sur la liste pgf
> il y a deux jours, comme je n'ai pas eu de réponse et que c'est un peu
> pressé... Bien entendu si réponse il y a ici ou ailleurs, je la ferai
> suivre.
>
> J'utilise la bibliothèque tikz "external" qui permet de ne générer les
> figures qu'une seule fois (permet d'économiser un temps non négligeable
> de compilation). Elle est disponible dans la version CVS de pgf/tikz (que
> j'utilise et dont la documentation peut être trouvée ici
>

J'ai essayé ton code pour voir. J'ai exactement les mêmes problèmes avec
presque la même configuration (cvs de tikz-PGF mais pgfplots "normal")
J'ai essayé à tout hasard \shorthandoff{;:!?} mais ça ne donne rien non
plus.
Et je n'ai pas de solution, désolé. Au moins, tu sais que tu n'es pas
seul :-(

pacotomi

unread,
Nov 20, 2008, 3:23:44 PM11/20/08
to
pacotomi <paco...@orange.fr> wrote:

> Christophe Jorssen <christoph...@libre.fr.invalid> wrote:
>
> > Rebonjour,
> >

bla bla bla ....

> Et je n'ai pas de solution, désolé. Au moins, tu sais que tu n'es pas
> seul :-(

J'ai peut-être une solution. J'ai mis un \shorthandoff{;!?} { ici le
code} sur tout l'environnement tikzpicture. Chez moi ça compile. Est-ce
que cela fonctionne chez toi ?


\documentclass{article}
\usepackage[applemac]{inputenc} <----------- Modifier ici
\usepackage[T1]{fontenc} <--------------- et peut-être ici
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize{essai1} <------------------ modifier le nom


\tikzset{external/force remake}
\usepackage{pgfplots}

\usepackage[english,francais]{babel}
\begin{document}
{\shorthandoff{;!?}


\begin{tikzpicture}
\begin{axis}
\addplot plot (\x,\x);
\end{axis}
\end{tikzpicture} }
\end{document}

Pacotomi

Christophe Jorssen

unread,
Nov 20, 2008, 3:34:14 PM11/20/08
to
Le Thu, 20 Nov 2008 21:23:44 +0100, pacotomi a écrit/wrote :

> pacotomi <paco...@orange.fr> wrote:
>
>> Christophe Jorssen <christoph...@libre.fr.invalid> wrote:
>>
>> > Rebonjour,
>> >
> bla bla bla ....
>
>> Et je n'ai pas de solution, désolé. Au moins, tu sais que tu n'es pas
>> seul :-(
>
> J'ai peut-être une solution. J'ai mis un \shorthandoff{;!?} { ici le
> code} sur tout l'environnement tikzpicture. Chez moi ça compile. Est-ce
> que cela fonctionne chez toi ?

Ça fonctionne ! Bravo pour l'astuce. En fait, pour traiter globalement le
problème de babel avec tikz, je fais la chose suivante

\makeatletter
\let\xCJtikz@tikzpicture\tikzpicture
\def\tikzpicture{\shorthandoff{!:;}\xCJtikz@tikzpicture}
\let\xCJtikz@endtikzpicture\endtikzpicture
\def\endtikzpicture{\xCJtikz@endtikzpicture\shorthandon{!:;}}

Mais, je le faisais *avant* l'appel à la tikzlibrary external, qui
visiblement modifie de manière profonde tikzpicture, ce qui fait que mon
hook disparaissait probablement (à confirmer).

Du coup, le code suivant semble fonctionner.

\listfiles
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize{external-pgfplots}


\tikzset{external/force remake}
\usepackage{pgfplots}

\RequirePackage[english,francais]{babel}
\RequirePackage{hyperref}

\makeatletter
\let\xCJtikz@tikzpicture\tikzpicture
\def\tikzpicture{\shorthandoff{!:;}\xCJtikz@tikzpicture}
\let\xCJtikz@endtikzpicture\endtikzpicture
\def\endtikzpicture{\xCJtikz@endtikzpicture\shorthandon{!:;}}

\begin{document}

\begin{tikzpicture}
\begin{axis}
\addplot plot (\x,\x);
\end{axis}
\end{tikzpicture}
\end{document}

Un grand merci.

Question subsidiaire : que faudrait-il changer à tikz pour ne plus avoir
ce problème avec les caractères actifs ?

--
Christophe

pacotomi

unread,
Nov 20, 2008, 3:38:25 PM11/20/08
to
pacotomi <paco...@orange.fr> wrote:

Ah oui, j'oubliais. J'ai découvert avec ta question «l'externalisation».
Vraiment très bien ce truc. Comme j'en suis à la page 10 du manuel, il
aurait fallu du temps avant de m'apercevoir que cela existe ;-))
Donc merci pour ce bon temporaire dans le futur. Je retourne de ce pas à
la page 11 du manuel <:o)

Pacotomi

pacotomi

unread,
Nov 20, 2008, 3:57:31 PM11/20/08
to
Christophe Jorssen <christoph...@libre.fr.invalid> wrote:

> Le Thu, 20 Nov 2008 21:23:44 +0100, pacotomi a écrit/wrote :
>
> > pacotomi <paco...@orange.fr> wrote:

>
> \makeatletter
> \let\xCJtikz@tikzpicture\tikzpicture
> \def\tikzpicture{\shorthandoff{!:;}\xCJtikz@tikzpicture}
> \let\xCJtikz@endtikzpicture\endtikzpicture
> \def\endtikzpicture{\xCJtikz@endtikzpicture\shorthandon{!:;}}

Tout cela dépasse mes compétences. Je ne suis pas informaticien.
Astucieux parfois ... mais pas informaticien ...


>
> Question subsidiaire : que faudrait-il changer à tikz pour ne plus avoir
> ce problème avec les caractères actifs ?

Désolé, mais là je suis incompétent. Si le code ci-dessus fonctionne,
pourquoi ne pas le soumettre au concepteur de TikZ ou mieux peut-être au
gestionnaire de Babel-French. Il doit bien y avoir moyen de mettre dans
babel-french une condition du genre : si tu rencontres un environnement
TikZ ou PGF encadre-le dans un shorthandoff ?
Le seul inconvénient sera --- je suppose --- de devoir respecter «à la
main» la typo française à l'intérieur de l'environnement TikZ/PGF.
Ceci dit, ce serait utile que Daniel Flipo se penche sur le problème car
la compatibilité TikZ /Babel-french devient une FAQ sur le net.

Pacotomi

Christophe Jorssen

unread,
Nov 20, 2008, 3:59:59 PM11/20/08
to
Le Thu, 20 Nov 2008 21:38:25 +0100, pacotomi a écrit/wrote :

> pacotomi <paco...@orange.fr> wrote:
>
>> pacotomi <paco...@orange.fr> wrote:
>>
>> > Christophe Jorssen <christoph...@libre.fr.invalid> wrote:
>> >
>> > > Rebonjour,
>> > >
>> bla bla bla ....
>>
>> > Et je n'ai pas de solution, désolé. Au moins, tu sais que tu n'es pas
>> > seul :-(
>>
>> J'ai peut-être une solution. J'ai mis un \shorthandoff{;!?} { ici le
>> code} sur tout l'environnement tikzpicture. Chez moi ça compile. Est-ce
>> que cela fonctionne chez toi ?
>>
>>
>> \documentclass{article}
>> \usepackage[applemac]{inputenc} <----------- Modifier ici
>> \usepackage[T1]{fontenc} <--------------- et peut-être ici
>> \usepackage{hyperref}
>> \usepackage{tikz}
>> \usetikzlibrary{external}
>> \tikzexternalize{essai1} <------------------ modifier le nom

> Ah oui, j'oubliais. J'ai découvert avec ta question «l'externalisation».


> Vraiment très bien ce truc. Comme j'en suis à la page 10 du manuel, il
> aurait fallu du temps avant de m'apercevoir que cela existe ;-)) Donc
> merci pour ce bon temporaire dans le futur. Je retourne de ce pas à la
> page 11 du manuel <:o)

Pas de problème. Tu m'as fait aussi gagner un temps précieux :-)

Reste plus qu'à trouver comment dire a emacs de compléter automatiquement
l'argument de \tikzexternalize et ce sera parfait...

--
Christophe

Christophe Jorssen

unread,
Nov 23, 2008, 5:19:44 AM11/23/08
to
Le Thu, 20 Nov 2008 20:34:14 +0000, Christophe Jorssen a écrit/wrote :

> Le Thu, 20 Nov 2008 21:23:44 +0100, pacotomi a écrit/wrote :
>
>> pacotomi <paco...@orange.fr> wrote:
>>
>>> Christophe Jorssen <christoph...@libre.fr.invalid> wrote:
>>>
>>> > Rebonjour,
>>> >
>> bla bla bla ....
>>
>>> Et je n'ai pas de solution, désolé. Au moins, tu sais que tu n'es pas
>>> seul :-(
>>
>> J'ai peut-être une solution. J'ai mis un \shorthandoff{;!?} { ici le
>> code} sur tout l'environnement tikzpicture. Chez moi ça compile. Est-ce
>> que cela fonctionne chez toi ?
>

En fait, je code que j'ai donné précédemment n'est pas complet à cause du
fait que la librairie external redéfinit tikzpicture. Le code suivant
devrait suffire et automatiser le tout.

% Problème entre babel et tikz à cause des caractères actifs
\let\xCJtikz@tikzpicture\tikzpicture
\def\tikzpicture{\shorthandoff{!:;?}\xCJtikz@tikzpicture}


\let\xCJtikz@endtikzpicture\endtikzpicture
\def\endtikzpicture{\xCJtikz@endtikzpicture}

% Même problème, mais avec la library external
\let\xCJtikz@tikzexternal@tikzpicture@replacement
\tikzexternal@tikzpicture@replacement
\def\tikzexternal@tikzpicture@replacement{%
\shorthandoff{!:;?}\xCJtikz@tikzexternal@tikzpicture@replacement}

--
Christophe

0 new messages