-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakerender.R
More file actions
136 lines (105 loc) · 4.82 KB
/
Copy pathmakerender.R
File metadata and controls
136 lines (105 loc) · 4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# ------------------------------------------------------------------------
# makerender.R Version 1.2.1 - 25. Feb. 2020
# ============------------------------------------------------------------
#
# (C) by N. Markgraf & M. Gehrke in 2019-2020
#
# Kleines R-Skript zum erstellen von Dozenten- / Studierenden- und
# Lösungsskript aus einer R markdown Datei ohne dass mehrfach geknitert
# werden muss.
#
# Idee: Matthias Gehrke
#
# ------------------------------------------------------------------------
# ------------------------------------------------------------------------
# Setup für Python mit reticulate
# ------------------------------------------------------------------------
#library(reticulate)
## Hier muss der Link zum Python stehen!
reticulate::use_python("/usr/local/bin/python3", required = TRUE)
# ------------------------------------------------------------------------
# Aufruf für ein Rmarkdown als R Skript:
# Rscript --vanilla makerender.R Wissenschaftliche-Methodik
# ------------------------------------------------------------------------
arguments <- commandArgs(trailingOnly = TRUE)
if (length(arguments) > 0) {
filename <- arguments[1]
if (length(arguments) > 1) {
skiptsOnly <- arguments[2:length(arguments)]
}
}
# ------------------------------------------------------------------------
# Default Dateiname (ohne ".Rmd") der übersetzt werden soll:
# ------------------------------------------------------------------------
if (!exists("filename")) {
filename <- "FUMS"
}
cat(paste0("makerender ", filename,".Rmd\n"))
# ------------------------------------------------------------------------
overwrite_old <- TRUE # Sollen bestehende Dateien überschrieben werden?
use_private <- TRUE # Die Werte aus "private/private.R" benutzen?
Semester <- "WiSe 2020/21" # Semesterangabe (SoSe XXXX / WiSe XXXX/XX)
Studienort <- iconv("Düsseldorf / Münster") # Studienort(e)
midfix <- "" # Anhängsel an den Dateinamen, falls benötigt.
# ------------------------------------------------------------------------
# Hiermit werden die Einstellungen im Rmd-Skript übersprungen:
RENDEREDBYSCRIPT <<- TRUE
# ------------------------------------------------------------------------
# Die wichtigesten Prelude-Skripte schon einmal laden:
source("prelude/prelude_tools.R")
source("prelude/prelude_rendertools.R")
# ------------------------------------------------------------------------
# Die im Skript übersprungenen Einstellungen müssen nun nachgeholt werden:
UseCache <<- FALSE
privateVorstellung <<- FALSE # Zeige die Private Vorstellung
showVorlesungsplan <<- FALSE # Zeige den Vorlesungsplan
showuseR <<- TRUE # Zeige Umfrage an
# Default Werte für "private.yaml":
if (use_private) {
source("private/private.R")
createPrivateYaml(DozInfo, Semester, "FOM", Studienort)
} else {
createPrivateYaml("Dozent*in", Semester, "FOM", Studienort)
}
# ------------------------------------------------------------------------
# Aus dem angegebenen Dateinamen werden einige abgeleitete
# Dateinamen erzeugt:
filename_rmd <- paste0(filename, ".Rmd")
filename_tex <- paste0(filename, ".tex")
filename_pdf <- paste0(filename, ".pdf")
filename_dozi <- paste0(filename, midfix, "-Dozifassung.pdf")
filename_studi <- paste0(filename, midfix, "-Studifassung.pdf")
filename_lsg <- paste0(filename, midfix, "-Lsg.pdf")
# ------------------------------------------------------------------------
# Lokale Funktion, werche die externen Dateien anpasst:
compileTeXFile <- function(texfile, pdffilesource, pdffiledest,
msg = "", ovrwrt = TRUE) {
cat(paste0(msg,"\n"))
tinytex::latexmk(texfile)
file.copy(pdffilesource, pdffiledest, overwrite = ovrwrt)
}
# ------------------------------------------------------------------------
### HAUPTROUTINE ###
# ------------------------------------------------------------------------
# ------------------------------------------------------------------------
# Dozentenskript erzeugen
makeSkriptOfType("DozentenSkript")
cat("Render and compile dozi file!\n")
rmarkdown::render(
input = filename_rmd,
encoding = "UTF-8",
clean = FALSE
)
file.copy(filename_pdf, filename_dozi, overwrite = overwrite_old)
# ------------------------------------------------------------------------
# Studierendenskript erzeugen
makeSkriptOfType("StudierendenSkript")
compileTeXFile(filename_tex, filename_pdf, filename_studi,
"Compile studi file!", overwrite_old)
# ------------------------------------------------------------------------
# Lösungsskript erzeugen
makeSkriptOfType("LösungsSkript")
compileTeXFile(filename_tex, filename_pdf, filename_lsg,
"Compile lsg file!", overwrite_old)
cat(paste0("makerender ", filename,".Rmd ... DONE!\n"))
# ========================================================================