2015-08-19 24 views
0

这是我在StackOverflow上的第一个问题,请让我知道如果我做错了什么。在R内创建PDF超链接目录

我正在使用R生成大量非常大的PDF文档。我的数据大约有580,000个观测值,并分解成32个类别,每个类别包含70个20到300个问题的答案。目前我使用两个for循环(我试图避免循环,但创建这些pdf是唯一有效的方法)。第一次通过并为带有标题页的类别创建pdf,然后第二个为每个图添加一个页面,显示该问题的结果。我正在使用ggplot2 &“pdf”功能。

该脚本效果很好,创建32个pdf(每个类别一个),并带有一个自定义标题页面和该类别中所有问题的页面。我想在标题页后添加一个目录。我知道如何添加带有标签和页码的页面,但我需要链接到每个问题的页面。

我已经搜索了这个网站和谷歌,但还没有找到任何方式在R这样做。这个问题:Adding a table of contents to PDF with R plots谈论使用RPython。我也遇到过提到“hyperref”的消息来源,LaTex,Pandoc和Knitr。我知道如何在Rmarkdown文档中使用Kintr,但这不适用于我想要做的事情。我真的不知道如何与其他人合作,所以使用它们的解决方案已经过去了。

有没有办法创建一个目录,或只是超链接到R内的PDF页面,而不去其他语言?

+0

你有没有试过xtable? http://stackoverflow.com/questions/24132503/how-can-i-include-hyperlinks-in-a-table-within-an-sweave-document –

+0

我曾经来过一次,但没有尝试它。查看你的链接并检查xtable文档后,我想我知道如何在PDF文档中添加链接到网页。我仍然不确定如何引用同一PDF文档的其他页面?如果有办法做到这一点,那么xtable将运行良好。 – kyle7day

回答

1

您是否尝试过单击目录中的部分名称?默认情况下,这些似乎是超链接的,虽然没有任何色彩暗示它。

为了帮助你了解可能发生的事情,添加/更改YAML头添加以下内容:

output: 
    pdf_document: 
    keep_tex: true 
    toc: true 
    toc_depth: 3 

这将让中间.tex文件保存。如果您在编织后打开它,则应该已经在其中看到对hyperref的引用。

然后我发现我的表的内容被定义为:

{ 
\hypersetup{linkcolor=black} 
\setcounter{tocdepth}{3} 
\tableofcontents 
} 

其产生的超链接TOC,但与“黑”的超链接!

如果你想改变颜色并看到它们出现,你可以在RSudio中打开tex文件,只需将“黑色”改为“蓝色”,让RStudio运行“编译PDF”,你应该看到它们显示向上。

如果你希望你的页码超链接,而不是描述,添加以下到您的YAML:

header-includes: 
    - \hypersetup{linktocpage} 

分享&享受!

0

我只记得我离开了这个开放,并认为我会回去,并发布我如何最终解决它,以及sorta。我使用R Markdownfile来创建一个组合的PDF,其中包含所有部分及其后续问题的不同级别,而不是R脚本。我可以通过链接的可点击目录为每个部分创建pdf,包括其所有问题(页面)和标题页的不同标题级别。

关键是pandoc.header,它允许我创建标题,它显示在TOC中。我认为for循环和为每个页面创建的ggplot都是相关的。这里是.rmd的概述:

title: 
author: 
output: 
    pdf_document: 
     toc: true 

```{r results = "asis", message=FALSE, warning=FALSE, echo=FALSE, fig.height = 11, fig.width = 8} 

for(i in 1:length(categories){ 

pandoc.header(paste("Category ",category_num, ": ", category discription), level = 1) 

category title page 

for(i in 1:numberofquestions){ 

pandoc.header(paste("Question ",question_num, ": ", subtitle1), level = 2) 

print(ggplot()) 

}} 

``` 

唯一不方便的是,每个页面都要有一个头被挂,我真的不喜欢有一个标题页,但它看起来像我可以用dsz posted手动编辑。