15

我正在玩Tal 的介绍,以在现实世界的情况下以尽可能少的开销生成单词表。(请参阅那里的可重现示例 - 谢谢,Tal!)在实际应用中,表格太宽以在面向纵向的页面上打印它们,但您可能不想拆分它们。

抱歉,如果我在 pandoc 或 pander 文档中忽略了这一点,但是从 R 写入 Word .docx 文件时如何控制页面方向(纵向/横向)?

我也许应该补充一点,我开始使用 knitr+markdown,但我还不熟悉 LaTex 语法。但我在完成我的工作的同时尽可能多地收拾东西。

4

2 回答 2

17

我很确定 docx 编写器没有实现分节符,据我所知,它--reference-docx允许自定义样式而不是页面布局(但我在这里也可能错了),这是来自 pandocs 指南--reference-docx

--reference-docx=文件

使用指定的文件作为生成 docx 文件的样式参考。为获得最佳结果,参考 docx 应该是使用 pandoc 生成的 docx 文件的修改版本。参考 docx 的内容被忽略,但其样式表在新 docx 中使用。如果在命令行上未指定参考 docx,pandoc 将在用户数据目录中查找文件 reference.docx(请参阅 --data-dir)。如果这也没有找到,将使用合理的默认值。pandoc 使用以下样式:[段落] 正常、标题、作者、日期、标题 1、标题 2、标题 3、标题 4、标题 5、块引用、定义术语、定义、正文文本、表格标题、图像标题; [字符] 默认段落字体、正文字符、逐字字符、脚注参考、链接。

哪些是保存在文档/word/styles.xml组件中的样式docx。另一方面,页面布局保存在标签中的/word/document.xml组件中<w:sectPr>,但据我所知,pandoc 的 docx writer 忽略了这部分。

docx 编写器默认构建一个连续的文档,其中包含标题、段落、简单表格等元素……很像 html 输出。


选项#1(不能解决页面方向问题):

您可以通过样式定义的唯一页面布局选项是pageBreakBefore在特定样式之前添加分页符

选项 #2(看起来很优雅,但尚未经过测试):

最近添加了允许自定义脚本的自定义lua编写器,您应该能够在其中定义某些 Pandoc 块将如何写入输出文件......这意味着您可以为特定块插入定义分节符和页面布局sectPr标记到文档中。我还没有尝试过,但值得研究。在 pandoc github 上,您可以查看用于自定义 html 输出的示例 lua 脚本文件

但是,这意味着您必须安装 lua,学习该语言,如果您认为值得花时间投资,则取决于您。

Optin #3(在 Word 中单击几下就可以了):

因为您可能会花费相当多的时间来设置如何插入部分以及正确的大小、边距以及如何使表格适合这样的布局......我建议您使用 pandoc 来编写您的文档。 docx,您在 Word 中打开并手动进行布局:

  • 在横向页面上选择您想要的表格
  • Layout > Margins
    >选择Apply to: Selected text
    >选择Page Setup >选择Landscape

现在,您的桌子周围应该有一个横向的新部分。

无论如何,您可能还想做的是稍微设置表格和表格标题的样式(字体大小,...),以达到最佳效果(所有文本样式都可以在方便的地方使用 pandoc 应用--reference-docx)。

选项 #4(在您可以只使用 pdf 而不是 docx 的情况下):

据我所知,pandoc 在md -> docx(对齐,样式,...)中的表格做得很好,tex -> docx有时会遇到一些麻烦。但是,如果您的选项允许pdf输出,乳胶将是您最好的朋友。例如,您的问题就像使用一样容易解决

\usepackage{pdflscape}

并在你的桌子周围添加这个

\begin{landscape}
...
\end{landscape}

这是目前我能想到的选项。

我总是建议使用 pdf 格式的报告,因为您可以使用乳胶对其进行样式设置,并且布局将保持您想要的方式。

然而,我也知道,由于各种原因,word 文档仍然是审查许多领域手稿的主要方式......所以我很可能会选择我建议的选项 3,主要是因为它是一个懒惰和快速的解决方案,因为我通常没有很多文档,其中包含大量放置和样式笨拙的巨型桌子。

祝你好运 ;-)

于 2013-04-26T12:17:12.380 回答
4

根据 Taleb 的回答一些officer函数,我创建了一个可以像这样使用的小要点:

---
title: "Example"
author: "Dan Chaltiel"
output: 
  word_document:
    pandoc_args:
     '--lua-filter=page-break.lua'
---

I'm in portrait

\endLandscape

I'm in landscape

\endPortrait

I'm in portrait again

page-breaks.lua文件托管在这里:https ://gist.github.com/DanChaltiel/e7505e62341093cfdc489265963b6c8f

这远非完美(例如,如果没有最后一个肖像部分,它将无法工作),但有时它非常有用。

于 2019-12-30T11:04:45.713 回答