Je suis en train d'écrire un package (avec LaTeX3) pour écrire simplement des applications (fonctions en maths). Dans un souci de cohérence, je souhaiterais que les espaces autour des caractères deux-points et flèche soient les mêmes lorsque j'écris une fonction avec ou sans l'environnement array (cf. exemple).

Dans ma déclaration de colonnes j'utilise @{} pour supprimer l'espace intercolonne et @{⟨espace⟩} (p. ex. @{\quad} ou @{\;}) pour faire une espace intercolonne.

On voit que l'environnement array n'a pas le même comportement, envers les espaces en début et en fin de cellule, lorsque l'on charge le package array ou non :

  • Sans le package array : les espaces sont conservées.
  • Avec le package array : les espaces sont gobées (sauf celle devant les deux-points, je suppose que c'est dû à la définition très particulière cette espace dans la commande \colon).

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{mathtools}
\usepackage{array} % à commenter et décommenter
\usepackage{xcolor}

\begin{document}

  % en noir
  $f \colon A \to B$

  \vspace{-\baselineskip}\color{red}

  % en rouge
  $\begin{array}[t]{@{}c@{}c@{\mskip 6muplus1mu}c@{\;}c@{\;}l@{}}
    f & \colon & A & \to     & B\\
      &        & x & \mapsto & y
  \end{array}$

\end{document}

J'envisage donc de charger le package array dans mon package pour éviter ces problèmes d'espaces si l'utilisateur a besoin d'utiliser le package array.

Voici enfin ma question : existe-il d'autres packages qui redéfinissent l'environnement array et qui pourraient me poser des problèmes d'espaces s'ils sont chargés après le mien ?

Posée 09 Mar '21, 21:52

YannD's gravatar image

YannD
465410
Taux d'acceptation : 25%

Modifiée 11 Mar '21, 16:29


L'extension mdwtab redéfinit {array} et tabular. Il y a aussi les classes revtex4-1 (obsolète) et revtex4-2. Peut-être que le mieux dans votre cas est de programmer directement à partir de la primitive \halign de TeX.

Lien permanent

Publiée 09 Mar '21, 22:46

fpantigny's gravatar image

fpantigny
1.3k44
Taux d'acceptation : 36%

Merci beaucoup, utiliser \halign semble idéal pour éviter de potentiels conflits entre packages mais plus délicat à utiliser, j'espère ne pas me créer d'autres soucis en l'utilisant... Je vais me renseigner sur \halign et faire des tests, merci encore !

(10 Mar '21, 12:07) YannD YannD's gravatar image

Cela ne répond pas à votre question, mais qui sait.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{mathtools}
%\usepackage{array} % à commenter et décommenter
\usepackage{xcolor}

\begin{document}

  % en noir
  $f \colon A \to B$

  \vspace{-\baselineskip}\color{red}

  % en rouge
%  $\begin{array}[t]{@{}c@{}c@{\mskip 6mu plus1mu}c@{\;}c@{\;}l@{}}
%    f & \colon & A & \to     & B\\
%      &        & x & \mapsto & y
%  \end{array}$

  $\begin{array}[t]{@{}r@{\;}l@{}}
    f \colon  A  \to     & B\\
      x  \mapsto & y
  \end{array}$

\end{document}

[edit] Une autre option.

alt text

Lien permanent

Publiée 10 Mar '21, 08:26

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 10 Mar '21, 15:02

Merci beaucoup (je pensais mettre ce comportement en option) mais j'aimerais par défaut garder toutes les colonnes pour éviter les cas où l'élément de départ est large (p. ex. (x_1,\dots,x_n)) et pourrait en quelque sorte dépasser à gauche le nom de l'application :)

(10 Mar '21, 11:10) YannD YannD's gravatar image

@YannD J'ai modifié ma réponse. La nouvelle écriture est-elle acceptable?

(10 Mar '21, 15:08) touhami touhami's gravatar image

@touhami Merci pour la suggestion ! Personnellement je ne trouve pas ça très esthétique mais ça servira peut-être à quelqu'un d'autre :)

(11 Mar '21, 16:26) YannD YannD's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.