|
#1
![]() |
|
|
|
Bonjour
Je désire faire un fichier de style avec des options sous la forme clé=valeur et où valeur peut être du texte codé en UTF8. Ci-dessous un ECM qui ne marche pas : lorsque l'on demande d'afficher la valeur d'une clé, les lettres accentuées se transforment en une bouillie infâme. Quelqu'un a-t-il une solution ? Merci d'avance. François %%%%%%%%%%%%% ECM %%%%%%%%%%%%%%%%%%%%%% \documentclass{article} \begin{filecontents}{testpack.sty} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} \RequirePackage{xkeyval} \DeclareOptionX*{} \def\test@Numero{} \def\test@Date{} \def\test@Theme{} \define@key{cfg}{numero}[]{\gdef\test@Numero{#1}} \define@key{cfg}{date}[]{\gdef\test@Date{#1}} \define@key{cfg}{theme}[]{\gdef\test@Theme{#1}} \edef\@tempa{\noexpand\setkeys{cfg}{\@ptionlist{te stpack.sty}}} \@tempa \ProcessOptionsX \RequirePackage{lmodern} \newcommand*{\useTestNumero}{\test@Numero} \newcommand*{\useTestDate}{\test@Date} \newcommand*{\useTestTheme}{\test@Theme} \endinput \end{filecontents} \usepackage[numero=123,date={décembre 2018},theme={éàçèâêîôûüöë?}]{testpack} \begin{document} Numéro = \useTestNumero; Date = \useTestDate; Fil rouge = \useTestTheme \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%
|
#2
![]() |
|
|
|
Le 15/04/2018 à 18:27, Pétiard François a écrit :
> Bonjour > Je désire faire un fichier de style avec des options sous la forme > clé=valeur et où valeur peut être du texte codé en UTF8. > Ci-dessous un ECM qui ne marche pas : lorsque l'on demande d'afficher la > valeur d'une clé, les lettres accentuées se transforment en une bouillie > infâme. > Quelqu'un a-t-il une solution ? > Merci d'avance. > François C'est parce que les options passent dans un \edef. Le package kvoptions (d'Heiko Oberdiek) propose l'extension {kvoptions-patch} pour résoudre ce cas : % -------------------------------------------------- \documentclass{article} \usepackage {kvoptions-patch} \begin{filecontents}{testpack.sty} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} %\RequirePackage{xkeyval} \usepackage {kvoptions} \SetupKeyvalOptions {family=cfg} \DeclareOptionX*{} \def\test@Numero{} \def\test@Date{} \def\test@Theme{} \define@key{cfg}{numero}[]{\gdef\test@Numero{#1}} \define@key{cfg}{date}[]{\gdef\test@Date{#1}} \define@key{cfg}{theme}[]{\gdef\test@Theme{#1}} \edef\@tempa{\noexpand\setkeys{cfg}{\@ptionlist{te stpack.sty}}} \@tempa %\ProcessOptionsX \ProcessKeyvalOptions* \RequirePackage{lmodern} \newcommand*{\useTestNumero}{\test@Numero} \newcommand*{\useTestDate}{\test@Date} \newcommand*{\useTestTheme}{\test@Theme} \endinput \end{filecontents} \usepackage[numero=123,date={décembre 2018},theme={éàçèâêîôûüöë?}]{testpack} \begin{document} Numéro = \useTestNumero; Date = \useTestDate; Fil rouge = \useTestTheme \end{document} % --------------------------------------- Remarque perso: je trouve que xkeyval est une vraie m***e. Je me demande comment certains peuvent utiliser ce package pour une tâche aussi basique que fixer des clé=valeur... |
#3
![]() |
|
|
|
Le 15/04/2018 à 19:43, GL a écrit :
> Le 15/04/2018 à 18:27, Pétiard François a écrit : > C'est parce que les options passent dans un \edef. > Le package kvoptions (d'Heiko Oberdiek) propose l'extension > {kvoptions-patch} pour résoudre ce cas : >> Remarque perso: je trouve que xkeyval est une vraie m***e. > Je me demande comment certains peuvent utiliser ce package > pour une tâche aussi basique que fixer des clé=valeur... Merci mais, désolé, ça ne marche pas ; j'ai toujours de la bouillie... %----------------------------------------------------------- \documentclass{article} \usepackage{kvoptions-patch} \begin{filecontents}{testpack.sty} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} \RequirePackage{kvoptions} \SetupKeyvalOptions{family=cfg} \def\test@Numero{} \def\test@Date{} \def\test@Theme{} \define@key{cfg}{numero}[]{\gdef\test@Numero{#1}} \define@key{cfg}{date}[]{\noexpand\gdef\test@Date{#1}} \define@key{cfg}{theme}[]{\gdef\test@Theme{#1}} \edef\@tempa{\noexpand\setkeys{cfg}{\@ptionlist{te stpack.sty}}} \@tempa \ProcessKeyvalOptions* \RequirePackage{lmodern} \newcommand*{\useTestNumero}{\test@Numero} \newcommand*{\useTestDate}{\test@Date} \newcommand*{\useTestTheme}{\test@Theme} \endinput \end{filecontents} \usepackage[numero=123,date={décembre 2018},theme={éàçèâêîôûüöë?}]{testpack} \begin{document} Numéro = \useTestNumero; Date = \useTestDate; Thème = \useTestTheme \end{document} %-------------------------------------------------------------- |
#4
![]() |
|
|
|
Le 16/04/2018 à 06:14, Pétiard François a écrit :
> Le 15/04/2018 à 19:43, GL a écrit : > Merci mais, désolé, ça ne marche pas ; j'ai toujours de la bouillie... Bonjour, vous devez ajouter \usepackage[utf8]{inputenc} avant d'utiliser dans votre préambule les é, à etc... Ce sera inutile avec le LaTeX2e qui vient avec TeXLive 2018 car il fera \usepackage[utf8]{inputenc} dans le format par défaut [..] > \edef\@tempa{\noexpand\setkeys{cfg}{\@ptionlist{te stpack.sty}}} > \@tempa > \ProcessKeyvalOptions* > \RequirePackage{lmodern} > \newcommand*{\useTestNumero}{\test@Numero} > \newcommand*{\useTestDate}{\test@Date} > \newcommand*{\useTestTheme}{\test@Theme} > \endinput > \end{filecontents} \usepackage[utf8]{inputenc} > \usepackage[numero=123,date={décembre 2018},theme={éàçèâêîôûüöë?}]{testpack} > \begin{document} > Numéro = \useTestNumero; > Date = \useTestDate; > Thème = \useTestTheme > \end{document} > %-------------------------------------------------------------- Cordialement, Jean-François |
#5
![]() |
|
|
|
Le 16/04/2018 à 08:17, jfbu a écrit :
> Bonjour, > vous devez ajouter \usepackage[utf8]{inputenc} > avant d'utiliser dans votre préambule les é, à etc... > Ce sera inutile avec le LaTeX2e qui vient avec TeXLive 2018 > car il fera \usepackage[utf8]{inputenc} dans le format > par défaut > Cordialement, > Jean-François Bonjour Et merci ! Ça marche bien maintenant. (remarque : MiKTeX est à jour depuis le 9 avril mais je ne l'avais pas mis à jour...) Cordialement François |
#6
![]() |
|
|
|
Le 16/04/2018 à 09:52, Pétiard François a écrit :
> Le 16/04/2018 à 08:17, jfbu a écrit : > Bonjour > Et merci ! Ça marche bien maintenant. > (remarque : MiKTeX est à jour depuis le 9 avril mais je ne l'avais pas > mis à jour...) > Cordialement > François Ou utiliser un moteur UTF8 natif : LuaTeX.. |
#7
![]() |
|
|
|
Le 16/04/2018 à 06:14, Pétiard François a écrit :
> Le 15/04/2018 à 19:43, GL a écrit : > Merci mais, désolé, ça ne marche pas ; j'ai toujours de la bouillie... Ca je ne le comprends pas, chez moi aucun problème si on charge {kvoptions-patch} avant le \usepackage [options] en question. |
#8
![]() |
|
|
|
Le 16/04/2018 à 06:14, Pétiard François a écrit :
> Le 15/04/2018 à 19:43, GL a écrit : > Merci mais, désolé, ça ne marche pas ; j'ai toujours de la bouillie... Ca je ne le comprends pas, chez moi aucun problème si on charge {kvoptions-patch} avant le \usepackage [options] en question. [..]
|
Fuseau horaire GMT +2. Il est actuellement 17h39. | Privacy Policy
|