理解docx格式5

数字与级

numbering元素的<w:abstractNum>里面定义,用<w:num>数字部分内创建元素.

xml 复制代码
<w:numbering>
<w:abstractNum w:abstractNumId="0">
<抽象数字/>
<w:nsid w:val="099A081C"/>
<w:multiLevelType w:val="hybridMultilevel"/>
<w:lvl w:ilvl="0">
<级别/>
<w:start w:val="1"/>
<w:numFmt w:val="upperLetter"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="360" w:hanging="360"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Arial Black" w:hAnsi="Arial Black"/>
<w:color w:val="C00000"/>
<w:sz w:val="28"/>
</w:rPr>
</w:lvl>
</w:abstractNum>
<上为抽象数字定义,下为实例定义/>
<w:num w:numId="1">
<w:abstractNumId w:val="0"/>
<这里/>
</w:num>
</w:numbering>

上面的XML定义了个只有一级的方案(w:lvl w:ilvl="0").它还创建了个数字为1(w:num w:NumId="1")的无任何更改或异常的引用abstractNum的实例.文档内容中,可针对给定段落引用此实例,如下:

xml 复制代码
<w:p>
<w:pPr>
<w:pStyle w:val="ListParagraph"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="1"/>
<这里/>
</w:numPr>
<数字属性/>
</w:pPr>
<w:r>
<w:t>这是第1个数字段</w:t>
</w:r>
</w:p>

注意,上述示例中文档内容中的数字引用,包含直接引用级别,因为<w:numPr>同时包含(numId)数字定义引用和(ilvl)级引用.

子元素,numIdMacAtLeanup/abstractNum/num/numPicBullet/

xml 复制代码
<ol>
<li style="list-style-type:upper-roman;">第1级</li>
<ol>
<li style="list-style-type:upper-alpha;">第2级</li>
<ol>
<li style="list-style-type:decimal;">第3级</li>
</ol>
</li>
</ol>
</li>
<li style="list-style-type:upper-roman;">也是第1级</li>
</ol>

数字或级方案的核心定义是在数字部分(数字.xml)的<w:numbering>根元素内的<w:abstractNum>元素的定义.

xml 复制代码
<w:abstractNum w:abstractNumId="0">
<w:nsid w:val="099A081C"/>
<w:multiLevelType w:val="multilevel"/>
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFit w:val="upperRoman"/>
<w:pStyle w:val="Heading1"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="0" w:firstLine="0"/>
</w:pPr>
</w:lvl>
<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFit w:val="upperLetter"/>
<w:pStyle w:val="Heading2"/>
<w:lvlText w:val="%2."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="720" w:firstLine="0"/>
</w:pPr>
</w:lvl>
<w:lvl w:ilvl="2">
<w:start w:val="1"/>
<w:numFit w:val="decimal"/>
<w:pStyle w:val="Heading3"/>
<w:lvlText w:val="%3."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="1440" w:firstLine="0"/>
</w:pPr>
</w:lvl>
. . .
</w:abstractNum>

多个级别.只1个abstractNumID属性.

xml 复制代码
<w:abstractNum w:abstractNumId="0">
. . .
</w:abstractNum>
<w:num w:numId="1">
<w:abstractNumId w:val="0"/>
</w:num>

除了<w:tmpl>/nsid子元素外,有lvl/multiLevelType/name/numStyleLink/styleLink子元素.

xml 复制代码
<w:multiLevelType w:val="multilevel"/>

类型,可为singleLevel/multiLevel/hybridMultiLevel.

xml 复制代码
<w:name w:val="Example Name"/>

numStyleLink使用引用:

xml 复制代码
<w:abstractNum w:abstractNumId="0">
<w:nsid w:val="099A081C"/>
<w:multiLevelType w:val="multilevel"/>
<w:numStyleLink w:val="TestNumberingStyle"/>
</w:abstractNum>

风格如下:

xml 复制代码
<w:style w:type="numbering" w:styleId="TestNumberingStyle">
. . .
</w:style>

风格链接:

xml 复制代码
<w:numbering>
. . .
<w:abstractNum w:abstractNumId="5">
. . .
<w:styleLink w:val="ExampleNumberingStyle"/>
. . .
</w:abstractNum>
</w:numbering>

引用:

xml 复制代码
<w:styles>
<w:style w:type="numbering" w:styleId="ExampleNumberingStyle">
<w:name w:val="ExampleNumberingStyle"/>
. . .
<w:pPr>
<w:numPr>
<w:numId w:val="6"/>
</w:numPr>
</w:pPr>
</w:style>
</w:styles>

<w:lvl>定义数字级别.

xml 复制代码
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="upperLetter"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="360" w:hanging="360"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Arial Black" w:hAnsi="Arial Black"/>
<w:color w:val="31849B"/>
<w:sz w:val="28"/>
</w:rPr>
</w:lvl>

属性tplc(显示级别)/ilvl/tentative(保存但未用)/

xml 复制代码
<w:p>
<w:pPr>
<w:pStyle w:val="ListParagraph"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="1"/>
</w:numPr>
</w:pPr>
<w:r>
<w:t>这是第1级</w:t>
</w:r>
</w:p>

<w:ilv>子元素,legacy兼容的.
isLgl(10进制)/lvlJc(对齐)/lvlPicBulletId(要用图片)/lvlRestart(应重启)/lvlText(显示文本)/numFmt(数字格式)/pPr(级段属性)/pStyle(级段风格),

xml 复制代码
<w:pPr>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="0"/>
</w:numPr>
</w:pPr>

接着:

xml 复制代码
<w:abstractNum w:abstractNumId="1">
<w:lvl w:ilvl="0">
<w:pPr>
. . .
<w:pPr>
. . .
</w:lvl>
. . .
</w:abstractNum>

接着

xml 复制代码
<w:rPr>
<w:rFonts w:ascii="Arial Black" w:hAnsi="Arial Black"/>
<w:color w:val="C00000"/>
<w:sz w:val="28"/>
</w:rPr>

起始值:

xml 复制代码
<w:numFmt w:val="UpperRoman"/>
<w:start w:val="2"/>

start.
suff指定要在数字符号和段落文本间显示的字符.

xml 复制代码
<w:suff w:val="space"/>

可为nothing/space/tab.

xml 复制代码
<ol>
<li style="list-style-type:upper-roman;">第1级</li>
<li style="list-style-type:upper-alpha; margin-left:2cm;">第2级</li>
<li style="list-style-type:decimal; margin-left:4cm;">第3级</li>
</ol>

文本级:

xml 复制代码
<w:lvlText w:val=" "/>

示例:

xml 复制代码
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="upperRoman"/>
<w:pStyle w:val="Heading1"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="0" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFmt w:val="upperLetter"/>
<w:pStyle w:val="Heading2"/>
<w:lvlText w:val="%2."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="720" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvl w:ilvl="2">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading3"/>
<w:lvlText w:val="Sub %1-%2-%3. "/>
<指定格式/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="1440" w:firstLine="0"/>
</w:pPr>
</w:lvl>

三级:罗马/字母/指定格式.
属性:null

xml 复制代码
<w:lvlText w:null="1"/>

数字格式:<w:numFmt w:val=" "/>.
val可为bullet/cardinalText/chicago/decimal/decimalEnclosedCircle/decimalEnclosedFullstop/decimalEnclosedParen/decimalZero/lowerLetter/lowerRoman/none/ordinalText/upperLetter/upperRoman/
format,如&#x30A2表示用片假名.

<w:isLgl>10进制表示.

xml 复制代码
<w:lvl w:ilvl="3">
<w:start w:val="1"/>
<w:numFmt w:val="lowerLetter"/>
<w:isLgl(添加的)/>
<w:lvlText w:val="%4."/>
<w:lvlJc w:val="start"/>
<w:pStyle w:val="Heading4"/>
<w:pPr>
<w:ind w:start="2160" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvlRestart w:val=" "/>指定数字重启.

xml 复制代码
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="upperRoman"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="0" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFmt w:val="upperLetter"/>
<w:lvlText w:val="%2."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="720" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvl w:ilvl="2">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:lvlRestart w:val="1"/>
<这里,从这里重新从1开始计数/>
<w:lvlText w:val="%3."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="1440" w:firstLine="0"/>
</w:pPr>
</w:lvl>

<w:lvlJc>指定对齐级.

xml 复制代码
<w:lvlJc w:val="start"/>

示例:

xml 复制代码
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="end"/>
<w:pPr>
<w:ind w:start="720" w:hanging="360"/>
</w:pPr>
</w:lvl>

val值为start/end/center/both/distribute/
<w:numPicBullet>为符号号.

通过numPicBulletId属性,在抽象数字定义中的lvlPicBulletId元素,来引用图片

xml 复制代码
<w:numPicBullet w:numPicBulletId="0">
<0号图,绘图/>
<w:drawing>
. . .
</w:drawing>
</w:numPicBullet>

<w:abstractNum w:abstractNumId="0">
<抽象图号/>
<w:nsid w:val="007A7BC1"/>
<w:multiLevelType w:val="hybridMultilevel"/>
<w:lvl w:ilvl="0">
<这里/>
<w:start w:val="1"/>
<w:numFmt w:val="bullet"/>
<w:lvlText w:val=" "/>
<w:lvlPicBulletId w:val="0"/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="720" w:hanging="360"/>
</w:pPr>
<w:rPr>
<w:rFonts w:ascii="Symbol" w:hAnsi="Symbol"/>
<w:color w:val="auto"/>
</w:rPr>
</w:lvl>
. . .
</w:abstractNum>

<w:num w:numId="1">
<w:abstractNumId w:val="0"/>
<这里/>
</w:num>

文档内容中的XML不直接引用绘图,仅引用数字,即数字部分中的抽象数字的实例.

xml 复制代码
<w:p>
<w:pPr>
<w:pStyle w:val="ListParagraph"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numID w:val="1"/>
</w:numPr>
</w:pPr>
<w:r>
<w:t>这是第1段.
</w:r>
</w:p>

numPicBullet属性为numPicBulletId标识.

drawing子元素.
lvlPicBulletIdval属性.类似:

xml 复制代码
<ul style="list-style-image: url(images/bulletImage.gif)">

<w:lvlOverride>指定覆盖.

xml 复制代码
<w:numbering>
<w:abstractNum w:abstractNumId="1">
<w:nsid w:val="26152095"/>
<w:multiLevelType w:val="hybridMultilevel"/>
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFit w:val="decimal"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:ind w:start="720" w:hanging="360"/>
</w:pPr>
</w:lvl>
. . .
</w:abstractNum>

<w:num w:numId="1">
<w:abstractNumId w:val="1"/>
<w:num>

<w:num w:numId="2">
<w:abstractNumId w:val="1"/>
<w:lvlOverride w:ilvl="0">
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numfit w:val="decimal"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="start"/>
<w:pPr>
<w:pBdr>
<w:top w:val="single" w:sz="24" w:space="1" w:color="FF0000"/>
</w:pBdr>
<w:ind w:start="0" w:firstLine="0"/>
</w:pPr>
</w:lvl>
</w:lvlOverride>
</w:num>
</w:numbering>

1个属性,ilvl指定级数,

2个元素,lvl指定被覆盖级数,startOverride指定开始数,

xml 复制代码
<w:startOverride w:val="2"/>
相关推荐
浅醉樱花雨9 天前
python 基于 docx 文件模板生成 docx 或 PDF 文件
python·pdf·docx·word模板
归子莫4 个月前
使用docxtemplater-image-module-free时支持动态获取图片大小
前端·docx
Prosper Lee5 个月前
React(四):DOCX文件在线预览
前端·javascript·react·docx·在线预览
伊织code5 个月前
pdf2docx - pdf 提取内容转 docx
pdf·ocr·docx·pdf2docx
FLK_90906 个月前
用Python读取Word文件并提取标题
word·docx·python3.9·ordereddict
码上富贵8 个月前
从 Word 文档中提取所有的有效 JSON 对象(包含跨段落)
python·json·word·docx·doc
A_STUDY程序媛9 个月前
docxTemplater——从word模板生成docx文件
前端·javascript·docx
E-iceblue1 年前
Python 实现 PDF 到 Word 文档的高效转换(DOC、DOCX)
python·docx·doc·pdf转换为word
一个处女座的程序猿1 年前
成功解决ModuleNotFoundError: No module named ‘docx.text.hyperlink‘
python·docx