Ponctuation intelligente sans symboles IP

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 ?

Je suis avocat. Je donne régulièrement des conseils sur les marques et les droits d’auteur, y compris sur les forums Discourse. Je n’ai encore jamais conseillé à quelqu’un de modifier un message pour ajouter un symbole de copyright ou de marque déposée, et les non-juristes ont tendance à surestimer massivement à quel point ces symboles sont utiles ou nécessaires. À l’inverse, j’ai édité plus de messages que je ne peux en compter pour tenter d’empêcher le rendu Markdown d’afficher le symbole ©.

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.

9 « J'aime »

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.

6 « J'aime »

Je soutiendrais aussi simplement la suppression de (c).

Ce n’est pas comme si c’était difficile de rechercher « symbole copyright », de copier et de coller. Les geeks peuvent taper ©.

D’un point de vue utilisabilité, je proposerais une liste de toutes les expansions. Je soupçonne fortement qu’elles sont plus surprenantes qu’utiles.

5 « J'aime »

Bon, pour celui-ci, le bénéfice (minuscule, tout petit) semble l’emporter sur le risque (assez important !).

5 « J'aime »

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é.

5 « J'aime »

Huh, étrange qu’il ne soit pas configurable du tout. C’est dommage. Donc

(c) (tm) (r) (p) → (c) ™ (r) (p)

3 « J'aime »

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.

3 « J'aime »

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.

Tous les remplacements sont codés en dur. Ils incluent (c) → ©, (tm) → ™, (r) → ® et (p) → ℗, qui sont regroupés sous l’appellation « abréviations encadrées ».

Pour ce que cela vaut, je n’obtiens pas (p) pour §. Cela devrait presque certainement être ℗, le symbole du phonogramme, à la place.

Je vais examiner cela un peu et voir si je ne peux pas proposer un correctif rendant la fonctionnalité « typographe » plus configurable.

7 « J'aime »

Cela m’énerve aussi. Je le rencontre au moins une fois par semaine.

9 « J'aime »

Premièrement, RP annexe, correction de l’interprétation de (p) et (P) : Fix typographer interpretation of `(p)` by kemitchell · Pull Request #761 · markdown-it/markdown-it · GitHub

7 « J'aime »

PR pour désactiver des groupes de remplacements : Configurable typographer by kemitchell · Pull Request #762 · markdown-it/markdown-it · GitHub

3 « J'aime »

Le mainteneur est très réactif. Il ferme mes PR en quelques minutes :stuck_out_tongue_winking_eye:

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.

3 « J'aime »

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.

6 « J'aime »

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.

9 « J'aime »

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.

Merci !

2 « J'aime »

C’est un paramètre du site, désactivez simplement le typographe.

2 « J'aime »

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).

2 « J'aime »

Vous devez désactiver, puis reconstruire le HTML de vos messages souhaités.

5 « J'aime »

C’est maintenant très complet :confetti_ball:

2 « J'aime »