AKTUALISIEREN
Ab ESS 19.04 sind die Bibliotheken ess-nowebund ess-swvveraltet:
Folglich gilt meine ursprüngliche Antwort (unten) nicht mehr. Die Funktionen, die diese Bibliotheken zur Verfügung stellen, werden jetzt im Polymode bereitgestellt, und die Konfiguration ist einfacher. Um minimale Unterstützung zu erhalten, alles , was Sie brauchen , ist die Installation ess, polymodeund poly-RPakete (von Melpa, oder von der Quelle , wenn das ist , wie Sie rollen).
Das ist es! Wenn Sie nun eine RnwDatei öffnen , sollten Sie PM-Rnwdie Markierung in der Modeline sehen und es wird ein PolymodeMenü oben angezeigt . Sie können Ihre Datei .texüber M-n w(oder das Polymode-Menü) in eine Datei verweben und .pdfüber M-n e(oder das Menü) in eine Datei exportieren . Wenn Sie dies zum ersten Mal tun, werden Sie aufgefordert, einen Exporteur anzugeben. Ich habe gerade gepflückt knitr.
HINWEIS: exporting ( M-n e) führt Ihren Code automatisch aus, generiert das PDF und zeigt es auf einmal an. Ich konnte dieses "Ein-Klick" -Verhalten mit der alten, unten beschriebenen Version nicht erzielen.
Die erzeugten Dateien werden das Wort haben -wovenund -exportedangehängt. Wenn Ihnen das nicht gefällt, können Sie die Optionen polymode-weaver-output-file-formatund anpassen polymode-exporter-output-file-format.
Der Vorgang ist für RMarkdown-Dateien ( .Rmd) ähnlich .
Ausführliche Informationen finden Sie im Polymode-Handbuch
Ursprüngliche Antwort (veraltet nach ESS 19.04)
Drei Variablen müssen gesetzt werden:
ess-swv-pdflatex-commandsIn der Anpassungsgruppe ess-sweavemuss "pdflatex" als erster Befehl angegeben werden. Das heißt, es sollte ungefähr so aussehen:("pdflatex" "texi2pdf" "make")
ess-swv-processorsollte in der Anpassungsgruppe ess-Rder Wert sein"knitr"
ess-pdf-viewer-prefin der Anpassungsgruppe esszu "emacsclient". Dies setzt voraus, dass Sie den Emacs-Server ausführen oder dass der Emacs im --daemon-Modus ausgeführt wird. Sie sollten nach Möglichkeit auch PDF-Tools verwenden , da dies dem integrierten Emacs-PDF-Viewer weit vorzuziehen ist.
Ich benutze einen Haken, um zwei Tastenkombinationen zum Aufrufen von BibTeX und texi2pdf hinzuzufügen:
(add-hook 'ess-noweb-mode-hook 'my-noweb-hook)
(defun my-noweb-hook ()
(define-key ess-noweb-mode-prefix-map "b"
#'(lambda () (interactive) (TeX-command "BibTeX" 'TeX-master-file)))
(define-key ess-noweb-mode-prefix-map "P"
#'(lambda () (interactive)
(ess-swv-PDF "texi2pdf"))))
Sobald dies erledigt ist, M-n swird Ihr Dokument gestrickt, M-n bbibtex und M-n Pmit pdflatex verarbeitet.
Beachten Sie, dass es für Emacs keine einfache Möglichkeit gibt, festzustellen, wann das Stricken abgeschlossen ist. Sie können dies also nicht in einem Schritt auf Stricken und Latex einstellen. Sie müssen pdflatex manuell auslösen, nachdem Sie gesehen haben, dass das Stricken beendet ist.
Angesichts der vielen Schritte hier - Rnw -> Latex -> PDF, glaube ich nicht, dass Sie Synctex dazu bringen können, Ihre PDF- und Rnw-Dateien zusammen zu scrollen, aber ich würde mich freuen, wenn ich mich als falsch erweisen würde.
Was die Fensteranordnung betrifft, kann ich sie niemals dazu bringen, dort zu bleiben, wo ich sie haben möchte. Um das zu kompensieren, bin ich ziemlich geschickt darin geworden, Fenster und Puffer so zu mischen, wie ich sie brauche;)
Yihui hat ein kurzes Video auf der Knitr-Site gepostet, das einige davon demonstriert.
rmarkdown::render(viashell-command) auf dem aktuellenbuffer-file-name, die das PDF im anderen Fenster aktualisiert.