1

I have the following rmd script. I've spent a few days trying to get this to work but I am failing miserably. Basically I need help with three things. I am happy to post three separate questions if needed.

  • The multicolumn options/code are completely ignored. The corporatetable.docx is in landscape and has a typical corporate style. I need to have a full width landscape -> two column landscape -> full width landscape. If I could get the two column landscape setup to work, the remaining style would be inherited by corporatetable.docx. If I could get help with only one - I would need this.

  • When I run the rmd it generates a word file but none of the corporate styles are in there. It just uses my word's default colors etc. The difference is very clear - no landscape, single column and blue instead of red. How do I correctly pass the officedown::rdocx_document: to reference my word file because it's clearly not picking it up and no warning or error is generated?

  • If you see in the second chunk I am using flextable to show two pictures (which are passed through params) in the word report and align them with some information. myft works but it prints the (temporary/volatile) path instead of showing the pictures in the report. For reference if I use knitr::include_graphics(c(params$x1,params$x2)) it works fine.

I'm really stuck on these. Any help is welcome.

---
title: "Title"
subtitle: 
params:
  x1: x1
  x1_name: x1_name
  x1_email :  x1_email
  x2: x2
  x2_name: x2_name
  x2_email :  x2_name
output: 
   officedown::rdocx_document:
    reference_docx: corporatetemplate.docx
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(officedown)
library(officer)
library(flextable)
knitr::opts_chunk$set(out.width = '100%', dpi=300)
```
<!---BLOCK_MULTICOL_START--->

This text is on column 1. Please work

```{r somecodechunk, echo=FALSE, out.width="75px", include=TRUE, strip.white=TRUE}
library(flextable)
# this works but prefer to use flextable
# if(all(!is.null(params))) {
#   knitr::include_graphics(c(params$x1,params$x2))} else {
#   }

myft <- data.frame(
  "pic1" = rep("",3),
  "details1" = c(params$x1_name,"+X XXX XXX X",params$x1_email),
  "pic2" = rep("",3),
  "details2" = c(params$x2_name,"+X XXX XXX X",params$x2_email)
)
myft <- flextable(myft)
myft <-  merge_at(myft, i = 1:3, j = 1 )
myft <-  merge_at(myft, i = 1:3, j = 3 )
myft <-  compose(myft,i = 1, j = 1, value = as_paragraph(as_image(params$x1), part = "body")) 
myft <-  compose(myft,i = 1, j = 3, value = as_paragraph(as_image(params$x2), part = "body")) 
autofit(myft)
#Ok this does not work because the pics are not shown 
```
`r run_columnbreak()`

This text is on column 2. Please work
This text is on column 2. Please work
`r run_linebreak()`

<!---BLOCK_MULTICOL_STOP{widths: [4,4], space: 0.2, sep: true}--->
 
\pagebreak

Back to full width with some text

\pagebreak
     
J. Doe.
  • 1,255
  • 1
  • 12
  • 25

0 Answers0