[Résolu] Gérer des arguments vides dans une commande

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.

[Résolu] Gérer des arguments vides dans une commande

Messagepar projetmbc » Lundi 24 Janvier 2011, 22:45

Bonsoir,
voici mon code :

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
   \usepackage[utf8x]{inputenc}
   \usepackage{ucs}
   \usepackage[T1]{fontenc}
   \usepackage{lmodern}
   \usepackage{frenchb]{babel}

   \usepackage{mathtools}
   \usepackage{amsfonts}
   \usepackage{amssymb}

\begin{document}
   \[
      \paramCt{a}{1}{2}{3}{4} + b   \quad
      \paramCt{a}{1}{2}{3}{} + b   \quad
      \paramCt{a}{1}{2}{}{} + b   \quad
      \paramCt{a}{1}{}{}{} + b
   \]


   \[
      \sideset{_3^4}{_2^1} \sum_{k = 1}^{n} {\frac{k}{5 + k^2}}   \quad
      \sideset{_3}{_2^1} \sum_{k = 1}^{n} {\frac{k}{5 + k^2}}   \quad
      \sideset{}{_2^1}\sum_{k = 1}^{n} {\frac{k}{5 + k^2}}   \quad
      \sideset{}{^1}\sum_{k = 1}^{n} {\frac{k}{5 + k^2}}
   \]
\end{document}


Pour améliorer la lisibilité de mon code, de mon point de vue au moins, j'aimerais pouvoir utiliser une commande \paramOpe similaire à \paramCt.

Le problème c'est qu'il faut repérer les arguments vides. Par exemple, \paramOpe{\sum_{k = 1}^{n}}{1}{2}{}{} devra faire appel à \sideset{}{_2^1}\sum_{k = 1}^{n}, et non à \sideset{_^}{_2^1}\sum_{k = 1}^{n}.

En résumé, je dois pouvoir repérer les arguments vides et ensuite réagir en fonction.
Dernière édition par projetmbc le Mardi 25 Janvier 2011, 00:01, édité 3 fois.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Gérer des arguments vides dans une commande

Messagepar un bon petit » Lundi 24 Janvier 2011, 22:57

Bah, si #1 est l'argument à tester, un simple \ifx\relax#1\relax devrait suffire pour décider s'il est vide, non ?
un bon petit
Giga-utilisateur
 
Messages: 738
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Gérer des arguments vides dans une commande

Messagepar projetmbc » Lundi 24 Janvier 2011, 23:01

Merci à toi "un bon petit" car cela avance un peu.

Code: Tout sélectionner
\makeatletter
   \newcommand{\paramOpe}[5]{
      \ifx\relax#2\relax
         OK
      \else
         PAS OK
      \fi%
   }
\makeatother

Coder la gestion des arguments de sideset tout à l'aide de ifx imbriqués fera l'affaire. Mais a-t-on plus malin ?

Au pire, je me ferais un mini-script Python pour me renvoyer tous ces ifx imbriqués bêtement.
Dernière édition par projetmbc le Lundi 24 Janvier 2011, 23:49, édité 1 fois.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Gérer des arguments vides dans une commande

Messagepar pg » Lundi 24 Janvier 2011, 23:52

Qu'est-ce qui ne va pas en mettant simplement les indices et exposants entre accolades ?

Code: Tout sélectionner
\documentclass{article}

\usepackage{amsmath}

\newcommand{\paramOpe}[5]{%
  \sideset{_{#4}^{#5}}{_{#3}^{#2}}#1%
}

\begin{document}

\[
  \paramOpe{\sum_{k = 1}^{n}}{}{}{}{} \qquad
  \paramOpe{\sum_{k = 1}^{n}}{1}{2}{}{} \qquad
  \paramOpe{\sum_{k = 1}^{n}}{1}{ }{3}{} \qquad
  \paramOpe{\sum_{k = 1}^{n}}{1}{2}{3}{4} \qquad
  \paramOpe{\sum_{k = 1}^{n}}{}{}{}{4} \qquad
  \paramOpe{\sum_{k = 1}^{n}}{}{2}{}{}
\]

\end{document}
pg
Modérateur
 
Messages: 2597
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Gérer des arguments vides dans une commande

Messagepar projetmbc » Mardi 25 Janvier 2011, 00:01

pg a écrit:Qu'est-ce qui ne va pas en mettant simplement les indices et exposants entre accolades ?

Merci. :D J'avais oublié les accolades dans la définition de la commande :roll: , et je comprends maintenant le souci. :oops:

Ceci étant, j'ai appris un truc en TeX, c'est toujours bon à prendre.

Sur ce, je vais me coucher.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], DotBot [Crawler], Google Adsense [Bot], Grapeshot [Crawler] et 39 invités