Créer un test \ifmath

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
_Y_B_
Utilisateur confirmé
Utilisateur confirmé
Messages : 38
Inscription : mardi 30 août 2016, 16:27

Créer un test \ifmath

Message par _Y_B_ »

Bonjour,
Ma question est comment définir en tex une commande :
\ifmaths{<code si vrai>}{<code si faux>}
Qui vous renvoie un certain code si votre texte se situe dans un environnement maths ou un autre si ce n'est pas le cas.
Je souhaite ainsi me redéfinir une petite macro \ul, qui vous souligne avec les paramètres du package soul si vous êtes hors d'un environnement maths, qui effectue \underline si vous êtes dedans.

Merci de bien vouloir prendre en considération ma demande :)

touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 433
Inscription : dimanche 11 février 2007, 11:45

Re: Créer un test \ifmath

Message par touhami »

Bonjour.
La commande \TextOrMath fait ce que vous voulez.

Code : Tout sélectionner

\TextOrMath{code si Texte}{code si Math}

_Y_B_
Utilisateur confirmé
Utilisateur confirmé
Messages : 38
Inscription : mardi 30 août 2016, 16:27

Re: [TeX]Créer un test \ifmath

Message par _Y_B_ »

Merci, ca m'aidera beaucoup :D

Voilà le code que j'ai fait :

Code : Tout sélectionner

\documentclass[a4paper, fleqn, oneside, table, french, hypertexnames=false]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{layout}
\usepackage[top=3cm, bottom=3cm, left=3cm, right=2cm]{geometry}
\usepackage{soulutf8}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}

\catcode`\@= 11
\let\under@line\ul
\def\ul#1{
	\TextOrMath{ 			%Teste si on est en mode mathématiques
		\under@line{#1}         %Soulignement du mode texte
	}{
		\underline{#1}	        %Soulignement du mode maths
	}
}
\catcode`\@=12

\begin{document}

\ul{coucou}
$\ul{5+5=10}$

\end{document}
Existe-t-il des commandes similaires pour voir si on est en mode "indice" ou "exposant", pour cette fois ci enlever le displaystyle de ces modes.
J'utilise par exemple :

Code : Tout sélectionner

\documentclass[a4paper, fleqn, oneside, table, french, hypertexnames=false]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{layout}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}

\everymath{\displaystyle{}}

\begin{document}

$\lim_{+\infty \rightarrow +\infty}$

\end{document}
Si on compile ce code on peut voir une différence de taille entre les deux infinis.

_Y_B_
Utilisateur confirmé
Utilisateur confirmé
Messages : 38
Inscription : mardi 30 août 2016, 16:27

Re: Créer un test \ifmath

Message par _Y_B_ »

Excusez-moi, une erreur de ma part dans le code :

Code : Tout sélectionner

\documentclass[a4paper, fleqn, oneside, table, french, hypertexnames=false]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{layout}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}

\newcommand{\ra}{\displaystyle\ensuremath{\mathop{\rightarrow}}}	 % au dessus ou en-dessous de la flèche

\everymath{\displaystyle{}}

\begin{document}

$\lim_{+\infty \ra+\infty}$

\end{document}

_Y_B_
Utilisateur confirmé
Utilisateur confirmé
Messages : 38
Inscription : mardi 30 août 2016, 16:27

Re: Créer un test \ifmath

Message par _Y_B_ »

Après quelques recherches, j'ai trouvé sur ce site :
https://tex.stackexchange.com/questions ... /1253#1253
Cette commande : mathchoice

Code : Tout sélectionner

\documentclass{article}

\newcommand\mathtest{%
  \mathchoice
  {displaystyle}
  {text style}
  {scriptstyle}
  {scriptscriptstyle}
}

\begin{document}
\[
 \mathtest x^{\mathtest^{\mathtest}}
\]

\(
  \mathtest
\)

\end{document}