Page 1 sur 1

Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 15:12
par zorba
Bonjour à tous,
toujours dans mon initiation à la rédaction de corrigés avec des formules, après avoir trouvé le package cancel qui fait pas mal de choses, je suis arrêté sur une macro qui fonctionne dans des cas simples et déclenche une erreeur de compilation quand les expressions sont un petit peu plus compliquées.
Voici le source .tex :

Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{amsmath,color}
\newcommand\hcancel[2][black]{%
  \setbox0=\hbox{#2}%
    \rlap{\raisebox{.45\ht0}{%
      \textcolor{#1}{\rule{\wd0}{1pt}}}}#2}
\begin{document}


Je ne comprends pas les messages de compilation, ayant juste ajoué à mon texte la focntion sqrt{....} autour de l'expression 3X+2.
Je mets les 2 fichiers .tex et .log en pièces jointes au cas où vous en auriez besoin.
D'avance merci du temps consacré, bonne fin de journée.
Pierre

Code: Tout sélectionner
$\hcancel{3}\qquad\hcancel[red]{1234567}$\\[0.5cm]
$\hcancel[red]{3}\qquad\hcancel[red]{1234567}$\\[0.5cm]
$\hcancel{3x+1}\qquad\hcancel{3x+2}$\\[0.5cm]
%$\hcancel{3x+1}\qquad\hcancel{\sqrt{3x+2}}$
\end{document}


Ainsi rédigé les trois expressions sont bien barrées horizontalement en noir ou en rouge, sans avoir besoin du package cancel.
En revanche quand je retire % sur la quatrième ligne, LaTex trouve les erreur suivantes :

Code: Tout sélectionner
! Missing $ inserted.
<inserted text>
                $
l.15 $\hcancel{3x+1}\qquad\hcancel{\sqrt{3x+2}}
                                               $
I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.

! Extra }, or forgotten $.
\\hcancel [#1]#2->\setbox 0=\hbox {#2}
                                      \rlap {\raisebox {.45\ht 0}{\textcolor...
l.15 $\hcancel{3x+1}\qquad\hcancel{\sqrt{3x+2}}
                                               $
I've deleted a group-closing symbol because it seems to be
spurious, as in `$x}$'. But perhaps the } is legitimate and
you forgot something else, as in `\hbox{$x}'. In such cases
the way to recover is to insert both the forgotten and the
deleted material, e.g., by typing `I$}'.

! Missing } inserted.
<inserted text>
                }
l.16 \end{document}
                   
I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.

! Missing $ inserted.
<inserted text>
                $
l.16 \end{document}
                   
I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.

[1

] (Cancel-Barrer-des-Formules-2.aux) )


Je ne comprends pas le message d'erreur qui demande in $ supplémentaire, alors que je n'ai qu'ajouté la fonction sqrt{...} autour de l'expression 3x+2.
Je remercie toute personne de l'aide apportée, les fichiers .tex et .log sont en pièces jointes si vous avez besoin du contexte complet.
A bientôt.
Pierre

Re: Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 15:36
par rebouxo
\newcommand ne marcherait-il pas mieux en mettant le nom de la nouvelle commande entre accolades ?

Olivier

Re: Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 15:45
par kojak
bonjour,

le code LaTeX se met entre les balises code et non entre les balises color : il serait bon de lire les indications en bas de tes précédents messages qu'on est obligé d'éditer afin de mettre ces balises code.

Re: Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 17:20
par zorba
Acceptez mes excuses pour la confusion des balises, je ne comprenais pas le problème quand je pré visualisais mon message, à l'avenir je prendrais garde pour éviter ces difficultés.
Bonne soirée.
Pierre

Re: Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 17:28
par zorba
rebouxo a écrit:\newcommand ne marcherait-il pas mieux en mettant le nom de la nouvelle commande entre accolades ?

Olivier



Je ne comprends pas ce message. La commande $\verb+\hcancel{...}+$ fonctionne correctement quand l'expression de contient pas de fonction. $\verb=\hcancel{3x+1}=$ est correctement barré alors que $\verb=\hcancel{\sqrt{3x+2}}=$ pose le problème à la compilation.

Re: Barrer une expression avec opérateur

MessagePosté: Mardi 25 Août 2009, 19:37
par rebouxo
Je trouve ton newcommand bizarre, c'est tout.

Pour moi \newcommand{\mamacro}[arg]{expression} et non ce que tu as écris. D'ailleurs ici je mettrais un \newcommand*.

Olivier