【问题标题】:How to insert a new Word style into a RMarkdown file如何在 RMarkdown 文件中插入新的 Word 样式
【发布时间】:2017-09-23 14:29:33
【问题描述】:

有没有一种简单的方法可以在不使用 Pandoc 的情况下使用 Knitr 来做到这一点?我尝试将一些 HTML <DIV Class="newStyle>&nbsp</div> 添加到 .Rmd 文件中,但样式未显示在生成的 Word .docx 中。

谢谢,苏。

【问题讨论】:

  • 我已经尝试使用 RStudio、knitr 和 Pandoc 将分页符添加到 Word 2 天了。我对这一切都很陌生,但似乎有三种可能的方法,
  • 1.要使用 Pandoc 声明的能力来定义具有属性 custom-style="myStyleName"<div><span>,pandoc 会将指定的样式名称应用于包含的元素。样式名称将出现在生成的 .docx 中。如果在 reference.docx 中定义,则原样使用,如果没有,则从 body 样式创建。见pandoc.org/MANUAL.html#custom-styles-in-docx-output。但是使用 RStudio 和 knitr 不会发生这种情况。
  • 2.编写自己的过滤器。使用这个讨论作为指导,pandoc-discuss.narkive.com/BNVcQyvb/…,但不知道 Haskell,我使用mvhendersonpandoc-filter 在 Windows 上获得了一个 NodeJS 过滤器。这在 .docx 文件中插入了一些文本,if ( ... ) { return Para( [ { t: "Str" , c: "PageBreak" } ] ); } 但是以这种方式构造 RawBlock:if ( ... ) { return RawBlock( '<w:p><w:r><w:br w:type="page"/></w:r></w:p>', "openxml" ) } 不起作用。有谁知道 NodeJS 的正确语法是什么?
  • 3.使用 Pandoc 为标准降价元素创建的现有样式之一。例如,然后在 Heading 4 样式上使用 reference.docx' to redefine one of the styles to format a paragraph with Page break before`。但这不太实用,因为我可能只希望在 H4 标题之一之前分页。
  • 4.当然,有将一些文本放入文档的解决方案,例如
        
    ,并在参考文档中编写一个 vba 宏子例程,查找所有出现的文本“   ”并将其替换为 Word 分页符.我选择了不可打印的不间断空格字符串,以便在将 .Rmd 文件转换为 PDF 或 HTML 时不会看到它。

标签: ms-word styles rstudio knitr r-markdown


【解决方案1】:

我的设置:Office 365 Pro Plus、RStudio 1.0.143。

我能够同时使用 <div><span> 语法。首先,我在我的 reference.docx 文档中创建了一个新样式,其名称与我打算在 Pandoc 标记标签中使用的名称相同。小心你为风格命名——这在我使用名称“SpanAdd”时有效,但不适用于名称“Span_Add”。当您想要指定段落样式时,应使用<div> 标记——Word 中默认的“链接段落和字符”样式类型可以很好地解决这个问题。但是,<span> 标签更加挑剔,我只能让它与“字符”样式类型一起使用。我的字符样式基于“默认段落文本”。

无论如何,一旦我在参考文档中修改了新样式并保存它,我就可以在 .Rmd 文件中使用这些标签来生成标记文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-11-25
    • 2021-06-27
    • 1970-01-01
    • 2018-08-18
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多