Créer de nouveaux signes mathématiques

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.

Créer de nouveaux signes mathématiques

Messagepar legion » Mercredi 25 Juillet 2007, 23:37

Bonsoir à tous,


Je suis actuellement en train de rédiger mon projet de fin d'étude. J'utilise (entre autre) la commande \mathbb pour représenter mes tenseurs (par exemple $\mathbb{A}$). Je voudrais étendre cette commande à quelques signes grecs ($\sigma$, $\Sigma$ et $\varepsilon$). J'ai pensé définir de nouvelles fonctions en me basant sur des fonctions déjà existantes mais je n'arrive pas à obtenir le résultat escompté. Voila un exemple de nouvelle fonction que j'ai définie:

Code: Tout sélectionner
\def\toto{{\Sigma}\mkern-12mu \shortmid}


En gros, le souci que j'ai pour arriver à ce que je veux, c'est que je n'arrive pas à gérer la position verticale des signes. Dans l'exemple proposé, le commande \mkern permet de gérer la position horizontale de la commande \shortmid. Quelle est la commande pour gérer sa position verticale? J'ai cherché sur la net, mais je n'ai rien trouvé.
legion
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 25 Juillet 2007, 23:16

Publicité

Messagepar MB » Jeudi 26 Juillet 2007, 01:45

Tu as regardé ce post ?

Il propose d'utiliser le package mathbbol.

The mathbbol package exploits the bbold-fonts and the stmaryrd-fonts designed by Alan Jeffrey and Jeremy Gibbons. Many people prefer these fonts over the AMS \mathbb, because the symbols for the real numbers, complex numbers, etc. look just right. But the Jeffrey fonts contain more: blackbord bold digits, lower case letters, greek letters and even punctuation.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6782
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar legion » Jeudi 26 Juillet 2007, 11:44

Oui, j'ai déjà essayé ce package et le rendu ne me plait pas. C'est pour ça que je voudrais quelque chose proche de \mathbb...
legion
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 25 Juillet 2007, 23:16

Messagepar MB » Jeudi 26 Juillet 2007, 13:15

Ok, j'avais vu cet exemple qui semblait donner à peu près le résultat que tu souhaitais. Pas contre la qualité ne semble pas exceptionnelle.
Bref, peut être que tu vas devoir faire des fontes toi même alors. Si Tryphon passe par ici, il pourra peut être te renseigner mieux que moi. :?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6782
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar pg » Jeudi 26 Juillet 2007, 14:24

Pour gérer la position verticale, tu peux essayer d'utiliser \raise, comme dans l'exemple suivant.

Code: Tout sélectionner
\newcommand{\udots}{\mathinner{\mskip1mu\raise1pt\vbox{\kern7pt\hbox{.}}
 \mskip2mu\raise4pt\hbox{.}\mskip2mu\raise7pt\hbox{.}\mskip1mu}}
pg
Modérateur
 
Messages: 2585
Inscription: Jeudi 14 Juin 2007, 23:31

Messagepar legion » Vendredi 27 Juillet 2007, 09:43

C'est bon, j'arrive à faire ce que je veux avec la commande raise! Dernier petit souci, l'espacement entre 2 symbole mathématique à changé. Est ce qu'il faut faire un réajustement manuel pour chaque caractère nouvellement créé ou existe t'il une fonction qui gère ça?
legion
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 25 Juillet 2007, 23:16

Messagepar pg » Vendredi 27 Juillet 2007, 13:11

Du peux essayer un bricolage de ce style :

Code: Tout sélectionner
\newlength\longueursymboleSigma
\settowidth{\longueursymboleSigma}{$\Sigma$}
\newcommand{\BbbsumTemp}{{\Sigma}\mskip-9mu \raise2.7pt\hbox{$\shortmid$}}
\newlength\fausselongueursymboleSigma
\settowidth{\fausselongueursymboleSigma}{$\BbbsumTemp$}
\newcommand{\Bbbsum}{\BbbsumTemp\hspace{-\fausselongueursymboleSigma}\hspace{\longueursymboleSigma}}
pg
Modérateur
 
Messages: 2585
Inscription: Jeudi 14 Juin 2007, 23:31

Messagepar legion » Vendredi 27 Juillet 2007, 15:24

Niquel! Ca marche! Merci beaucoup
legion
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 25 Juillet 2007, 23:16

Messagepar legion » Vendredi 27 Juillet 2007, 17:07

Dernière petite question. Je rencontre quelques problèmes pour $\varepsilon$. Je fais toujours appel à \shortmid mais je dois, pour avoir quelques chose de plus joli, faire tourner le trait. Par exemple:

Code: Tout sélectionner
\def\depsilontemp{{\varepsilon}\hspace{-.5em} \mbox{\rotatebox[origin=c]{160}{$\shortmid$}}}


Je n'arrive pas à modifier sa position verticale en même temps avec la fonction \raise. Il m'indique un message d'erreur à la compilation...


Question subsidiaire : quelle est le différence entre la commande \def et la commande \newcommand ? Si je veux créer mon propre paquet incluant tous les paramètres de mise en page, les paquets à utiliser et les fonctions nouvellement créées à définir, vaut il mieux utiliser \def ou \newcommand?



Merci!




[EDIT] Je répond à ma première question tout seul. Ca marche si l'on met \hbox à la place de \mbox. Par exemple :
Code: Tout sélectionner
 \def\depsilontemp{{\varepsilon}\hspace{-.5em} \raise -1pt \hbox{\rotatebox[origin=c]{165}{$\shortmid$}}}


Par contre, me demandez pas pourquoi ça marche, ça je n'ai pas compris!
legion
Déca-utilisateur
 
Messages: 10
Inscription: Mercredi 25 Juillet 2007, 23:16

Messagepar pg » Vendredi 27 Juillet 2007, 21:08

La principale différence est que \newcommand vérifie si la commande est déjà définie ; cela évite donc d'effacer une commande déjà existante. Exemple : on utilise \k pour \Bbbk et puis, plus tard, on oublie que l'on a fait cette définition, et on fait \k pour \vec{k}. Si on utilise \newcommand, il y aura une erreur, pas avec \def.

Il vaut donc mieux utiliser \newcommand quand on peut, c'est plus sûr. Cependant, \def a des avantages ; par exemple, il différencie entre minuscules et majuscules, contrairement à \newcommand pour qui \K et \k sont la même chose.
pg
Modérateur
 
Messages: 2585
Inscription: Jeudi 14 Juin 2007, 23:31

Messagepar Tryphon » Samedi 28 Juillet 2007, 09:25

Avec \newcommand comme avec \def, \k et \K sont deux choses différentes.

L'intérêt de \def est de permettre une identification des paramètres plus libre. Par exemple, \def\toto<#1>[#2]|#3|{....} permet de faire un appel à \toto de la façon suivante : \toto<argument 1>[Argument 2]|argument 3|.
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
Tryphon
Péta-utilisateur
 
Messages: 1840
Inscription: Mercredi 01 Juin 2005, 17:39
Localisation: Un peu plus à l'Ouest
Statut actuel: Actif et salarié | Enseignant

Messagepar pg » Samedi 28 Juillet 2007, 09:50

Effectivement, le problème avec \k est qu'il est déjà défini (c'est une sorte de cédille pour les lettres de certaines langues), pas qu'il est en minuscule. Comme dans mes documents je définit \k après \K, j'avais pensé (à tort) que \newcommand ne différenciait pas entre \k et \K.

L'avantage de \def est de permettre de faire des définitions sans avoir à se poser ce type de questions.
pg
Modérateur
 
Messages: 2585
Inscription: Jeudi 14 Juin 2007, 23:31

Messagepar Tryphon » Samedi 28 Juillet 2007, 11:20

Oui et non. \def est une primitive TeX alors que \newcommand est une commande LaTeX, donc plus récente. Si les concepteurs de LaTeX se sont amusés à bricoler une nouvelle commande, c'est qu'ils avaient leurs raisons, notamment contreoler la non-redéfinition our éviter de foutre le boxon avec les packages (en effet, LaTeX a été conçu pour faciliter au maximum l'utilisation de nombreux packages, contrairement à plain TeX).

La conclusion de ça, c'est que, sauf circonstances exceptionnelles (et le cas que je cite - délimiteurs bizarres - est le seul que je connaisse, et encore dans ce cas, si je veux être propre, je vérifie juste après le \def\toto{ que \toto n'est pas défini, grace à \@ifundefined il me semble), il ne faut pas utiliser \def.

J'avais lu un article là-dessus d'un gourou (Joss ou JCC) sur le sujet.
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
Tryphon
Péta-utilisateur
 
Messages: 1840
Inscription: Mercredi 01 Juin 2005, 17:39
Localisation: Un peu plus à l'Ouest
Statut actuel: Actif et salarié | Enseignant

Messagepar pg » Samedi 28 Juillet 2007, 12:11

C'est également l'avis des gens de com.text.tex : « Si vous vous posez la question sur la différence entre \def et \newcommand, alors utilisez \newcommand. »
pg
Modérateur
 
Messages: 2585
Inscription: Jeudi 14 Juin 2007, 23:31


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot], Proximic [Spider] et 28 invités