Est-il possible de barrer du texte en Restructured Text ?
Quelque chose qui, par exemple, est rendu par une balise lorsqu'il est converti en HTML, comme : ~~ReSTructuredText~~
Est-il possible de barrer du texte en Restructured Text ?
Quelque chose qui, par exemple, est rendu par une balise lorsqu'il est converti en HTML, comme : ~~ReSTructuredText~~
J'ai vérifié les documents plus attentivement, comme suggéré par Ville Säävuori, et j'ai décidé d'ajouter la barre de soulignement de la même manière :
.. rôle:: strike
:class: strike
Dans le document, ceci peut être appliqué de la manière suivante :
:strike:`Ce texte est barré`
Ensuite, dans mon fichier css
, j'ai une entrée :
.strike {
text-decoration: line-through;
}
Le problème avec cette approche est que vous devez répéter cette définition dans chaque fichier reST que vous souhaitez utiliser des barrages, et cela ne produit pas de balisage significatif du côté HTML (il serait beaucoup mieux de produire une balise ou ). J'ai posté le code pour cela ci-dessous (stackoverflow.com/a/62493316/695591)
Il existe au moins trois façons de le faire :
.. role:: strike
Un exemple de :strike:`texte barré`.
.. container:: strike
Ici, le bloc complet de texte est barré.
Un paragraphe non décoré.
.. class:: strike
Ce paragraphe aussi est barré.
.. admonition:: annulé
:class: strike
Je barre le texte annulé.
Après l'application de rst2html
vous obtenez :
Un exemple de texte barré.
Ici, le bloc complet de texte est barré.
Un paragraphe non décoré.
Ce paragraphe aussi est barré.
Vous les utilisez avec un style
.strike {
text-decoration: line-through;
}
Ici, j'ai pris la directive admonition
comme exemple mais n'importe quelle directive qui permet l'option :class:
ferait l'affaire.
Comme il génère un span
, la directive role
est la seule qui permet d'appliquer votre style à une partie d'un paragraphe.
Il est redondant d'ajouter une classe strike
à une directive également nommée strike
, comme le suggère Gozzilli, car le nom de la directive est la classe par défaut pour la sortie html.
J'ai vérifié cette syntaxe à la fois avec rest2html ``et **Sphinx**. Mais alors que tout fonctionne comme prévu avec `rest2html`, la directive `class` échoue avec **Sphinx**. Vous devez la remplacer par``
`
.. rst-class:: strike
Ce paragraphe aussi est barré.
Cela est uniquement indiqué dans une petite note de bas de page du Sphinx reSt Primer.
` ``
Selon la spécification officielle, il n'y a aucune directive pour le barré dans ReST.
Cependant, si l'environnement permet le rôle :raw: ou si vous êtes capable d'écrire vos propres rôles, vous pouvez écrire un plugin personnalisé pour cela.
Voici une définition Python d'un rôle del
, qui fonctionne mieux que la réponse acceptée si vous voulez utiliser le rôle dans plusieurs pages d'un blog Pelican ou d'un projet de documentation Sphinx :
from docutils import nodes
from docutils.parsers.rst import roles
def deleted_role(_role, rawtext, text, _lineno, _inliner, options={}, _content=[]):
roles.set_classes(options)
options.setdefault('classes', []).append("del")
return [nodes.inline(rawtext, text, **options)], []
roles.register_canonical_role('del', deleted_role)
Mieux encore serait d'étendre l'écrivain HTML pour produire une balise correcte, comme ceci :
from docutils import nodes
from docutils.parsers.rst import roles
from docutils.writers._html_base import HTMLTranslator
class delnode(nodes.inline):
pass
def visit_delnode(self, node):
self.body.append(self.starttag(node, 'del', ''))
def depart_delnode(self, node):
self.body.append('')
HTMLTranslator.visit_delnode = visit_delnode
HTMLTranslator.depart_delnode = depart_delnode
def deleted_role(_role, rawtext, text, _lineno, _inliner, options={}, _content=[]):
roles.set_classes(options)
return [delnode(rawtext, text, **options)], []
roles.register_canonical_role('del', deleted_role)
Vous pouvez facilement l'ajuster pour produire un , bien sûr.
J'ai trouvé les autres réponses très utiles. Je ne suis pas très familier avec Sphinx mais je l'utilise pour un projet. Je voulais également avoir la capacité de barrer du texte et j'ai réussi à le faire en me basant sur les réponses précédentes. Pour être clair, j'ai ajouté mon rôle de barré comme gozzilli l'a mentionné mais je l'ai enregistré à l'intérieur de mon conf.py en utilisant la variable rst_prolog comme discuté dans le fil de stack overflow ici. Cela signifie que ce rôle est disponible pour tous vos fichiers rest.
Ensuite, j'ai étendu le modèle html de base comme décrit ci-dessus en créant layout.html
à l'intérieur de _templates
dans mon répertoire source. Le contenu de ce fichier est :
{% extends "!layout.html" %}
{% set css_files = css_files + ["_static/myStyle.css"] %}
Cela inclut essentiellement un fichier css personnalisé à tous vos documents html par défaut générés.
Enfin, dans mon répertoire _static à l'intérieur de mon répertoire source, j'ai inclus le fichier myStyle.css
qui contient :
.strike {
text-decoration: line-through;
}
Comme les autres réponses l'ont déjà fourni.
Je rédige simplement cette réponse car il n'était pas évident pour moi, avec mon expérience limitée de Sphinx, quels fichiers éditer.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Quand vous utilisez Sphinx, cela pourrait vous aider : stackoverflow.com/a/24932178/2923406