2015-09-23 2 views
8

Я исследовал и нашел, как создать водяной знак в документе rmarkdown.Watermark in rmarkdown

Он отлично работает на основном тексте, но когда у вас есть сюжетная тяжелая страница, он скрывается за сюжетом.

Очевидно, что это облегчает для кого-то возможность прокручивать фигуры и использовать их вне PDF.

Ниже приведен код, который четко показывает проблему.

--- 
title: "Testing Watermark" 
author: "John" 
date: "September 18, 2015" 
header-includes: 
    - \usepackage{draftwatermark} 
output: 
    pdf_document 
--- 

This is some basic text. 
Note the watermark on this page, and the hidden watermark on the next page. 

\newpage 

\SetWatermarkText{DRAFT} 

```{r echo=FALSE, warning=FALSE, message=FALSE, fig.height=7} 
library(ggplot2) 

ggplot(mtcars) + 
    geom_point(aes(mtcars$mpg, mtcars$cyl)) + 
    facet_wrap(~carb, ncol=1) + 
    theme_bw() 
``` 

Если кто-то знает об исправлении для этого, я был бы благодарен.

Либо сделав прозрачный фон ggplot (который я попробовал), либо добавив водяной знак на передний план и сделав его прозрачным, будет в порядке, насколько я могу судить.

+0

См. Пакет cowplot. – zx8754

+0

Если вам нужны вещи, отпечатанные как ваши собственные, вы можете добавить текст авторского права на сами оскорбительные сюжеты, что защитит вас от экрана. –

+0

[cowplot] (https://cran.r-project.org/web/packages/cowplot/index.html) –

ответ

6

Попробуйте использовать

header-includes: 
    - \usepackage{eso-pic,graphicx,transparent} 

, а затем на первой странице документа (в LaTeX части), добавьте

\AddToShipoutPictureFG{ 
    \AtPageCenter{% or \AtTextCenter 
    \makebox[0pt]{\rotatebox[origin=c]{45}{% 
     \scalebox{5}{\texttransparent{0.3}{DRAFT}}% 
    }} 
    } 
} 

Это должно добавить повернутый черновик (полупрозрачный) в F руда G круглый (сверху) страницы.

+0

Это потрясающе. Спасибо! Только один вопрос. Я упростил этот пример, но, как правило, я использую 'in_header: header.tex' для хранения моих включений и функций tex. В настоящее время я просто '\ blandscape' и' \ elandscape' запускает и останавливает пейзаж. Я попытался добавить свой код в свой 'header.tex' как новую функцию под названием' \ markasdraft', и он работает, но он работает только для одной страницы. Любая идея, как сделать эту работу как функцию, которую я мог бы назвать одной строкой? Вставка моего header.tex в следующий комментарий. –

+0

\ usepackage {lscape} \ usepackage {ESO-ПОС, GraphicX, прозрачный} \ newcommand {\ blandscape} { \ начинают {пейзаж} \ PAGEBREAK [4] \ Global \ pdfpageattr \ expandafter {\ поле \ pdfpageattr/Rotate 90}} \ newcommand {\ elandscape} { \ end {landscape} \ pagebreak [4] \ global \ pdfpageatt \ expandafter {\ the \ pdfpageattr/Rotate 0}} \ newcommand {\ markasdraft} { AddToShipoutPictureFG { \ AtPageCenter {% или \ AtTextCenter \ makebox [0pt] {\ rotatebox [происхождения = с] {45} {% \ scalebox {5} {\ texttransparent {0,3} {ПРОЕКТ}}% }} } } } –

+0

@JohnTarr: Кажется, у вас отсутствует '' \ ''. При вызове '\ markasdraft' он должен активировать ПРОЕКТ * с этой точки вперед *. В противном случае, если вы хотите его только для одной страницы, тогда вы должны использовать '\ AddToShipoutPictureFG *' (звездная версия). – Werner