AKTUALIZACJA
Od wersji ESS 19.04 biblioteki ess-nowebi ess-swvsą przestarzałe:
W związku z tym moja pierwotna odpowiedź (poniżej) nie ma już zastosowania. Funkcje, które zapewniały te biblioteki, są teraz obsługiwane przez tryb wielomodowy, a konfiguracja jest prostsza. Aby uzyskać minimalne wsparcie, co potrzebne jest do zainstalowania ess, polymodea poly-Rpakiety (od MELPA lub ze źródła, jeśli to w jaki sposób rolka).
Otóż to! Teraz, jeśli otworzysz Rnwplik, powinieneś zobaczyć PM-Rnwflagę w modeline, a Polymodeu góry będzie menu. Możesz wplatać swój plik do .texpliku za pomocą M-n w(lub menu trybu wielomodowego) i eksportować go do .pdfza pośrednictwem M-n e(lub menu). Za pierwszym razem zostaniesz poproszony o eksportera; Właśnie wybrałem knitr.
UWAGA: export ( M-n e) automatycznie uruchamia kod, generuje plik pdf i wyświetla go za jednym razem. Nie byłem w stanie uzyskać tego zachowania „jednym kliknięciem” w starej wersji opisanej poniżej.
Wygenerowane pliki będą zawierały słowo -woveni -exporteddołączone. Jeśli Ci się nie podoba, możesz dostosować opcje polymode-weaver-output-file-formati polymode-exporter-output-file-format.
Proces jest podobny w przypadku plików RMarkdown ( .Rmd).
Pełne szczegóły znajdują się w instrukcji obsługi trybu wielomodowego
Oryginalna odpowiedź (przestarzała po ESS 19.04)
Należy ustawić trzy zmienne:
ess-swv-pdflatex-commands, w grupie dostosowywania ess-sweavemusi mieć „pdflatex” jako pierwsze polecenie. tzn. powinien wyglądać mniej więcej tak:("pdflatex" "texi2pdf" "make")
ess-swv-processor, w grupie dostosowywania ess-Rpowinna być wartością"knitr"
ess-pdf-viewer-prefw grupie dostosowywania essdo "emacsclient". Zakłada się, że korzystasz z serwera emacs lub emacs działa w trybie --daemon. Powinieneś także używać narzędzi pdf, jeśli to w ogóle możliwe, ponieważ jest to zdecydowanie lepsze niż wbudowana przeglądarka pdf Emacsa.
Używam haka, aby dodać dwa skróty klawiszowe do wywoływania BibTeX i texi2pdf:
(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"))))
Gdy to zrobisz, M-n szrobisz na drutach dokument, wykonasz M-n bbibteks i M-n Pprzetworzy go za pomocą pdflatex.
Zauważ, że Emacs nie ma prostego sposobu, aby dowiedzieć się, kiedy dziewiarstwo jest zakończone, więc nie możesz ustawić go na drutach i lateksie w jednym kroku; musisz ręcznie uruchomić pdflatex, gdy zobaczysz, że dziewiarstwo zostało zakończone.
Biorąc pod uwagę wiele kroków tutaj - Rnw -> Lateks -> PDF, nie sądzę, że możesz zmusić Synctex do przechowywania plików pdf i Rnw, aby przewijać się razem, ale byłbym podekscytowany, gdybym udowodnił, że się mylę.
Jeśli chodzi o układ okien, nigdy nie mogę ich zatrzymać tam, gdzie chcę. Aby to zrekompensować, stałem się biegły w tasowaniu okien i buforów, gdy ich potrzebuję;)
Yihui opublikował krótki film na stronie knitr, w którym demonstruje niektóre z nich.
rmarkdown::render(przezshell-command) na bieżącymbuffer-file-name, który zaktualizuje pdf w drugim oknie.