Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第13章:页眉页脚与分节

学习目标

  • 理解页眉页脚和节的关系
  • 理解页眉页脚的存储方式
  • 掌握奇偶页不同、首页不同的设置
  • 理解分节的作用

13.1 页眉页脚存在哪里

页眉和页脚不放在主文档document.xml中,而是单独存放

word/
  ├── header1.xml  <!-- 第一个页眉 -->
  ├── header2.xml  <!-- 第二个页眉 -->
  ├── footer1.xml  <!-- 第一个页脚 -->
  ├── footer2.xml  <!-- 第二个页脚 -->
  └── ...

每个页眉或页脚一个单独的XML文件。

在主文档中,只在节属性里引用它们的关系ID。


13.2 关系引用

每个页眉页脚都需要在document.xml.rels中添加关系:

<Relationships ...>
  <Relationship Id="rId1"
    Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
    Target="header1.xml"/>
  <Relationship Id="rId2"
    Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
    Target="footer1.xml"/>
</Relationships>
  • 类型:页眉是.../header,页脚是.../footer
  • Target指向对应的xml文件

然后在节属性中引用这些关系ID:

<w:sectPr>
  <w:headerReference w:type="default" r:id="rId1"/>
  <w:footerReference w:type="default" r:id="rId2"/>
  ...
</w:sectPr>

13.3 不同类型的页眉页脚

一个节可以有最多四个页眉页脚:

类型w:type值说明
默认default所有页默认
首页first本第一节首页
偶数页even偶数页
奇数页odd奇数页

首页不同

如果要设置首页不同,在节属性中:

<w:sectPr>
  <w:titlePage/>              <!-- 首页不同 -->
  <w:headerReference w:type="first" r:id="rId1"/>     <!-- 首页页眉 -->
  <w:footerReference w:type="first" r:id="rId2"/>     <!-- 首页页脚 -->
  <w:headerReference w:type="default" r:id="rId3"/>  <!-- 其他页默认页眉 -->
  <w:footerReference w:type="default" r:id="rId4"/>  <!-- 其他页默认页脚 -->
</w:sectPr>

<w:titlePage/>表示开启首页不同。

奇偶页不同

如果要奇偶页不同,在文档设置中:

<w:settings>
  <w:evenAndOddHeaders/>  <!-- 奇偶页不同 -->
</w:settings>

然后你需要提供:

<w:headerReference w:type="even" r:id="rId1"/>
<w:headerReference w:type="odd" r:id="rId2"/>

这样奇数页用odd页眉,偶数页用even页眉。

同时首页不同和奇偶不同

可以同时开启:

  • 开启w:titlePage → 首页单独
  • 开启w:evenAndOddHeaders → 奇偶不同
  • 所以你需要准备四个页眉:首页、奇数、偶数

13.4 页眉页脚内容结构

页眉文件header1.xml里面是什么样的?

其实和document.xml的body里面结构一样,可以放段落、表格:

<?xml version="1.0" encoding="UTF-8"?>
<w:hdr xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:p>
    <w:pPr>
      <w:jc w:val="right"/>  <!-- 右对齐 -->
    </w:pPr>
    <w:r>
      <w:t>文档标题</w:t>
    </w:r>
  </w:p>
</w:hdr>

根元素是<w:hdr>,里面和正文一样,可以放段落、表格等。页脚根元素是<w:ftr>,内容结构一样:

<w:ftr>
  <w:p>
    <w:r>
      <w:t>第 </w:t>
    </w:r>
    <w:r>
      <w:fldChar w:fldCharType="begin"/>
    </w:r>
    <w:r>
      <w:instrText>PAGE</w:instrText>
    </w:r>
    <w:r>
      <w:fldChar w:fldCharType="end"/>
    </w:r>
    <w:r>
      <w:t> 页</w:t>
    </w:r>
  </w:p>
</w:ftr>

看到那个PAGE了吗?这就是页码域,Word会自动替换成当前页码。我们后面讲域的时候再说。


13.5 与节的关系

页眉页脚是按节来的,每一节可以有自己的页眉页脚

默认情况下,新节会继承上一节的页眉页脚。如果你想不同节不同页眉,需要设置:

<w:hdr w:rsidR="00000000">
  <!-- 内容 -->
</w:hdr>

然后在新节的sectPr中引用你自己的页眉,它就会用新的,不继承上一节。

为什么要分节改变页眉

常见场景:

  • 封面:不需要页眉页码
  • 目录:不需要页码或用罗马页码
  • 正文:需要页眉页码
  • 章节:每章页眉不同(比如显示章标题)

这种情况你就需要把文档分成多个节,每个节设置自己的页眉页脚。


13.6 页眉位置

页眉距离顶部多少,页脚距离底部多少,在哪里设置?

在页边距设置里面:

<w:sectPr>
  <w:pgMar w:top="1440" w:header="720" ... />
</w:sectPr>
  • w:header 就是页眉距离顶部的距离(单位缇)
  • w:footer 就是页脚距离底部的距离

默认一般是720缇(0.5英寸)。


13.7 链接到前一条页眉

Word UI中有个“链接到前一条页眉“按钮,这个在XML中怎么表示?

其实很简单:如果当前节没有定义自己的页眉引用,就用前一节的,这就是“链接到前一条“。如果定义了自己的引用,就断开链接用自己的。

所以:

  • 链接到前一条 → 当前节sectPr中不写页眉引用
  • 不链接 → 当前节sectPr中写自己的页眉引用

13.8 完整例子

我们来看一个完整例子:文档有两节,第一节是封面,第二节正文,首页不同,正文有页码。

关系 (document.xml.rels)

<Relationship Id="rId1" Type="...header" Target="header1.xml"/>
<Relationship Id="rId2" Type="...footer" Target="footer1.xml"/>
<Relationship Id="rId3" Type="...header" Target="header2.xml"/>
<Relationship Id="rId4" Type="...footer" Target="footer2.xml"/>

第一节(封面)sectPr

<w:sectPr>
  <w:titlePage/>  <!-- 首页不同 -->
  <!-- 首页不需要页眉页脚,所以不引用,或者引用空的 -->
  <w:type w:val="nextPage"/>
</w:sectPr>

第二节(正文)sectPr

<w:sectPr>
  <w:headerReference w:type="default" r:id="rId3"/>
  <w:footerReference w:type="default" r:id="rId4"/>
  <w:pgSz w:w="12240" w:h="15840"/>
  <w:pgMar w:top="1440" w:bottom="1440" w:left="1440" w:right="1440"
           w:header="720" w:footer="720"/>
</w:sectPr>

页眉header2.xml

<w:hdr>
  <w:p>
    <w:r><w:t>我的文档标题</w:t></w:r>
  </w:p>
</w:hdr>

页脚footer2.xml

<w:ftr>
  <w:p>
    <w:jc w:val="center"/>
    <w:r>
      <w:t>第</w:t>
      <w:fldChar w:fldCharType="begin"/>
      <w:instrText>PAGE</w:instrText>
      <w:fldChar w:fldCharType="end"/>
      <w:t>页</w:t>
    </w:r>
  </w:p>
</w:ftr>

这样就实现了:封面没有页眉页脚,正文有页眉居左,页码居中在页脚。


本章小结

  • 每个页眉页脚单独XML文件存放,headerN.xml / footerN.xml
  • 在document.xml.rels中注册关系,在sectPr中引用
  • 可以设置首页不同(titlePage)和奇偶页不同(evenAndOddHeaders)
  • 页眉内容结构和正文一样,根元素是w:hdr,页脚是w:ftr
  • 每一节可以有自己的页眉页脚,不同节不同页眉需要分节
  • 不定义引用就是继承前一节(链接到前一条)

下一章我们讲解分栏布局。