下划线

Word文档中的文本可以有多种样式的下划线。

协议

underline的调用协议重载,其工作方式如下 .bold.italic 对于单下划线,还允许指定枚举值以指定更复杂的下划线,例如虚线、波浪线和双下划线:

>>> run = paragraph.add_run()
>>> run.underline
None
>>> run.underline = True
>>> run.underline
True
>>> run.underline = WD_UNDERLINE.SINGLE
>>> run.underline
True
>>> run.underline = WD_UNDERLINE.DOUBLE
>>> str(run.underline)
DOUBLE (3)
>>> run.underline = False
>>> run.underline
False
>>> run.underline = WD_UNDERLINE.NONE
>>> run.underline
False
>>> run.underline = None
>>> run.underline
None

枚举

XML样本

基线运行:

<w:r>
  <w:t>underlining determined by inheritance</w:t>
</w:r>

单下划线:

<w:r>
  <w:rPr>
    <w:u w:val="single"/>
  </w:rPr>
  <w:t>single underlined</w:t>
</w:r>

双下划线:

<w:r>
  <w:rPr>
    <w:u w:val="double"/>
  </w:rPr>
  <w:t>single underlined</w:t>
</w:r>

直接应用无下划线,重写继承的值:

<w:r>
  <w:rPr>
    <w:u w:val="none"/>
  </w:rPr>
  <w:t>not underlined</w:t>
</w:r>

架构摘要

请注意 w:val 属性对 CT_Underline 是可选的。当它不存在时,运行时不会出现下划线。

<xsd:complexType name="CT_R">  <!-- flattened for readibility -->
  <xsd:sequence>
    <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
    <xsd:group   ref="EG_RunInnerContent" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
  <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
  <xsd:attribute name="rsidR"   type="ST_LongHexNumber"/>
</xsd:complexType>

<xsd:complexType name="CT_RPr">  <!-- flattened for readibility -->
  <xsd:sequence>
    <xsd:group   ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:group name="EG_RPrBase">
  <xsd:choice>
    <xsd:element name="rStyle"          type="CT_String"/>
    <xsd:element name="b"               type="CT_OnOff"/>
    <xsd:element name="i"               type="CT_OnOff"/>
    <xsd:element name="color"           type="CT_Color"/>
    <xsd:element name="sz"              type="CT_HpsMeasure"/>
    <xsd:element name="u"               type="CT_Underline"/>
    <!-- 33 others -->
  </xsd:choice>
</xsd:group>

<xsd:complexType name="CT_Underline">
  <xsd:attribute name="val"        type="ST_Underline"/>
  <xsd:attribute name="color"      type="ST_HexColor"/>
  <xsd:attribute name="themeColor" type="ST_ThemeColor"/>
  <xsd:attribute name="themeTint"  type="ST_UcharHexNumber"/>
  <xsd:attribute name="themeShade" type="ST_UcharHexNumber"/>
</xsd:complexType>

<xsd:simpleType name="ST_Underline">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="single"/>
    <xsd:enumeration value="words"/>
    <xsd:enumeration value="double"/>
    <xsd:enumeration value="thick"/>
    <xsd:enumeration value="dotted"/>
    <xsd:enumeration value="dottedHeavy"/>
    <xsd:enumeration value="dash"/>
    <xsd:enumeration value="dashedHeavy"/>
    <xsd:enumeration value="dashLong"/>
    <xsd:enumeration value="dashLongHeavy"/>
    <xsd:enumeration value="dotDash"/>
    <xsd:enumeration value="dashDotHeavy"/>
    <xsd:enumeration value="dotDotDash"/>
    <xsd:enumeration value="dashDotDotHeavy"/>
    <xsd:enumeration value="wave"/>
    <xsd:enumeration value="wavyHeavy"/>
    <xsd:enumeration value="wavyDouble"/>
    <xsd:enumeration value="none"/>
  </xsd:restriction>
</xsd:simpleType>