Je crée une commande avec un argument ( Ouvrir dans l'éditeur Overleaf
\def\ChoixDeVersion{AB} %AB=Avec Barème \newcommand{\bareme}[1] {\ifthenelse{\equal{\ChoixDeVersion}{AB}}{#1\ignorespaces}{\ignorespaces}} Si je mets AB dans Ca marche bien et tout va bien si j'utilise ma commande A priori c'est le Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[french]{babel} \usepackage[tikz]{bclogo} \usepackage{xcolor} %\usepackage[autolanguage]{numprint} \usepackage{numprint} %numprint sans la gestion de langue pour le rendre personnalisable %ici on personnaise le produit de numprint pour les puissances de 10 \npproductsign{\times} %Pour écrire des nombres par exemple avec separateur et unités \usepackage{multirow} %Pour faire plusieurs lignes dans un tableau \usepackage{amsmath} %Définit entre autre l'environnement split \usepackage{graphicx} %Pour inclure des images \graphicspath{{Illustrations/}} % chemin pour trouver les graphiques a incorporer %définition de variable texte pour compilation conditionnelle \def\ChoixDeVersion{AB} %AB=Avec Barème \newcommand{\bareme}[1] {\ifthenelse{\equal{\ChoixDeVersion}{AB}}{#1\ignorespaces}{\ignorespaces}} %Commande barème pour compilation conditionnelle %Si on veut un blanc après le texte ou le rien, mettre le blanc A LA FIN DE L'ARGUMENT(avant l'accolade de fermeture}. Les blancs qui suivent la commande seront ignorés (\ignorespaces) pour éviter le DOUBLE BLANC quand compilation sans barème. \begin{document} \part{Questions de cours} Mon texte \bareme{toto }suite du texte \begin{bclogo}[epBord=2,logo=\bcquestion,ombre=true,couleur=blue!10]{Question 1 Complétez la phrase \bareme{titi}} Texte du cadre \bareme{tata} \end{bclogo} \end{document} Source d'erreur : Ouvrir dans l'éditeur Overleaf
\bareme{toto} et \bareme{tata} ne posent pas de problème \bareme{titi} fait planter la compilation Posée 22 Oct '17, 18:31 idefix |
C'est bien ifthenelse qui coince. Je n'utilise pas cette extension et je n'ai pas envie d'aller voir dans le code ce qui se passe. En remplaçant par un Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[tikz]{bclogo} \newif\ifAB \ABtrue %\ABfalse \newcommand{\bareme}[1]{% \ifAB% #1\ignorespaces% \else% \ignorespaces% \fi} \begin{document} \part{Questions de cours} Mon texte \bareme{toto } suite du texte \begin{bclogo}[epBord=2,logo=\bcquestion,ombre=true,couleur=blue!10]{Question 1 Complétez la phrase \bareme{titi } } Texte du cadre \bareme{tata } \end{bclogo} \end{document} EDIT : Suite aux commentaires du PO, je propose une solution qui permet de pas devoir mettre d'espace dans le nom d'une macro (ce qui ne me parait pas être l'idéal). Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[tikz]{bclogo} \usepackage{xspace} \newif\ifAB \ABtrue %\ABfalse \makeatletter \def\bareme#1{\@bsphack% \ifAB% #1\xspace% \fi\@esphack% } \makeatother \begin{document} Texte du cadre et du texte\par Texte du cadre \bareme{tata} et du texte \par Texte du cadre \bareme{tata}et du texte \par \end{document} Publiée 22 Oct '17, 19:40 Nikopol Ca marche très bien, mais du coup on ne peut plus coller un texte derrière si par hasard on le désirait. Genre rajouter un chiffre qui numérote. C'est possible de conserver cette capacité ? Dans mon bricolage en ne mettant pas d'espace en fin de commande on peut le faire. Mais je suis d'accord que ce n'est pas l'idéal
(23 Oct '17, 00:26)
idefix
|
Une solution très simple avec l'extension Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, french ]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{babel} \usepackage[tikz]{bclogo} \usepackage{xcolor} %\usepackage[autolanguage]{numprint} \usepackage{numprint} %numprint sans la gestion de langue pour le rendre personnalisable %ici on personnaise le produit de numprint pour les puissances de 10 \npproductsign{\times} %Pour écrire des nombres par exemple avec separateur et unités \usepackage{multirow} %Pour faire plusieurs lignes dans un tableau \usepackage{amsmath} %Définit entre autres l'environnement split \usepackage{graphicx} \usepackage{etoolbox} \newtoggle{AB} \settoggle{AB}{true} %Pour inclure des images \graphicspath{{Illustrations/}} % chemin pour trouver les graphiques a incorporer \newcommand{\bareme}[1]{\iftoggle{AB}{#1}{}\ignorespaces} \begin{document} \part{Questions de cours} \verb|\settoggletrue | : Mon texte \bareme{toto }suite du texte \begin{bclogo}[epBord=2,logo=\bcquestion,ombre=true,couleur=blue!10]{Question 1 Complétez la phrase \bareme{titi} } Texte du cadre \bareme{tata} Lalala \end{bclogo} \verb|\settogglefalse| : \settoggle{AB}{false} Mon texte \bareme{toto }suite du texte \begin{bclogo}[epBord=2,logo=\bcquestion,ombre=true,couleur=blue!10]{Question 2 Complétez la phrase \bareme{titi} } Texte du cadre \bareme{tata} Lalala \end{bclogo} \end{document} Comment faites-vous pour mettre le résultat de la compilation dans le post ?
(25 Oct '17, 04:18)
idefix
|
Je ne m'attendais pas à une réponse aussi rapide. Apparemment on pouvait aussi protéger la commande Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper,10pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[tikz]{bclogo} %définition de variable texte pour compilation conditionnelle \def\ChoixDeVersion{AB} %AB=Avec Barème \newcommand{\bareme}[1]{% \ifthenelse{\equal{\ChoixDeVersion}{AB}}% {#1\ignorespaces}% {\ignorespaces}% } % BONNE ALTERNATIVE NE NÉCESSITANT PAS DE PROTECTION %\newif\ifAB %\ABtrue %\ABfalse % %\newcommand{\bareme}[1]{% % \ifAB% % #1\ignorespaces% % \else% % \ignorespaces% % \fi} % \begin{document} \part{Questions de cours} Mon texte \bareme{toto } suite du texte %Protection nécessaire pour \bareme (avec \ifthenelse) dans l'argument de bclogo \begin{bclogo}[epBord=2,logo=\bcquestion,ombre=true,couleur=blue!10]% {% Question 1 Complétez la phrase \protect\bareme{titi }% } Texte du cadre \bareme{tata } \end{bclogo} \end{document} Cela fonctionne alors également avec La mise en forme du code est aussi très propre. C'est un standard d'édition ?
Lien permanent
Cette réponse est marquée comme « Wiki ».
Publiée 22 Oct '17, 21:45 idefix La solution définitive est de protéger avec
(23 Oct '17, 02:20)
touhami
|
Pour les « blancs » (les espaces), l'extension Par contre si je fais une compilation avec Pour éviter que cela arrive, je mets un On pourrait penser qu'après tout il suffit de ne pas mettre de blanc après la commande, et que ça irait aussi bien comme ça. Mais alors dans le cas de la compilation ... bref pour avoir toujours un seule espace entre la commande et les mots d'avant et d'après, quel que soit le cas de compilation, il suffit de penser à mettre une espace la fin de l'argument de la commande Il y a sûrement d'autres façons de faire, mais celle-là semble fonctionner. J'ai édité ma réponse avec une proposition pour la gestion des espaces verticales (au féminin ici).
(22 Oct '17, 23:51)
Nikopol
makeatletter et makeatother c'est pour le @ ? A quoi sert ce @ ??
(23 Oct '17, 00:10)
idefix
J'ai féminisé l'espace dans ma réponse
(23 Oct '17, 00:14)
idefix
Ca marche très bien, mais du coup on ne peut plus coller un texte derrière si par hasard on le désirait. Genre rajouter un chiffre qui numérote. C'est possible de conserver cette capacité ?
(23 Oct '17, 00:24)
idefix
Oui, il faut supprimer
(23 Oct '17, 00:42)
Nikopol
Je n'y parviens pas pour le coup. Un fois supprimé le
(23 Oct '17, 00:56)
idefix
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
@idefix Attention ! Les contre-obliques (
\
) saisies telles quelles dans les contributions ne sont visibles que si elles sont insérées en tant que⟨code⟩
. Pour insérer du⟨code⟩
, notamment des commandes LaTeX, cf. la FAQ Comment mettre en forme ma contribution ?. Merci de corriger votre contribution si cela n'a pas déjà été fait.Merci pour avoir mis en forme ma question. Je l'ai fait ensuite sur la réponse suivante.