AKTUALIZACJA
Od wersji ESS 19.04 biblioteki ess-noweb
i ess-swv
są 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
, polymode
a poly-R
pakiety (od MELPA lub ze źródła, jeśli to w jaki sposób rolka).
Otóż to! Teraz, jeśli otworzysz Rnw
plik, powinieneś zobaczyć PM-Rnw
flagę w modeline, a Polymode
u góry będzie menu. Możesz wplatać swój plik do .tex
pliku za pomocą M-n w
(lub menu trybu wielomodowego) i eksportować go do .pdf
za 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 -woven
i -exported
dołączone. Jeśli Ci się nie podoba, możesz dostosować opcje polymode-weaver-output-file-format
i 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-sweave
musi mieć „pdflatex” jako pierwsze polecenie. tzn. powinien wyglądać mniej więcej tak:("pdflatex" "texi2pdf" "make")
ess-swv-processor
, w grupie dostosowywania ess-R
powinna być wartością"knitr"
ess-pdf-viewer-pref
w grupie dostosowywania ess
do "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 s
zrobisz na drutach dokument, wykonasz M-n b
bibteks i M-n P
przetworzy 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.