Serait-il possible d’ajuster les paramètres de configuration actuels relatifs au typographe Markdown (aussi appelé « ponctuation intelligente ») pour activer les signes de ponctuation Unicode, tels que les guillemets et les tirets, tout en désactivant (c), ™ et potentiellement d’autres glyphes spécialisés de ce type ?
Cela se produit particulièrement souvent dans les listes énumérées. Par exemple :
(a) pomme
(b) banane
(c) copyright ?
(d) date
Ce style d’énumération est très courant dans les lois, les contrats, les politiques et autres écrits formels influencés par le style juridique. C’est également un style de plan très répandu. Il faisait partie du style de plan « standard » que l’on m’a enseigné lorsque j’étais élève dans une école primaire aux États-Unis.
Je constate que les paramètres actuels offrent une certaine flexibilité concernant la ponctuation, mais, à ma connaissance, aucune façon d’activer la ponctuation intelligente sans activer les symboles intelligents.
Je n’ai pas d’opinion tranchée là-dessus. Je pense que la nécessité de taper le symbole de copyright est si rare que ce raccourci peut être retiré… L’équilibre entre l’utilité extrêmement rare et le format (a) (b) (c) assez courant (mais peu esthétique) me convient, je suis d’accord pour supprimer ce raccourci en particulier, @sam.
Cela ne semble pas très configurable ; il faudrait corriger markdown.it pour prendre en charge cette flexibilité ou simplement écrire notre propre version de prettify basée sur markdown.it.
La seule solution triviale consiste à désactiver entièrement cette fonctionnalité.
L’avantage, c’est que le moteur est assez configurable : nous pouvons désactiver les règles dans markdown.it, copier le code et implémenter nos propres remplacements, tout comme l’a fait @Roman → .
Quelques jours de travail d’ingénierie pour nettoyer cela seraient une perte, et il serait dommage de livrer le même code deux fois, mais c’est inévitable si nous le forkons.
Depuis le commit 7b8969ce5cb2edc54f2c1aa39a85a3a08076337d sur la branche master de markdown-it, le fichier source concerné est lib/rules_core/replacements.js et le jeu de tests pertinent est test/fixtures/markdown-it/typographer.txt.
Le mainteneur est très réactif. Il ferme mes PR en quelques minutes
Ce que je comprends, c’est qu’il est extrêmement réticent à introduire des changements cassants, même dans les nouvelles versions majeures, même pour des choses comme le rendu de (P) sous forme de §. Il est aussi allergique à l’ajout d’options de type typographer: {A: true, B: false}, même lorsque typographer: true reste fonctionnel, en raison d’une complexité perçue.
Je lis entre les lignes, et c’est un Russe qui écrit en anglais. Mais j’ai l’impression qu’il considère markdown-it comme figé.
Avec toute ma gratitude, cela pourrait valoir le coup de faire un fork de l’implémentation, de la réécrire en modules ES, et de supprimer toutes les fonctionnalités de type plugin actuellement incluses, tant la liaison des liens que les remplacements, y compris les remplacements de ponctuation du typographe.
Le mainteneur n’est pas intéressé par les remarques sur les duplications de code dans les bundles sans numéros. Il n’est pas non plus intéressé par des modifications non destructives de l’API qui ne sont pas « requises par 100 % des utilisateurs » ou qui bloquent les implémentations de plugins. Cela crée une situation délicate, car ils livrent deux sous-modules très orientés plugins, pour la création de liens et la ponctuation intelligente, qui devraient vraiment être dans leurs propres petits paquets npm selon cette philosophie. Cela arrive.
Pour contexte, il y a eu des versions significatives de markdown-it récemment. Notamment une amélioration des performances par Alex Kocharin en novembre de l’année dernière.
Pour corriger (c), gérer (p), et faire tout ce que nous voulons faire avec les flèches et autres, la meilleure option est probablement de proposer un correctif supprimant les sous-modules de création de liens et de ponctuation intelligente du noyau et de les charger plutôt en tant que plugins dans Discourse. Utilisez une GitHub Action ou un travail cron pour surveiller la branche master de markdown-it et tenter un rebase automatique. Si le mainteneur reste aussi conservateur concernant les changements, le correctif devrait s’appliquer proprement pendant longtemps. Sauf s’ils font un grand saut comme une réécriture en modules ES plutôt qu’en CommonJS.
Nous en avons discuté en interne et avons décidé de procéder à un hard fork de typographer.
Nous allons essentiellement désactiver typographer dans markdown.it et implémenter une copie dans Discourse. markdown.it est extrêmement extensible, il s’agit principalement d’une opération de « copier-coller ».
Une fois le copier-coller terminé, nous pourrons ajouter des tests, personnaliser et modifier certaines règles.
Salut, désolé de remonter cette discussion. Comme je cherche un moyen de désactiver ... -> …, je voulais savoir si cette fonctionnalité a évolué d’une manière ou d’une autre, et si je peux m’attendre à pouvoir activer ou désactiver des règles individuelles à l’avenir.
Eh bien, j’ai déjà essayé cela, mais apparemment, cela ne fonctionne pas. Que j’active ou désactive le typographe, les substitutions sont toujours effectuées (et, au passage, (c) ne semble pas fonctionner).