Dans Word, le gras correspond à Aucun. Est-ce que ça compte comme gras ?

Un format direct None signifie non défini et non False. Seuls le formatage direct et les chaînes de styles de caractères explicites sont vérifiés ici ; Aucun n'est renvoyé lorsqu'aucune valeur n'est trouvée, laissant les styles de paragraphe, les valeurs par défaut du document et les règles de bascule OOXML pour une analyse plus approfondie, et ne peut pas être appelé un calculateur de style complet et efficace.

bold est Aucun dans Word. Est-ce que ça compte comme gras ? Conclusion en une phrase

Si vous utilisez python-docx pour vérifier par lots le format des documents Word, vous avez peut-être rencontré ce doute : run.bold renvoie None. Est-ce audacieux, pas audacieux, ou autre chose ? Ce problème sera rencontré lors de la révision du format, du tri par lots ou de la vérification de la mise en page avant la traduction. Une erreur de jugement fausserait la conclusion du format.

Cet article est destiné aux développeurs et ingénieurs documentaires qui doivent écrire leurs propres scripts pour analyser le style .docx. Après avoir lu, vous comprendrez pourquoi None n'est pas égal à False, apprendrez à utiliser des fonctions récursives pour revenir en arrière le long de la chaîne de style et saurez quels jugements peuvent être fiables et lesquels doivent être laissés à l'examen humain.

Dans Word, le gras signifie Aucun. Est-ce que ça compte comme gras ? Conclusion en une phrase

run.bold est None, ce qui signifie qu'il n'est pas défini au format direct, ce qui ne veut pas dire qu'il n'est pas en gras. Vous devez continuer à rechercher vers le haut le style de paragraphe, la valeur par défaut du document, etc. Le code de cet article vérifie uniquement le formatage direct et les chaînes de styles de caractères explicites et ne constitue pas un calculateur de style valide et complet.

votre situationPratiques recommandéesraison
run.bold renvoie NoneContinuez la recherche le long de la chaîne de styles de caractères, ne la traitez pas directement comme FalseNone signifie non défini, non négatif
run.bold Retour FalseTraiter comme annulant explicitement la mise en grasRemplacement explicite correspondant à <w:b w:val="0"/>
Aucune valeur trouvée dans la chaîne de stylesMarquer pour révision manuellePeut impliquer des paramètres non résolus tels que docDefaults ou les polices de thème
Nom du style Alias chinoisBloquez et signalez les erreurs, ne les gérez pas en silencepython-docx a un support instable pour les noms de styles localisés
Éléments de liste complexes ou fichiers .doc convertis, protégés et modifiés par macroSous réserve d'un examen manuelLes résultats de l'analyse peuvent ne pas correspondre à la représentation visuelle

Quel problème doit être résolu en premier dans cet article ?

Le format direct None signifie non défini et non False. Seuls le formatage direct et les chaînes de styles de caractères explicites sont vérifiés ici ; None est renvoyé lorsqu'aucune valeur n'est trouvée, laissant le soin aux styles de paragraphe, aux valeurs par défaut du document et aux règles de bascule OOXML pour une analyse ultérieure, et ne peut pas être appelé un calculateur de style valide complet.

Exemple de composition autonome

Voir la liste d'importation pour les dépendances. Le code construit les entrées en mémoire ; les enregistrements d'exécution sont fournis séparément et ne représentent pas une garantie de tous les fichiers réels.

from docx import Document
from docx.enum.style import WD_STYLE_TYPE
def partial_bold(run):
    if run.bold is not None:
        return run.bold
    style, seen = run.style, set()
    while style is not None and style.style_id not in seen:
        seen.add(style.style_id)
        if style.font.bold is not None:
            return style.font.bold
        style = style.base_style
    return None
doc = Document()
style = doc.styles.add_style("DemoBold", WD_STYLE_TYPE.CHARACTER)
style.font.bold = True
run = doc.add_paragraph().add_run("Example")
run.style = style
assert partial_bold(run) is True
run.bold = False
assert partial_bold(run) is False
plain = doc.add_paragraph().add_run("Plain")
assert partial_bold(plain) is None

Comprendre la logique à trois états de l'héritage de style

L'attribut gras dans Word a trois états, qui doivent être compris séparément :

  • Gras explicite : sélectionnez le texte dans l'interface et cliquez sur le bouton gras. <w:b/> est écrit au format XML et run.bold est True.
  • Annulation explicite : pour annuler spécifiquement un certain effet de style qui doit être en gras, écrivez <w:b w:val="0"/> dans le XML, et run.bold est False.
  • Non défini : le texte se trouve simplement dans le paragraphe sans aucune balise grasse directe. Le fait de mettre en gras ou non dépend de la définition de style associée, run.bold est None.

None signifie « veuillez rechercher », et non « non ».

Pourquoi devons-nous retracer la chaîne de style ?

Cette conception vise à économiser la taille du fichier et à maintenir la cohérence du format. Comme l'indique la documentation officielle, les styles intégrés (Built-in Styles) ne sont même pas écrits dans styles.xml jusqu'à ce qu'ils soient utilisés, ils existent dans l'application Word en tant que « Styles latents ». Par conséquent, le code doit avoir la capacité de revenir en arrière sur la chaîne de styles plutôt que de s’appuyer uniquement sur les propriétés de l’objet Run lui-même.

Pour déterminer en toute sécurité si le texte est réellement en gras, nous devons écrire une fonction récursive qui traverse la chaîne d'héritage de style. Veuillez noter : le code suivant est une démonstration pédagogique qui a réussi la vérification de l'échantillon synthétique et est destinée à démontrer la logique de jugement à trois états. Les environnements de production réels doivent également gérer la protection des références circulaires, la résolution des espaces de noms et davantage de types d'attributs.

Critères d'acceptation et limites de révision manuelle

L'analyse automatisée ne peut pas émuler parfaitement le moteur de rendu de Word. Lorsque vous travaillez avec des documents par lots, une matrice d'acceptation claire doit être établie pour distinguer les situations où le code peut être fiable et celles où il doit être laissé aux humains.

Observer les phénomènesvaleur de retour du coderendu réeldécision de traitementNote
Run.bold=Aucun, Style.bold=TrueTrueEn gras✅ Passe automatiqueScènes d’héritage de style standard
Run.bold=False, Style.bold=TrueFalseRoutine✅ Passe automatiqueSuppression explicite, logique de code correcte
Run.bold=Aucun, Style.bold=AucunFalseEn gras⚠️ Une vérification manuelle est requiseIl est possible que les paramètres docDefault ou les paramètres de police de thème manquent
Le nom de style est un alias chinoisAttributeError-❌ Blocage et signalement des erreursPython-docx prend en charge des noms de style localisés instables
Texte dans les éléments de la liste complexeTrue/FalseIncertain⚠️ Une vérification manuelle est requiseL’interaction entre le style de liste et le style de paragraphe est extrêmement complexe

Portée non applicable

Cette logique d’analyse s’applique uniquement au format standard .docx. Pour les fichiers convertis à partir de .doc, des documents protégés ou des documents modifiés dynamiquement avec des macros, les résultats de l’analyse de code peuvent différer considérablement de la présentation visuelle. De plus, le code démontre la logique d’extraction des attributs, pas la disposition de bout en bout ni la restauration. Si l’objectif est de reproduire précisément la disposition, se fier uniquement aux valeurs des attributs ne suffit pas.

📊 Comparaison des noyaux

StatutÉcriture en formatage directrun.bold RetourSignification
Le style explicite est audacieux<w:b/>TrueÉpaississez-le directement
Explicitement annulé<w:b w:val="0"/>FalseCouverture audacieuse dans le style
Pas mis en placePas d’inscriptions en grasNoneContinuez à chercher le long de la chaîne de styles

🎯 Quelle méthode te convient ?

Si tu veux vérifier si le texte est en gras

Remontez la chaîne de styles ; ne lisez pas seulement run.bold.

Si tu n’as besoin que de lire le format direct

True et False peuvent être directement fiables, mais None nécessite un jugement supplémentaire.

Si tu veux reproduire précisément la disposition

L’extraction de propriétés est le point de départ ; elle doit aussi être combinée avec les résultats de rendu et les vérifications manuelles.

Si vous traitez avec des fichiers .doc, protégés ou modifiés en macro

Premièrement, gérez-le selon le processus de revue manuelle ; les résultats du code sont uniquement à titre de référence.

❓ Foire aux questions (FAQ)

1. run.bold signifie-t-il que None n’est pas en gras ?

Non. None signifie que le format direct n’est pas défini et qu’il faut continuer à chercher le long de la chaîne de styles.

2. Ce code peut-il reproduire entièrement la mise en page de Word ?

Non. Le code démontre la logique d’extraction d’attributs, pas la disposition de bout en bout ni la restauration.

3. Que faire si vous tombez sur un nom de style chinois ?

Python-docx prend en charge les noms de style localisés instables ; la matrice d’acceptation gère et déclare les blocs et les erreurs.

4. Que devriez-vous faire avant de manipuler des documents importants ?

Conservez les originaux et vérifiez les résultats selon les limites et les éléments d’acceptation spécifiés dans le document.

Références et lectures complémentaires

Utilisez cette liste de contrôle pour la traduction de documents

La traduction de mots mélange facilement les problèmes de contenu avec les problèmes de mise en forme. Laisser des coches telles que styles, en-têtes et tableaux dans la liste de livraison permet aux correcteurs de savoir où vérifier.

OmniDoc (entrée produit) propose des portails de traduction de documents multi-formats, et le site officiel introduit des OCR, des glossaires et des fonctionnalités de référence bilingues. Pour les équipes qui veulent partir directement des fichiers, c’est une voie à évaluer avec de vrais échantillons. Veuillez utiliser le fichier anxieux que vous avez le droit de télécharger et vérifier les résultats de la liste de contrôle de cet article. Cela ne prétend pas qu’OmniDoc utilise la bibliothèque open source ou les algorithmes internes de cet article, ni ne remplace les tests de performance produit par des exemples.

📝 Résumé

None signifie « non défini », pas « non » ; en grasset, continuez à revenir en arrière le long de la chaîne de styles. En cas de doute, la matrice d’acceptation est confiée à une revue manuelle.

Faites l’expérience dès maintenant : téléchargez votre document pour commencer à traduire, tout en conservant la mise en forme originale

Mis à jour le 2026-11-14