dbitouze / yathesis

Classe de thèse LaTeX pour universités françaises
27 stars 3 forks source link

Bug entre siunitx et yathesis pour `inter-unit-product` #69

Closed BambOoxX closed 5 years ago

BambOoxX commented 5 years ago

Je vais poser celle-ci en français, je n'avais pas fait attention que les issues étaient posées en français sur ce dépôt. En utilisant siunitx avec yathesis, le symbole défini par inter-unit-product disparaît. Utiliser une classe book résout le problème.

\documentclass{yathesis}
\usepackage{siunitx}
\sisetup{
    locale = FR,
    inter-unit-product={\!\cdot\!},
    range-phrase =;,
    detect-weight=true,
    detect-family=true,
}
\begin{document}
\SI{350e2}{\meter\per\second}
\end{document}            
dbitouze commented 5 years ago

Le problème ne vient pas de yathesis mais de l'absence de \ensuremath, commande préconisée par la documentation de siunitx (page 38 pour la version en date du 2018/05/17). En outre, si les \! ne sont pas « protégés » par des paires d'accolades, la réduction d'espace est trop importante :

\documentclass{yathesis}
\usepackage[T1]{fontenc}
\usepackage{siunitx}
\sisetup{inter-unit-product=\ensuremath{{\!}\cdot{\!}}}
\begin{document}
\SI{350e2}{\meter\per\second}

\sisetup{inter-unit-product=\ensuremath{{}\cdot{}}}
\SI{350e2}{\meter\per\second}

\sisetup{inter-unit-product=\ensuremath{\!\cdot\!}}
\SI{350e2}{\meter\per\second}
\end{document}

test

dbitouze commented 5 years ago

Oups, le problème persiste : j'avais procédé à des tests sur une version tronquée de yathesis. Je regarde cela de plus près.

BambOoxX commented 5 years ago

J'avais testé sans les \! et aussi avec \ensuremath mais en effet, ça ne change rien.

dbitouze commented 5 years ago

Le phénomène observé vient de ce que, si la langue principale est le français, yathesis charge automatiquement l'option locale=FR (qui impose entre autres inter-unit-product = \,) et ce, en fin de préambule. Donc, effectivement, une instruction du type \sisetup{inter-unit-product=⟨autre chose⟩} ajoutée en préambule sera écrasée par l'option locale=FR.

Pour pallier ce phénomène, on peut ajouter l'option \sisetup{inter-unit-product=⟨autre chose⟩} :

BambOoxX commented 5 years ago

J'ai beau chercher, je n'ai pas trouvé de document définissant clairement la bonne notation à utiliser. On utilise souvent un demi-espace \, mais aussi le \cdot en français. Pourquoi le choix par défaut dans yathesis est-il le demi-espace ? Et merci pour la solution.

dbitouze commented 5 years ago

Le choix par défaut dans yathesis est, pour le français, celui de locale=FR qui, en ce qui concerne le produit d'unités, est l'une des deux règles acceptées par le Système international d’unités (cf. page 33 de https://www.bipm.org/utils/common/pdf/si-brochure/SI-Brochure-9-FR.pdf) :

Les règles classiques de multiplication ou de division algébriques s’appliquent pour former les produits et quotients de symboles d’unités. La multiplication doit être indiquée par une espace ou un point à mi-hauteur centré (⋅) pour éviter que certains préfixes soient interprétés à tort comme un symbole d’unité.

BambOoxX commented 5 years ago

C'est super, merci pour la référence ! C'est exactement ce que je recherchais.