Ich bin ein Lehrer, der versucht, eine Hausaufgabe und eine Hausaufgabenlösung aus derselben Rmarkdown-Datei zu erstellen, indem er einen von mir erstellten Dokumentenparameter namens soln
ändert. Wenn soln=FALSE
, wird das Zuweisungsdokument generiert, und wenn soln=TRUE
erstellt wird, wird der Hausaufgaben-Lösungsführer generiert. Ich kann die Ausführung des R-Code-Chunks mit dem Parameter document steuern, aber ich möchte auch die bedingte Aufnahme von Markdown-Text.
Meine aktuelle Problemumgehung ist hässlich:
%Vor% Was ich tun möchte ist, die Brocken, die cat
-Funktionen enthalten, durch etwas eleganteres und lesbareres für die Person zu ersetzen, die den Lösungsführer schreibt. Mein derzeitiger Ansatz funktioniert genug für mich, aber ich kann meine Mitlehrer nicht darum bitten, weil es so unangenehm ist, die Lösungen innerhalb der Funktion cat
zu schreiben. (Als LaTeX-Benutzer ist es auch lästig, doppelte Schrägstriche für alles innerhalb der mathematischen Befehle zu benötigen.)
Gibt es einen anderen Weg, dies zu tun?
Anstatt cat
zu verwenden, um die Lösung aus einem R-Code-Chunk heraus zu drucken, könnten Sie die Lösung wie in rmarkdown
schreiben (dh mit der üblichen Kombination aus Text, latex
und R-Code) chunks), und verwenden Sie den Parameter soln
, um diesen Abschnitt auszukommentieren, wenn Sie die Lösung nicht in das endgültige Dokument einschließen möchten.
Wenn der Parameter rmarkdown
in soln
ist, fügt die Zeile FALSE
% r if(!params$soln) {"\begin{comment}"}
ein, um die Lösung auskommentieren zu lassen (mit passendem Code am Ende, um \begin{comment}
einzufügen). ). Ich habe auch alles mit zwei Tabs eingerückt, so dass die Frage-Nummern mit einem hängenden Einzug formatiert sind. (Wenn Sie dieses Format mögen, müssen Sie nicht die Doppel-Tab für jeden neuen Absatz oder Chunk eingeben. Wenn Sie dies für eine Zeile tun, dann wird jedes Mal, wenn Sie die Taste \end{comment}
drücken, die neue Zeile automatisch formatieren Sie mit dem Doppel-Tab. Oder geben Sie einfach Ihren gesamten Text und Code für eine bestimmte Frage ein, dann markieren Sie alles und geben Enter
zweimal ein.)
Anstatt die obige Datei interaktiv zu stricken, können Sie beide Versionen auch rendern, indem Sie die Funktion tab
in einem separaten R-Skript ausführen. Angenommen, die obige Datei heißt render
, öffnen Sie eine separate R-Skriptdatei und führen Sie Folgendes aus:
Im Folgenden sehen Sie, wie hw.Rmd
aussieht. Solutions.doc
ist ähnlich, außer dass alles aus dem fett gedruckten Wort Homework.doc
ausgeschlossen ist:
Tags und Links r markdown r-markdown knitr pandoc