https://github.com/eeholmes/targets-bookdown
sandbox attempt at combining bookdown and targets
https://github.com/eeholmes/targets-bookdown
bookdown bookdown-book rmarkdown targets
Last synced: 6 months ago
JSON representation
sandbox attempt at combining bookdown and targets
- Host: GitHub
- URL: https://github.com/eeholmes/targets-bookdown
- Owner: eeholmes
- License: cc0-1.0
- Created: 2022-02-19T15:20:50.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-02-22T01:06:14.000Z (over 4 years ago)
- Last Synced: 2025-04-11T20:34:05.741Z (over 1 year ago)
- Topics: bookdown, bookdown-book, rmarkdown, targets
- Language: HTML
- Homepage: https://eeholmes.github.io/targets-bookdown
- Size: 372 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Targets + Bookdown
I originally used the approach of https://github.com/robitalec/targets-parameterized-bookdown but with that approach **equations will not work**. This renders the chapters to markdown and equations (unless very simple) won't work. But a fairly simple tweak will allow it to work. Basically use `knitr::knit()` instead of `rmarkdown::render()` to create the rendered R Markdown files.
**update** This doesn't work as it breaks all the figure legends from {bookdown}. It replaces images with `
` html tags and that loses all the info that {bookdown} needs to make legends. I tried `rmarkdown::render()` with some {bookdown} output formats but couldn't figure out a what to get both the figure legends and refs plus the equations.
This gives an html fragment that can be included but lose all the heading (chapter, section) info.
```
rmarkdown::render("chap2.Rmd", output_format = bookdown::html_fragment2(self_contained = FALSE))
```
This is an attempt to use {targets} with {bookdown} to track the status of chapter and not re-render chapters each time the book needs to be rebuilt. At the book level, the dependencies are super simple, just checks if the chapter Rmd has changed. But for a specific chapter, you can have a separate {targets} pipeline that might be much more complex. {targets} [projects](https://books.ropensci.org/targets/projects.html) is probably a better way to go in that situation.
*Why did I do this?* I have many big bookdown projects and re-building is always a bit of torture. The bookdown caching feature is quite buggy and crashes my R session all the time. Hopefully this works better.
## To run the book
* Install the {targets}, {tarchetypes} and {bookdown} packages
* Type `tar_make()` at the command line.
* Look in the `_book` folder for the `index.html` file and open that.
## To add chapters
* The chapters are in the `chapters` folder. Add an Rmd there.
* Open the `_targets.R` file and add something like `target_factory(chap2)` but replace `chap2` with your file name.
* `chapters/chap3` shows and example where the chapter uses targets markdown to create a chapter specific pipeline. To run, set `chapters/chap3` as the working directory, open `chap3.Rmd` and knit. Then
## Explanations
* `_targets.R` is setting up the targets objects so {targets} can keep track of when objects need to be updated (because a dependency changed)
* `R/chapterfactory.R` is a file I wrote to create the chapter dependencies and objects. Basically it just renders a chapter Rmd and put the rendered version (md) into the folder `rendered-chapters` folder.
* Use `tar_visnetworks()` to visualize the network and status.
## Re-use statement
Please re-use however you want. No attribution needed.