conig / revise

R package for writing revise and resubmits
Other
3 stars 2 forks source link

Merge manuscript objects #23

Closed cjvanlissa closed 1 year ago

cjvanlissa commented 1 year ago

So that revisions can be extracted from multiple documents without having to keep them in multiple objects

conig commented 1 year ago

This sounds good. I'd vote for a function name bind_manuscripts. I'm guessing that if PDF text is present in both we'd have no way to merge that content and would just toss it?

cjvanlissa commented 1 year ago

We can definitely merge the PDFs too, but I have to understand how that works first... do you have a working example with a PDF?

conig commented 1 year ago

Here's an example

man <- c("---", "format: 'pdf_document'","---",stringi::stri_rand_lipsum(30),"",
         "[text to match]{#findText}","",stringi::stri_rand_lipsum(15))

rmd <- tempfile(fileext = ".rmd")
pdf <- tempfile(fileext = ".pdf")
writeLines(text = man, con = rmd)

rmarkdown::render(input = rmd, output_file = pdf)
revise::read_manuscript(rmd, PDF = pdf)

revise::get_revision("findText")
#> [1] ">text to match\n>\n>\\begin{flushright}Pg. 4\\end{flushright}"

The manuscript object stores all text content per page. get_revision then triggers a search of this content to provide the relevant page number.

So in the example the function successfully finds the line "text to match" as being on page 4.

image

Perhaps there's no issue here as currently we don't merge the manuscripts into a single object, but rather conduct searches across multiple objects. If both have the same PDF attached then they would give consistent results.