如何在Word中从RMarkdown文档正确编号标题

10

我正在创建一个 RMarkdown 文档,并希望用 RStudio 导出为 MS Word。

我想要一个目录和编号的标题。以下是我的示例 markdown 文档:

---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Header 1

## Header 2

## Header 2

### Header 3
这将生成以下的 Word 文档:

可能还有改进的空间

这是一个不错的开端。参照 这个教程,我在 Word 中编辑了输出文档的标题样式,使它们带有编号。
我也更改了目录标题的样式,以使其基于普通文本而非另一个标题,否则目录标题也会被编号。
我将修改后的文档保存在模板文件夹中,并将其作为 markdown 头部的引用添加到其中。
---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
    reference_docx: "../templates/word-styles-reference-01.docx"
---

这是输出内容:

Better

现在,我想在目录之后插入分页符,所以我按照这个教程更改了我的标题6,使其变为白色、非常小,基于正常样式,并在之后添加了一个分页符。

新的Markdown文件看起来像这样:

---
title: "Test"
author: "Ben"
date: "`r format(Sys.time(), '%d/%m/%Y')`"
output:
  word_document:
    toc: yes
    reference_docx: "../templates/word-styles-reference-01.docx"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

###### Page break after table of contents

# Header 1

## Header 2

## Header 2

### Header 3

这是输出结果:

丑陋

现在我有了分页符,但标题 6 是由 Word 编号的,因此我的第一个标题编号为2。

最后,问题要么是:

  • 一个 Word 问题:如何修改标题 6 的样式,使其不带编号?
  • 一个 R 问题:如何添加分页符而不使用 Word 标题?

2
也许尝试修改与R Markdown共享的Word中的不同样式。如果您在R markdown中没有使用块引用,这可能与MS Word样式中的“quote”有关? - Frost_Maggot
2
如果我不需要引用(目前我不需要),那确实可以工作。 - Ben
3个回答

2

继续探讨 Blockquote 后,我找到了以下解决方案:

R Markdown

添加一个带有空格的块引用

>  

Word 模板

将块引用格式化为 Word 中的 Block Text 样式。

编辑 Block Text 样式

  • 小字体(我使用大小 3)
  • 更改段落设置
    • 前/后无间距
    • 勾选“在前面插入分页符”

2
有几个需要注意的地方:首先,需要分页并且标题不编号(参见步骤3和4);其次,您可能需要调整标题的大小(参见附加步骤),也可能需要指示MS Word最后的内容(参见步骤6)。无论如何,您应该正确管理Word模板以制作带有标题6和分页的页面,并且我猜您错过了一步(我从MS Word的法语界面翻译,英文版可能存在一些差异):
1)首先,在MS Word中打开您的“reference_docx”(对于您来说是“../templates/word-styles-reference-01.docx”)。出于安全考虑,建议保存一份副本。
2)通过右键单击“样式选项卡”中的标题6来定义标题6的样式,然后选择“修改”。
3)在专用窗口中指定您的“标题6样式”(第一个位置为“名称:标题6”),单击“格式”按钮==>然后选择“编号”(或“数字”)==>然后选择“无”==>然后验证您的选择。
4)在同一专用窗口中修改“标题6”的样式,再次单击“格式”==>然后单击“段落”按钮==>然后单击名为“链接”的第二个选项卡(或“链接”)==>单击“前面的分页”==>然后验证。
5)验证您的修改并保存您的参考Word文档。
在此时,您可以将rmardkown编织到Word输出中。在您的Rmarkdown文档中,您应该用“######[空格]”制作您的第一个注释页。
请注意,如果您正确管理了word_template,则可以访问以下可能性:具有无编号标题的分页,例如:“###### NOTES^[Page left empty.]”,如果您的分页是“notes-pages”而不是分页,则更好。如果您的分页仅为单个“note-page”,则无法为标题定义1号字体大小。
附加步骤:如果您只想要一个没有标题的分页,则应为标题6定义1号字体大小。在“修改标题6”的第一个屏幕中指示此内容(在右键单击标题6然后单击“修改”之后的屏幕)。如果您想要一个名为“Notes”的注释页,请勿为分页定义1号字体大小。
如果“标题样式6”不能用于制作无编号分页,请执行最后一步(祝您好运)。

5) 有时需要进入“段落”选项卡中的列表工具,并单击带有“1 / a / i”列表的符号(定义“多级列表”用)==> 然后单击“定义多级列表” ==>

  • 使用此工具精确定义每个标题样式,单击左侧的每个标题编号(由于您正在使用rmarkdown,因此只有6个标题选择),然后单击“加号”(或“更多”)==> 然后在“多级列表”面板右侧精确说明此标题的要求(通常您想要重新开始每个级别的列表,并且页面断点“标题6”可能需要解决此问题,您可能还想在列表每一步中对标题进行居中或缩进)。

恭喜你,你可以暂时不用微软的Word了(除非你的标题是蓝色的,你需要通过单击每个样式的“修改”来使标题变为黑色,大多数标题应该具有相同的字体样式等)。微软的折磨太精心了...


1
正如评论中Frost_Maggot所建议的那样,
可以尝试修改Word中与R Markdown共享的不同样式。如果您在R markdown中没有使用块引用,则可能涉及MS Word样式中的引用?
这对我确实起作用,因为我没有在我的文档中使用quote样式。

你如何使用“空”的块引用?当我尝试时,它甚至不会被渲染。 - Joanne Demmler
它不是空的,我使用“分页符”作为引用文本,以便在源文件中阅读。 - Ben
我刚刚使用> 来处理它,这在Word中显示为“块文本”。我将模板中的“块文本”更改为大小3,格式>段落>“分页符前”。 - Joanne Demmler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接