5

I'm writing a report using multiple R Markdown files, and to facilitate combining them I decided to use the bookdown package. I face a problem with inserting a logo as header using fancyhdr LaTeX package, that worked fine in a regular .Rmd file.

index.Rmd file:

---
documentclass: book
classoption: openany
site: bookdown::bookdown_site
subparagraph: true
output:
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
    toc_depth: 4
    latex_engine: xelatex # to receive Arial as font --> install.packages("xelatex") works for R users
link-citations: yes
fontsize: 12pt
linestretch: 1.25
---

The preamble.tex is:

\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{titlesec}
\usepackage{fancyhdr}

\usepackage{fontspec}
\setmainfont{Arial}

\pagestyle{fancy}\setlength\headheight{100pt}
\fancyhead[L]{\includegraphics[width=456px]{INS_logo.png}}
\fancyhead[R]{\includegraphics[width=4.1cm]{shurp-2018-logo-blue-transparent.png}}
\renewcommand{\headrulewidth}{0pt}
\rfoot{Seite \thepage \hspace{1pt} von \pageref{LastPage}}

\geometry{a4paper, total={170mm,257mm}, left=20mm, top=10mm, }

\titleformat{\chapter}
  {\normalfont\LARGE\bfseries}{\thechapter}{1em}{}
\titlespacing*{\chapter}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

Everything works fine except that the necessary logos don't appear in the header. Using the same code in a plain pdf_document format works fine.

I guess it has something to do with the book-option - does anyone know more here? I consulted https://bookdown.org/yihui/bookdown/, their github-repo as well as StackOverflow and the documentation on fancyhdr.

my sessioninfo (R Studio 1.2.1070):

R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_3.5.1  backports_1.1.2 bookdown_0.7    rprojroot_1.3-2 htmltools_0.3.6 tools_3.5.1     yaml_2.2.0     
 [8] Rcpp_0.12.19.3  rmarkdown_1.10  knitr_1.20      xfun_0.4        digest_0.6.18   evaluate_0.12 

Thank you for any suggestions.

Konrad Rudolph
  • 530,221
  • 131
  • 937
  • 1,214
tobin_lab
  • 185
  • 1
  • 14
  • 1
    You are specifying the image dimensions in "px" which can only be used by pdfTeX and LauTeX as explained [here](https://tex.stackexchange.com/questions/41370/what-are-the-possible-dimensions-sizes-units-latex-understands). I don't think this is the main cause of your problem though. – Michael Harper Nov 05 '18 at 15:29

2 Answers2

3

Are you sure that the images are not being pushed off the top off the page? Without your full directory, I am not able to reproduce your problem but it looks like you haven't specified a large enough top value within the geometry argument. Looking at the documentation to the geometry LaTeX function, you can see that this specifies the distance between the top of the body and the edge of the paper, leaving no space for your header.

enter image description here

Here is my reproducible example. It generates a dummy plot plot.png which is used for a logo placeholder

index.Rmd:

---
documentclass: book
classoption: openany
fontsize: 12pt
linestretch: 1.25
link-citations: yes
output:
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
    latex_engine: xelatex
    toc_depth: 4
subparagraph: yes
---

```{r setup, include=FALSE}
# Create an image to attach
png(filename = "logo.png", width = 200, height = 150, units = "px")
plot(cars)
box('figure', col = 'red')
dev.off()
```

# Title 1

Text

\newpage

## Section

Text

\newpage

Within the same directory is the preamble.tex. Note the adjusted geometry argument top=50mm:

\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{fontspec}
\setmainfont{Arial}

\pagestyle{fancy}\setlength\headheight{100pt}
\fancyhead[L]{\includegraphics[width=4cm]{logo.png}}
\fancyhead[R]{\includegraphics[width=4.1cm]{logo.png}}
\renewcommand{\headrulewidth}{0pt}
\rfoot{Seite \thepage \hspace{1pt} von \pageref{LastPage}}

\geometry{a4paper, total={170mm,257mm}, left=20mm, top=50mm}

\titleformat{\chapter}
  {\normalfont\LARGE\bfseries}{\thechapter}{1em}{}
\titlespacing*{\chapter}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

enter image description here

Michael Harper
  • 14,721
  • 2
  • 60
  • 84
  • I could rebuild your reprex - but as soon as I insert site: bookdown::bookdown_site (for including all chapters) all things defined by **fancyhdr** disappear. What means "without my full directory"? I'm happy to provide more information. – tobin_lab Nov 05 '18 at 17:46
  • 1
    I just tried adding `site: bookdown::bookdown_site` and the header displays on pages 3 & 4, but not 1 & 2. Is this the same behaviour you are experiencing? Changing to `documentclass: article` makes it show on all the pages. – Michael Harper Nov 05 '18 at 17:53
  • yes! but then, when I add a second file.Rmd containing only #titletest (to symbolize a chapter) the **fancyhdr** header/footer-specs disappear. Edit: changing to `documentclass: article` worked in the reprex, but not on the original file. – tobin_lab Nov 05 '18 at 17:58
  • Have you adjusted the line `\geometry{a4paper, total={170mm,257mm}, left=20mm, top=50mm}`? That is the only way I can reproduce your error when I left it as you originally had. – Michael Harper Nov 05 '18 at 18:43
  • Yes - I have adjusted everything - see my edit above. – tobin_lab Nov 06 '18 at 06:48
1

Edit: I seem to have had some kind of bug in the system despite reloading everything. I followed the suggestions by Michael Harper but opened the code in a totally new project/folder, then I set the documentclass: article inserted a title page manually. What is left now: Getting the headers to work in the tableofcontents and removing the page number (footer, centered).

Index.Rmd:

---
documentclass: article
classoption: openany
site: bookdown::bookdown_site
fontsize: 12pt
linestretch: 1.25
link-citations: yes
output:
  bookdown::pdf_book:
    includes:
      in_header: preamble.tex
      before_body: before_body.tex
    latex_engine: xelatex
    toc: yes
    toc_depth: 4
subparagraph: yes
---

```{r setup, include=FALSE}
# Create an image to attach
png(filename = "logo.png", width = 200, height = 150, units = "px")
plot(cars)
box('figure', col = 'red')
dev.off()
```

preamble.tex:

% loading necessary LateX-packages
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{titlesec}
\usepackage{fancyhdr}
\usepackage{fontspec}
\setmainfont{Arial}

% include a fancy header
\pagestyle{fancy}\setlength\headheight{100pt}
\fancyhead[L]{\includegraphics[width=5cm]{logo.png}}
\fancyhead[R]{\includegraphics[width=4.1cm]{logo.png}}
\renewcommand{\headrulewidth}{0pt}
\rfoot{Seite \thepage \hspace{1pt} von \pageref{LastPage}}

% set page geometry
\geometry{a4paper, total={170mm,257mm}, left=20mm, top=40mm}

% make the word "Chapter" disappear - only display the chapters name
\titleformat{\chapter}
{\normalfont\LARGE\bfseries}{\thechapter}{1em}{}
\titlespacing*{\chapter}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

% Following below
% turns maketitle off, then you can define your own titlepage in before_body.tex
\let\oldmaketitle\maketitle 
\AtBeginDocument{\let\maketitle\relax}

before_body.tex:

% titlepage
\thispagestyle{empty}
\begin{center}
{\Huge A BOOK}
\linebreak
\includegraphics{cover.png}
\linebreak
{\huge by Me}
\end{center}

\let\maketitle\oldmaketitle
\maketitle
tobin_lab
  • 185
  • 1
  • 14