I encourage someone to fork this repository and make it work with Quarto! :)
If you use this template to write your thesis, please cite it! :smiling_face_with_three_hearts: (and/or click 'Sponsor' and buy me a coffee... :wink: )
@misc{lyngsOxforddown2019,
author = {Lyngs, Ulrik},
title = {oxforddown: An Oxford University Thesis Template for R Markdown},
year = {2019},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ulyngs/oxforddown}},
doi = {10.5281/zenodo.3484681},
}
A template for writing an Oxford University thesis in R Markdown. The template uses the bookdown R package together with the OxThesis LaTeX template, plus lots of inspiration from thesisdown.
Examples of theses written with oxforddown
(see also Google Scholar):
NOTE: If you've used this template to write your thesis, drop me a line at ulrik.lyngs\@cs.ox.ac.uk and I'll add a link showcasing it!
The R packages rmarkdown
, bookdown
, tidyverse
, kableExtra
, and here
a LaTeX installation
Option 1: Use TinyTeX (a minimal LaTeX installation intended for use with R Markdown)
remotes::install_github('yihui/tinytex')
tinytex::install_tinytex()
oxforddown
(diskspace taken up by TinyTex with the required packages installed is about 280 Mb)missing_packages <- c(
"appendix", "babel-english", "babel-greek", "babel-latin",
"biber", "biblatex", "caption", "cbfonts-fd", "colortbl", "csquotes",
"enumitem", "environ", "eso-pic", "fancyhdr", "greek-fontenc",
"grfext", "hyphen-greek", "hyphen-latin", "lineno", "logreq",
"makecell", "microtype", "minitoc", "multirow", "notoccite",
"oberdiek", "pdflscape", "pdfpages", "quotchap", "soul", "tabu",
"threeparttable", "threeparttablex", "titlesec", "tocbibind",
"trimspaces", "ulem", "units", "utopia", "varwidth", "wrapfig",
"fvextra", "xurl"
)
tinytex::tlmgr_install(missing_packages)
Option 2: Use an ordinary LaTeX distribution
If on Mac
xcode-select --install
Read the 'How to use' chapter to understand the structure of oxforddown
and how to do the basic things like building your thesis.
Note: bibliography files cannot have underscores in their names!
For how to use R Markdown syntax in general and in oxforddown
in particular, read the dedicated chapters on this (R Markdown basics, Citations, cross-references, and collaboration, and Tables).
See also the general, official R Markdown resources R Markdown: The Definitive Guide and the R Markdown Cookbook.
I am in the process of updating the tutorial videos to v3 - I've noted below which have yet to be updated, but are still informative, and struck out those that no longer apply:
.Rmd files you don't want included in the body text must be given file names that begin with an underscore (e.g. front-and-back-matter/_abstract.Rmd and front-and-back-matter/_acknowledgements.Rmd). (Alternatively, specify manually in _bookdown.yml which files should be merged into the body text.)
thesis_formats <- "pdf";
to the format(s) you want (options are "pdf", "bs4", "gitbook", and "word")thesis_formats <- c("pdf", "bs4", "word")
knit: (function(input, ...) {
thesis_formats <- "pdf";
...
When you build the entire thesis to PDF, Latex generates a whole bunch of auxillary files - these are automatically removed after the build process end by the custom knit function that is used when you knit index.Rmd.
To change how this removal is done, edit scripts_and_filters/knit-functions.R.
The line file.remove(list.files(pattern = "*\\.(log|mtc\\d*|maf|aux|bcf|lof|lot|out|toc)$"))
within if ("pdf" %in% output_format){
is the one that removes files after PDF output is generated.
knit: (function(input, ...) {
thesis_formats <- "bs4";
...
downlit
and bslib
R packages (install them with install.packages
)oxforddown
's knitting function.knit: (function(input, ...) {
thesis_formats <- "gitbook";
...
oxforddown
's knitting function.knit: (function(input, ...) {
thesis_formats <- "word";
...
officer
package.To knit an individual chapter without compiling the entire thesis:
bookdown::word_document2
for a word document you might want to upload to Google Docs for feedback from collaborators)knit
button (the output file is then saved in the root folder)As shown in the sample chapters' YAML headers, to output a single chapter to PDF, use e.g.:
output:
bookdown::pdf_document2:
template: templates/brief_template.tex
citation_package: biblatex
documentclass: book
bibliography: references.bib
The file templates/brief_template.tex formats the chapter in the OxThesis style but without including the front matter (table of contents, abstract, etc).
NOTE: The bibliography path in your individual chapters' YAML headers needs to be identical to the one in index.Rmd - otherwise your individual chapters' bibliography path may override the path in index.Rmd and cause trouble when you knit the entire thesis.
don't use underscores (_) in your YAML front matter or code chunk labels! (underscores have special meaning in LaTeX, so therefore you are likely to get an error, cf. https://yihui.org/en/2018/03/space-pain/)
bibliography: bib_final.bib
bibliography: bib-final.bib
{r my_plot}
{r my-plot}
Enjoy!