web-dev-qa-db-fra.com

Comment utiliser la couleur dans du texte avec du texte structuré (rst2html.py) ou comment insérer des balises HTML sans lignes vierges?

Comment utiliser la couleur avec du texte structuré? Par exemple, **hello** se traduit par <strong>hello</strong>. Comment faire pour que ReStructure (rst2html.py) traduise quelque chose en <font color="####">text</font>?

J'ai pensé à ..raw :: html, mais cela introduit des lignes vides. Je veux insérer des balises HTML sans lignes vierges.

28
prosseek

J'ai trouvé cette méthode de travail

D'abord, vous avez le rôle.

.. role:: red

An example of using :red:`interpreted text`

Cela se traduit comme suit.

<p>An example of using <span class="red">interpreted text</span></p>

Maintenant, vous avez la classe rouge, vous pouvez utiliser CSS pour changer les couleurs.

.red {
    color:red;
}
39
prosseek

Bien, je suis un nouvel utilisateur maintenant, donc je ne peux pas commenter les réponses des autres, grâce à la politique de stackoverflow ici. https://meta.stackexchange.com/questions/51926/new-users-cant-ask-for-clarifications-except-as-answers

La réponse de Sienkiew est bonne, mais je veux apporter une correction concernant sa dernière phrase.

Il y a IS moyen de spécifier la feuille de style dans le fichier RST. L'indice est dans le post original de Prosseek, c'est-à-dire la directive .. raw ::.

Nous pouvons mettre les lignes suivantes au début de notre fichier RST pour spécifier son style.

.. raw:: html

    <style> .red {color:red} </style>
25
RayLuo

L'autre réponse ici suggère ce que je voulais faire, mais suppose des connaissances détaillées sur les feuilles de style dans docutils. Voici une explication d'un livre de cuisine:

Dans votre fichier RST, déclarez le rôle une fois, puis utilisez-le:

    .. role:: red

    This text is :red:`colored red` and so is :red:`this`

Ensuite, vous avez besoin d'un fichier de feuille de style. Tout d’abord, utilisez Python pour copier la feuille de style par défaut du paquet docutils:

    python
    import os.path
    import shutil
    import docutils.writers.html4css1 as h
    shutil.copy(os.path.dirname(h.__file__)+"/html4css1.css","my.css")

Puis éditez mon.css pour ajouter vos personnalisations à la fin:

    .red {
            color: red;
    }

Créez un fichier de configuration docutils nommé "docutils.conf":

    [html4css1 writer]
    stylesheet-path: my.css
    embed-stylesheet: yes

utilisez rst2html.py pour convertir votre document:

    rst2html.py my_document.rst > my_document.html

Si vous ne voulez pas utiliser docutils.conf, vous pouvez spécifier la feuille de style à chaque fois que vous exécutez rst2html:

    rst2html.py --stylesheet my.css my_document.rst > my_document.html

Autant que je sache, il n’existe aucun moyen de spécifier la feuille de style dans le fichier RST.

10
sienkiew

Combinaison des réponses de @ prosseek's et de @ RayLuo au même endroit - pour faciliter la recherche

En haut de votre fichier RST, placez

.. raw:: html

    <style> .red {color:red} </style>

.. role:: red

:red:`test - this text should be red`

COMMENTAIRE DE CÔTÉ:

Bien sûr, beaucoup de gens voudront le style dans un fichier séparé, comme le dit @sienkiew.

Mais pas toujours.

Par exemple. Je génère ce qui précède à partir d'un script que je veux que les autres utilisateurs puissent exécuter, souvent à partir d'une URL de fichier. Dépendre de rst2html.py, c'est déjà assez grave. Exiger quelque chose de non standard dans un fichier de configuration est pire.

S'il y avait un moyen de créer une définition locale faible pour le style - par ex. "S'il n'y a pas de style .red déjà défini, utilisez ceci, mais sinon utilisez le style déjà défini" - ce serait bien. Mais les définitions locales d’AAFIK sont plus fortes.

Cela fonctionnait avec rst2html.py (Docutils 0.13.1 [release], Python 3.6.4, on cygwin), mais d'autres outils RST ont été rejetés.

0
Krazy Glew

Fonctionne pour moi comme ça:

.. raw:: html

    <style> .red {color:#aa0060; font-weight:bold; font-size:16px} </style>

.. role:: red

:red:`test - this text should be red``
0
Fernando