2017-04-24 23 views
11

我正在用Rmarkdown的Bookdown寫我的論文(我最終將它導出爲PDF格式)。爲了交出我的論文,我需要在我論文的第一頁之前包括一些手寫簽名的掃描文檔。插入一個pdf之前的bookdown前頁面

在合併不同的Rmd文件時,Bookdown是驚人的,但我還沒有設法在標題頁之前包含PDF文檔。在preamble.tex

bookdown::pdf_book: 
    includes: 
    in_header: preamble.tex 
    before_body: beforebody.tex 

有了:

我已經試過這

\usepackage{pdfpages} 

和beforebody.tex:

\includepdf[pages={5}, scale=1]{OfficialFrontpages.pdf} 
\newpage 

但是,那麼它首先創建Bookdown titlepage,並且只在目錄之前插入這些頁面。有什麼辦法可以在最終的PDF文檔的第一頁之前強制包含這個文檔?

包容這些命令作爲第一.Rmd文件的線條也不起作用:

![Caption](OfficialFrontpages.pdf) 
\raggedright 
\clearpage 

回答

2

選項1: 你可以嘗試這樣的事情

includes: 
    after_body:Title_page.tex 

選項2: 由於我對乳膠更舒適,因此我會將主要論文和官方網頁生成爲兩個單獨的pdf文檔,即th使用乳膠包pdfpages結合這兩個。

喜歡的東西

\usepackage{pdfpages} 

\begin{document} 

\includepdf[pages={5}, scale=1]{OfficialFrontpages.pdf} 
\newpage 
\includepdf[pages={-}, scale=1]{MyThesis.pdf} 

\end{document} 

我最後用pdflatex編譯。

讓我知道這是否有用。

2

一個策略是編輯乳膠模板,以便您致電您的\includepdf之前評估\maketitle。看起來好像是使用常規的rmarkdown latex template。讓我們複製並編輯它。有幾個替代的方式來做到這一點:

  1. 你可以刪除這部分共有:

    $if(title)$ 
    \maketitle 
    $endif$ 
    

    然後你RMD文件中寫:

    \includepdf[pages={5}, scale=1]{OfficialFrontpages.pdf} 
    \maketitle 
    
  2. 或者你可以移動該部分,即照顧before_body

    $for(include-before)$ 
    $include-before$ 
    $endfor$ 
    

    之前\maketitle,並使用您的當前策略與before_body。

無論哪種方式,你需要告訴knitr使用您的自定義模板:

bookdown::pdf_book: 
    template: mytemplate.tex 

,在使用時,你可能需要調整一些其他的參數,因爲knitr並不表現完全一樣使用自定義模板(例如,您可能需要自己重新定義邊距大小)。

1

如果您將外部PDF作爲您的Bookdown工作流程的一部分附加,則會爲其構建過程(尤其是掃描文檔)增加不必要的開銷。相反,只有在處理產品給管理員時才需要合併。

一個解決方案是創建一個單獨的TeX並通過LaTeX包pdfpages合併文檔。這已經發布在這裏,但對我來說,似乎有點過分的兩個PDF。我會簡單地去:

pdftk OfficialFrontpages.pdf MyThesis.pdf cat output final.pdf 

根據文件(數字和這樣)的大小,你也可能會受益於增加compress作爲最後一個參數。

pdfMerge <- function(doc1, doc2) 
    system2("pdftk", paste(doc1, doc2, "cat output final.pdf")) 

pdftk只是衆多跨平臺的實用工具中的一種(在Windows,Mac:

當然,如果你不想離開R控制檯的舒適性,從沒有定義功能可防止,Linux)合併PDF文件。另一種方法是qpdf