Gibt es eine Möglichkeit, eine bedingte Markdown-Chunk-Ausführung in Rmarkdown auszuführen?

10

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?

    
thatssobayesic 17.09.2016, 19:12
quelle

1 Antwort

13

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.)

%Vor%

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:

%Vor%

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:

    
eipi10 17.09.2016, 21:46
quelle

Tags und Links