That is strange. Another function in the same package (INBOmd::inbo_rapport) uses the same trick. I actually started by copying the post_processor() from that function. INBOmd::inbo_rapport() works both with and without BibTex. Working examples are source/inbo_rapport and source/inbo_rapport_basic from https://github.com/inbo/inbomd_examples. Note that you need some extra work after installing INBOmd to inbo_rapport() to run. See the README at https://github.com/inbo/INBOmd
I've created an issue https://github.com/rstudio/rmarkdown/issues/1138 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 2017-09-07 21:18 GMT+02:00 Duncan Murdoch <murdoch.dun...@gmail.com>: > On 07/09/2017 2:04 PM, Duncan Murdoch wrote: > >> On 07/09/2017 10:11 AM, Thierry Onkelinx wrote: >> >>> Dear Duncan, >>> >>> Thanks for chiming in. Could you explain how you set debug() on >>> post_processor()? I've tried adding debug(post_processor) to >>> rsos_article() or adding debug(post_processor) when after post_processor >>> was defined in the debugger. Neither work for me. >>> >> >> Not working for me either right now for some reason or other. What I >> was doing was manually running debug(post_processor) in the debugger >> after single stepping past its definition. >> >> What does show it is running is that at that same point I can execute >> >> post_processor <- function() stop() >> >> and it stops. >> >> The end of the console log looks like this: >> >> >> /Applications/RStudio.app/Contents/MacOS/pandoc/pandoc +RTS -K512m -RTS >> skeleton.utf8.md --to latex --from >> markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash >> --output skeleton.tex --template >> /Library/Frameworks/R.framework/Versions/3.3/Resources/ >> library/INBOmd/rmarkdown/templates/rsos_article/resources/template.tex >> --natbib --bibliography sample.bib >> Latexmk: This is Latexmk, John Collins, 19 Jan. 2017, version: 4.52c. >> Error in output_format$post_processor(yaml_front_matter, utf8_input, >> output_file, : >> unused arguments (yaml_front_matter, utf8_input, output_file, clean, >> !quiet) >> Called from: output_format$post_processor(yaml_front_matter, utf8_input, >> output_file, >> clean, !quiet) >> >> so we see pandoc being run, then Latexmk, then the post_processor call. >> It seems a little odd that Latexmk is being run. Is that something you >> are doing, or is it pandoc asking for that? If the latter, can you tell >> pandoc not to do so? >> >> > I've done some debugging in rmarkdown::render. Apparently if you need > Bibtex (as your example does), it runs Latexmk before the post-processor. > > I don't know if there's a way around this... > > Duncan Murdoch > > > >> >> >>> All supporting files are available within the package. The code below >>> should be reproducible on your machine. >>> >>> remove.packages("INBOmd") >>> devtools::install_github("inbo/INBOmd@post_processor") >>> setwd(system.file("rmarkdown/templates/rsos_article/skeleton", package = >>> "INBOmd")) >>> debug(INBOmd::rsos_article) >>> rmarkdown::render("skeleton.Rmd") >>> >> >> I'm not sure you would normally have write access in that directory, so >> it may not be typical of what you'd see in a user directory. I >> certainly see something different when I copy the skeleton.Rmd file (and >> nothing else) to my own temp directory. >> >> >> >>> The sign that post_processor() fails when the tex file still contains >>> \EndFirstPage resulting in the compilation error "Undefined control >>> sequence. l.128 \EndFirstPage" >>> >> >> That certainly indicates it isn't doing what you want, but it might be >> running and doing something else. >> >> Duncan Murdoch >> >> >>> I still get the error with the current version of the code. Running the >>> post_processor manually works. >>> >>> eval(parse( >>> text = readLines( >>> "https://raw.githubusercontent.com/inbo/INBOmd/post_ >>> processor/R/rsos_article.R" >>> )[72:92] >>> )) >>> post_processor(output_file = "skeleton.tex") >>> system("pdflatex skeleton.tex") >>> >>> Best regards, >>> >>> >>> 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 >>> >>> 2017-09-07 12:14 GMT+02:00 Duncan Murdoch <murdoch.dun...@gmail.com >>> <mailto:murdoch.dun...@gmail.com>>: >>> >>> 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/R/rsos_ >>> article.R> >>> https://github.com/inbo/INBOmd/blob/post_processor/inst/ >>> rmarkdown/templates/rsos_article/skeleton/skeleton.Rmd >>> <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@r-project.org <mailto:R-help@r-project.org> mailing list >>> -- To UNSUBSCRIBE and more, see >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> <https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> <http://www.R-project.org/posting-guide.html> >>> and provide commented, minimal, self-contained, reproducible >>> code. >>> >>> >>> >>> >> > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.