28112 sujets

CSS et mise en forme, CSS3

Bonjour,

Comment obtenir élégamment l'indentation des paragraphes suivants en les alignant sur le signe "=" du premier ?

En figure jointe ce que je voudrais obtenir, sachant que le premier paragraphe peut être aussi bien "a = b + c"
que "ordralphabetix + cetautomatix = poissonpourrix + bagarre"

Merci d'avance de votre précieuse aide ! upload/1620315152-72178-identationsur.png
Modifié par Beka (06 May 2021 - 18:00)
Administrateur
Hello,

Il n'y a malheureusement pas de solution miracle.

Il existe bien text-align: <string>, mais aucun navigateur ne le supporte : https://developer.mozilla.org/fr/docs/Web/CSS/text-align

Il faudra forcément bidouiller dans le code. Tu as moyen de placer des balises HTML (span par exemple) au sein de ce code ?

Si tu peux le faire, ça pourrait donner ça : https://codepen.io/raphaelgoetter/pen/XWMWLqx?editors=1100
Modifié par Raphael (06 May 2021 - 20:50)
Modérateur
Bonsoir,
je verrais bien en dépannage le temps de trouver mieux, une liste de définition pour donner un peu de sens au contenu et du display:table/cell/block pour la mise en forme.

exemple de l'idée
<dl>
  <dt>Ma formule</dt>
  <dd>= etape 1</dd>
  <dd>= etape 2</dd>
  <dd>= etape etc...</dd>
</dl>

et le css
dl{display:table;}
dt{display:table-cell;}
dd{margin-left:0.5ch;}


exemple possible: https://codepen.io/gc-nomade/pen/RwpNwqr

Il y a aussi ceci : https://www.sqlpac.com/fr/documents/conception-html-equations-math-mathjax-asciimath.html
Cdt,
GC
Modifié par gcyrillus (07 May 2021 - 00:52)
Raphaël :

Waouh !
Une réponse de Raphaël en personne !!
Merci !!

(Il faut que j'étudie attentivement la technicité de la solution que tu proposes car il y a là un petit ensemble de notions que je ne maîtrise pas encore.)

Lorsque je mentionnais les deux égalités "a = b + c" et "ordralphabetix + cetautomatix = poissonpourrix + bagarre" (j'aurais dû écrire pour la première "5x = 3x + 2x" pour être homogène avec les "ix" de la seconde ligne :--), je voulais illustrer le fait que le premier "=" peut se trouver n'importe où dans la première ligne.

Je ne pensais pas à la structure que tu as réalisée, mais qui se rencontre effectivement parfois. (Je la retiens donc pour une utilisation éventuelle.)

Par contre, la structure la plus habituellement rencontrée est bien celle de la figure :
une expression initiale = 1ère réécriture
= 2ème réécriture
= 3ème réécriture
= etc, jusqu'à l'écriture finale

Je précise maintenant quelques contraintes concernant l'écriture du html :

Comme mon futur site de maths — je suis prof de maths à domicile depuis plusieurs années et ai élaboré avec la pratique toute une approche explicative véritablement originale — contiendra un (très) grand nombre de pages, je compte sous-traiter une partie de la saisie du html à des lycéens ou à des étudiants pas forcément habitués à saisir du code (et qui me laisseraient rapidement tomber si la tâche leur semble par trop fastidieuse).

Il me faut donc concevoir un html le plus sémantique possible, avec le plus de sens possible, avec le moins de <div> et de <span> possible, quitte à faire ensuite mouliner avant publication les fichiers html par des programmes (javascript ou autre) afin d'apporter les balisages et ajustements de valeurs nécessaires.

Pour réaliser la configuration suivante
upload/1620383976-72178-identationsurobtenuepardiv.png
j'ai donc opté pour les codes html et css les plus simples
<div class="expression_mathematique egalites_successives">
					<p>~x^4 - 16 = (x^2)^2 - 4^2~</p>
					<p class="suite" style="padding-left: 57.5px;">~= (x^2 - 4)(x^2 + 4)~</p>
					<p class="suite" style="padding-left: 57.5px;">~= (x^2 - 2^2)(x^2 + 4)~</p>										
					<p>Soit finalement</p>
					<p>~x^4 - 16 = (x - 2)(x + 2)(x^2 + 4)~</p>
				</div>

.expression_mathematique {
		padding-left: 50px;
}

div.egalites_successives	p {
	padding-left: 0px;
}


Pour l'instant, je conçois une version de travail (très) soignée à partir d'un échantillon d'une dizaine de pages html, pour ensuite pouvoir passer à la phase "production". (J'ai déjà une centaine de pages A3 manuscrites qui m'attend. Et il y en aura beaucoup de centaines d'autres.)

J'ajuste, pour mon agrément visuel, le décalage des paragraphes .suite à la main (cela me prend une ou deux minutes). Ceux qui feront la saisie écriront seulement class="suite".
Ensuite, pour la version publiée, il sera temps de concevoir les routines javascript de pré-publication ad hoc pour que l'alignement tombe toujours juste.

Bonne journée.
Boris
gcyrillus :

Merci de tes suggestions, gcyrillus.

J'avais en effet pensé à utiliser une liste de définition, mais j'ai préféré la solution div qui me permet de traiter une série de calculs, incluant le texte final et l'égalité finale, selon une sémantique davantage liée à la structuration du texte qu'à la seule mise en page.

J'utilise effectivement MathJax selon la syntaxe AsciiMath pour intégrer les expressions mathématiques dans le html.

MathJax permet aussi de saisir les expressions en syntaxe LaTeX, mais celle-ci est moins intuitive que celle d'AsciiMath, et plus élitiste.
(La syntaxe LaTeX est plutôt utilisée par les doctorants — pour qui il est important de montrer "qu'ils font partie du sérail", selon l'expression d'un ami de longue date — ainsi que par les profs, mais n'est pas vraiment adaptée à des lycéens ou à des jeunes étudiants.)

MathJax permet bien sûr d'aligner une suite d'égalités, mais offre beaucoup moins de possibilités d'ajustement qu'une solution html-css.

Bonne journée.
Boris
Bonjour,

Je souhaiterais un peu réagir sur ce fil de discussion, et plus particulièrement sur la dernière réponse, même si elle date d'il y a déjà 3 mois. Un de mes articles est cité dans ce fil d'ailleurs.

Comme vous j'ai débuté avec MathJax/AsciiMath, Asciimath paraissant plus simple, mais j'ai très vite été confronté au problème du centrage sur le signe =, la numérotation des équations... AsciiMath offre une simplicité mais montre très vite ses limites. Je suis donc passé de MathJax/AsciiMath à MathJax/Tex : un tout petit temps d'adaptation a été nécessaire, le temps de bien s'y habituer (2-3 jours), et il n'y a rien d'élitiste ou de syntaxe réservée à des doctorants. Pour le symbole infini, en AsciiMath on écrira oo, en Tex on écrira \infty, pour le symbole alpha on écrira \alpha... etc... Si un lycéen ou étudiant pratique MathJax/AsciiMath, en quelques jours à peine il saura pratiquer MathJax/Tex.
A ce propos j'ai écrit un modeste guide pratique/aide mémoire sur MathJax / Tex (expressions courantes, centrage des équations...) : https://www.sqlpac.com/fr/documents/mathjax-tex-guide-pratique-aide-memoire.html
Il existe aussi un formidable site que j'utilise régulièrement (ne connaissant pas tous les symboles Tex) : https://detexify.kirelabs.org/classify.html . Dessinez le symbole mathématique, le site vous donne alors les symboles Tex possibles triés par probabilité de correspondance décroissante.

Et je souhaite donc réagir plus particulièrement sur la toute dernière phrase: "MathJax offre beaucoup moins de possibilités d'ajustements qu'une solution html-css". Je ne partage pas du tout cet avis. Il ne faut pas réinventer la roue, une solution html-css est bien trop chronophage en temps de développement par rapport à MathJax, de quoi s'arracher les cheveux.
Avec MathJax, vous pouvez gouverner les styles : aligner à gauche et non au centre, donner une classe CSS pour un bloc d'équations avec \class{classe-css} {équation}.... La syntaxe class{} est d'ailleurs diponible pour les 2 syntaxes (AsciiMath/Tex).

Je vous propose une page de Maths que j'ai développée en très peu de temps avec MathJax/Tex et qui a pour sujet : "Dérivation - applications, formes indéterminées et règle de L’Hôpital" https://www.sqlpac.com/espace-sciences/maths/derivation-applications-formes-indeterminees-regle-de-l-hopital.html . Le code source HTML est on ne peut plus simple et bénéficie même de la nouveauté MathJax 3.2 Lazy load (équations qui ne sont affichées que lorsque la fenêtre viewport arrive dessus). Du pur bonheur, sans être doctorant...

C'est juste une question d'habitude. Je ne suis pas prêt d'envisager le moindre développement maison depuis que j'ai pris en main MathJax (AsciiMath ou Tex).


Bien à vous
Modifié par sqlpac (07 Aug 2021 - 22:31)