[R] post_processor in rmarkdown not working

Duncan Murdoch
Thu, 07 Sep 2017 10:14:22 -0000

On 06/09/2017 5:41 AM, Thierry Onkelinx wrote:
> Dear all,
>
> I'm trying to write a post_processor() for a custom rmarkdown format.
The
> goal of the post_processor() is to modify the latex file before it is
> compiled. For some reason the post_processor() is not run. The
> post_processor() does work when I run it manually on the tex file.
>
> Any suggestions on what I'm doing wrong? Below is the relevant snippet
of
> the code. The full code is available at
> https://github.com/inbo/INBOmd/blob/post_processor/R/rsos_article.R
>
https://github.com/inbo/INBOmd/blob/post_processor/inst/rmarkdown/templates/rsos_article/skeleton/skeleton.Rmd
> is an Rmd is a MWE that fails compile because the post_processor() is not
> run.
>

I installed it and tried running it using

debug(INBOmd::rsos_article)
rmarkdown::render("skeleton.Rmd")

then after post_processor was defined, I set it to debug as well, and
could see that the post_processor was being run.

I didn't get useful output, because the LaTeXing failed (I don't have
the rsos.cls), but perhaps you've already fixed this problem, or perhaps
it is intermittent?

Duncan Murdoch

> Best regards,
>
> Thierry
>
>    post_processor <- function(
>      metadata, input_file, output_file, clean, verbose
>    ) {
>      text <- readLines(output_file, warn = FALSE)
>
>      # set correct text in fmtext environment
>      end_first_page <- grep("\\\\EndFirstPage", text) #nolint
>      if (length(end_first_page) == 1) {
>        maketitle <- grep("\\\\maketitle", text) #nolint
>        text <- c(
>          text[1:(maketitle - 1)],
>          "\\begin{fmtext}",
>          text[(maketitle + 1):(end_first_page - 1)],
>          "\\end{fmtext}",
>          "\\maketitle",
>          text[(end_first_page + 1):length(text)]
>        )
>        writeLines(enc2utf8(text), output_file, useBytes = TRUE)
>      }
>      output_file
>    }
>
>    output_format(
>      knitr = knitr_options(
>        opts_knit = list(
>          width = 60,
>          concordance = TRUE
>        ),
>        opts_chunk = opts_chunk,
>        knit_hooks = knit_hooks
>      ),
>      pandoc = pandoc_options(
>        to = "latex",
>        latex_engine = "xelatex",
>        args = args,
>        keep_tex = keep_tex
>      ),
>      post_processor = post_processor,
>      clean_supporting = !keep_tex
>    )
>
>
>
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature and
> Forest
> team Biometrie & Kwaliteitszorg / team Biometrics & Quality
Assurance
> Kliniekstraat 25
> 1070 Anderlecht
> Belgium
>
> To call in the statistician after the experiment is done may be no more
> than asking him to perform a post-mortem examination: he may be able to say
> what the experiment died of. ~ Sir Ronald Aylmer Fisher
> The plural of anecdote is not data. ~ Roger Brinner
> The combination of some data and an aching desire for an answer does not
> ensure that a reasonable answer can be extracted from a given body of data.
> ~ John Tukey
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide