Ve Wordu je tučné písmo Žádné. Počítá se to jako tučné?
Přímý formát None znamená nenastaveno, nikoli False. Kontroluje se zde pouze přímé formátování a explicitní řetězce stylů znaků; Pokud není nalezena žádná hodnota, není vráceno žádné, takže styly odstavců, výchozí hodnoty dokumentu a pravidla přepínání OOXML budou pro další analýzu a nelze je nazvat kompletní kalkulačkou efektivních stylů.
bold je ve Wordu Žádné. Počítá se to jako tučné? Závěr jednou větou
Pokud používáte python-docx k dávkové kontrole formátu dokumentů aplikace Word, možná jste narazili na tuto pochybnost: run.bold vrací None. Je to tučné, ne tučné nebo něco jiného? Tento problém se objeví při kontrole formátu, dávkovém třídění nebo kontrole rozvržení před překladem. Chybný úsudek zkreslí závěr formátu.
Tento článek je určen vývojářům a dokumentovým inženýrům, kteří potřebují napsat své vlastní skripty pro analýzu stylu .docx. Po přečtení pochopíte, proč se None nerovná False, naučíte se používat rekurzivní funkce k ustupování v řetězci stylů a budete vědět, kterým úsudkům lze věřit a které je třeba nechat na lidské kontrole.
Ve Wordu je tučné písmo Žádné. Počítá se to jako tučné? Závěr jednou větou
run.bold je None, což znamená, že není nastaveno v přímém formátu, což neznamená, že není tučné. Měli byste pokračovat v hledání směrem nahoru podél stylu odstavce, výchozí hodnoty dokumentu atd. Kód v tomto článku kontroluje pouze přímé formátování a řetězce explicitních stylů znaků a není úplnou kalkulačkou platného stylu.
| vaší situaci | Doporučené postupy | důvod |
|---|---|---|
run.bold vrátí None | Pokračujte v hledání v řetězci stylů znaků, nepovažujte to přímo za False | None znamená nenastaveno, není záporné |
run.bold Návrat False | Považujte za výslovné zrušení tučného písma | Explicitní přepsání odpovídající <w:b w:val="0"/> |
| V řetězci stylů nebyla nalezena žádná hodnota | Označte pro ruční kontrolu | Může zahrnovat nevyřešená nastavení, jako jsou docDefaults nebo písma motivů |
| Název stylu Čínský alias | Blokujte a oznamujte chyby, neřešte potichu | python-docx má nestabilní podporu pro názvy lokalizovaných stylů |
Komplexní položky seznamu nebo .doc převedené, chráněné, makromodifikované soubory | Podléhá ruční kontrole | Výsledky analýzy nemusí odpovídat vizuální reprezentaci |
Který problém by měl být v tomto článku vyřešen jako první?
Přímý formát None znamená nenastaveno, nikoli False. Kontroluje se zde pouze přímé formátování a explicitní řetězce stylů znaků; None je vráceno, když není nalezena žádná hodnota, takže je ponecháno na styly odstavců, výchozí hodnoty dokumentu a pravidla přepínání OOXML pro další analýzu a nelze jej nazvat úplnou kalkulačkou platných stylů.
Příklad samostatné kompozice
Závislosti naleznete v seznamu importů. Kód vytváří vstup v paměti; záznamy běhu jsou poskytovány samostatně a nepředstavují záruku všech skutečných souborů.
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
Pochopte třístavovou logiku dědičnosti stylu
Tučný atribut ve Wordu má tři stavy, které je třeba chápat samostatně:
- Explicitní tučné písmo: Vyberte text v rozhraní a klikněte na tlačítko tučné.
<w:b/>je zapsán v XML arun.boldjeTrue. - Explicitní zrušení: Chcete-li konkrétně zrušit určitý stylový efekt, který by měl být tučný, napište do XML
<w:b w:val="0"/>arun.boldjeFalse. - Nenastaveno: Text pouze leží v odstavci bez přímých tučných značek. Zda tučné nebo ne, závisí na přidružené definici stylu,
run.boldjeNone.
None znamená „prosím, podívejte se nahoru", nikoli „ne".
Proč potřebujeme zpětně sledovat řetězec stylů?
Tento návrh má uložit velikost souboru a zachovat konzistenci formátu. Jak uvádí oficiální dokumentace, vestavěné styly (Built-in Styles) se dostyles.xml ani nezapisují, dokud nejsou použity, existují uvnitř aplikace Word jako „latentní styly". Proto musí mít kód možnost zpětného sledování řetězce stylů, spíše než spoléhat se pouze na vlastnosti samotného objektu Run.
Abychom bezpečně určili, zda je text skutečně tučný, musíme napsat rekurzivní funkci, která prochází řetězcem dědičnosti stylu. Upozornění: Následující kód je ukázkou výuky, která prošla kontrolou syntetického vzorku a je určena k demonstraci třístavové logiky úsudku. Skutečná produkční prostředí se také musí vypořádat s ochranou kruhových odkazů, rozlišením jmenného prostoru a dalšími typy atributů.
Kritéria přijetí a hranice manuální kontroly
Automatická analýza nemůže dokonale emulovat vykreslovací modul aplikace Word. Při práci s dávkovými dokumenty by měla být vytvořena jasná akceptační matice, která by rozlišovala mezi situacemi, kdy se na kód lze spolehnout, a kde je nutné jej ponechat na lidech.
| Pozorovat jevy | návratová hodnota kódu | skutečné ztvárnění | rozhodnutí o zpracování | Poznámka |
|---|---|---|---|---|
| Run.bold=Žádný, Style.bold=True | True | Tučné | ✅ Automaticky prošlo | Standardní scénář dědičnosti stylu |
| Run.bold=Nepravda, Styl.bold=True | False | konvenční | ✅ Automaticky prošlo | Explicitní pokrytí, logika kódu je správná |
| Run.bold=Žádné, Style.bold=Žádné | False | Tučné | ⚠️ Vyžaduje ruční kontrolu | Možná chybí docDefaults nebo nastavení písma motivu |
| Název stylu Čínský alias | AttributeError | - | ❌ Zablokujte a nahlaste chybu | python-docx má nestabilní podporu pro názvy lokalizovaných stylů |
| Text ve složitých položkách seznamu | True/False | nejistý | ⚠️ Vyžaduje ruční kontrolu | Interakce mezi stylem seznamu a stylem odstavce je extrémně složitá |
Nelze použít
Tato logika analýzy funguje pouze se standardním formátem.docx. U souborů převedených z .doc, chráněných dokumentů nebo dokumentů, jejichž formát je dynamicky upravován pomocí maker, se výsledky analýzy kódu mohou vážně lišit od vizuální reprezentace. Kromě toho kód demonstruje logiku extrakce atributů spíše než obnovu end-to-end sazby. Pokud je cílem přesně reprodukovat rozložení, spoléhat se pouze na hodnoty atributů nestačí.
📊 Srovnání jádra
| stát | Jak psát v přímém formátu | Návrat run.bold | význam |
|---|---|---|---|
| Vyloženě odvážné | <w:b/> | True | Přímo odvážné |
| Explicitní zrušení | <w:b w:val="0"/> | False | Stylově přepište tučné písmo |
| není nastaveno | Žádné tučné popisky | None | Pokračujte v hledání podél řetězce stylů |
🎯 Která metoda je pro vás vhodná?
Pokud chcete určit, zda je text tučný
Vraťte se po řetězci stylů, nečtěte jen run.bold.
Pokud potřebujete pouze číst přímý formát
True a False lze přijmout přímo, zatímco None musí pokračovat v posuzování.
Pokud chcete přesně reprodukovat rozložení
Výchozím bodem je těžba nemovitosti v kombinaci s výsledky vykreslování a ruční kontrolou.
Pokud máte co do činění s .doc, chráněnými nebo makra upravenými soubory
Nejprve proveďte proces ruční kontroly a výsledky kódu jsou pouze orientační.
❓ Často kladené otázky (FAQ)
1. run.bold je None, znamená to, že není tučné?
žádný. None znamená, že v přímém formátu není žádné nastavení a vyhledávání by mělo pokračovat v řetězci stylů.
2. Dokáže tento kód úplně obnovit rozložení Wordu?
nemůže. Kód demonstruje logiku extrakce atributů, nikoli úplné obnovení sazby.
3. Co mám dělat, když narazím na název čínského stylu?
Podpora python-docx pro lokalizované názvy stylů je nestabilní a rozhodnutí o zpracování v matici přijetí je zablokovat a nahlásit chybu.
4. Co byste měli udělat před manipulací s důležitými dokumenty?
Zachovejte originál a zkontrolujte výsledky podle hranic a položek přijetí v textu.
Reference a další čtení
Tento kontrolní seznam použijte pro překlad dokumentů
Překlad slov má tendenci míchat problémy s obsahem s problémy s formátováním. Ponechání kontrolních položek, jako jsou styly, záhlaví a tabulky na seznamu doručení, dává recenzentům vědět, kde je hledat.
OmniDoc (produktový portál) poskytuje portál pro překlad dokumentů ve více formátech a oficiální webové stránky zavádějí funkce OCR, glosář a dvojjazyčné porovnání. Pro týmy, které chtějí pracovat přímo ze souborů, je to cesta, kterou stojí za to vyhodnotit pomocí reálných vzorků. Použijte prosím znecitlivěné soubory, k jejichž nahrávání máte oprávnění, a ke kontrole výsledků použijte zaškrtávací položky v tomto článku. Není zde žádné tvrzení, že OmniDoc používá open source knihovny nebo interní algoritmy v tomto článku, ani tento příklad nenahrazuje testování výkonu produktu.
📝 Shrnutí
None je „nenastaveno", nikoli „ne". Při posuzování tučného písma musíte pokračovat ve sledování podél řetězce stylů. V případě nejistoty jej předejte k ruční kontrole podle akceptační matice.
Vyzkoušejte to hned: Nahrajte dokument a začněte překládat při zachování původního rozvržení


