RStudio zapewnia jeden przycisk do tworzenia pliku PDF ze źródła LaTeX + R za pomocą Knitr. Wygląda doskonale na prowadzenie powtarzalnych badań. Próbuję skonfigurować Emacsa do:
- w lewym buforze kod LaTeX + R w sposób Knitr;
- w prawym buforze podgląd wyjścia PDF;
- jedna kombinacja klawiszy do kompilacji.
Jeśli to możliwe: jak to ustawić, proszę?
(ESS działa dobrze, ale nie wiem, jak skonfigurować Knitr-way i kompilację za pomocą jednego przycisku).
rmarkdown::render
(przezshell-command
) na bieżącymbuffer-file-name
, który zaktualizuje pdf w drugim oknie.Odpowiedzi:
AKTUALIZACJA
Od wersji ESS 19.04 biblioteki
ess-noweb
iess-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
apoly-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, aPolymode
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średnictwemM-n e
(lub menu). Za pierwszym razem zostaniesz poproszony o eksportera; Właśnie wybrałemknitr
.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ć opcjepolymode-weaver-output-file-format
ipolymode-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 dostosowywaniaess-sweave
musi mieć „pdflatex” jako pierwsze polecenie. tzn. powinien wyglądać mniej więcej tak:("pdflatex" "texi2pdf" "make")
ess-swv-processor
, w grupie dostosowywaniaess-R
powinna być wartością"knitr"
ess-pdf-viewer-pref
w grupie dostosowywaniaess
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:
Gdy to zrobisz,
M-n s
zrobisz na drutach dokument, wykonaszM-n b
bibteks iM-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.
źródło
To rozwiązanie typu „wszystko w jednym”. Będzie ona tworzyć i wyświetlać pliki PDF z RNW .
W szczególności:
Procedura próbuje wyjść z komunikatami informacyjnymi, jeśli jeden z powyższych kroków nie powiedzie się.
Instancja R zostanie otwarta, jeśli to konieczne, lub bieżąca zostanie wykorzystana do pokazania procesu dziania.
Dane wyjściowe LaTeX są wysyłane do bufora „TeX-output”, który również pojawia się w przypadku błędu kompilacji.
Stosowanie
Meta- w x
knit-me
celu utworzenia i przeglądania pliku PDF.Meta- x
knit-me-clear
aby usunąć pośrednie pliki LaTeX iknit-me
.Bibliografia wymaga pakietu „biblatex”, tj .:
Nazwa Bib-silnik (np
bibtex
,biber
) otrzymuje parsowaniabackend
słowa kluczowego.\addbibresource
polecenie jest analizowane w celu uzyskania pliku bibliografii: jeślifoo.bib
jest nowszy niż plik TeX, uruchamiany jest silnik śliniak. Pod tym względem\addbibresource
brane jest pod uwagę tylko pierwsze polecenie, jeśli jest ich wiele.Dostosuj
Aby faktycznie wyświetlić plik PDF, ustaw ścieżkę wykonywalną przeglądarki za pomocą:
Ewentualnie użyj przeglądarki takiej jak SumatraPDF , która automatycznie aktualizuje plik PDF po ponownej kompilacji i nie blokuje otwartego pliku, uniemożliwiając nowe kompilacje.
Domyślny silnik LaTeX to
pdflatex
(przyjęty w bieżącej ścieżce). Dostosuj za pomocą:Oczywiście możesz chcieć powiązać
knit-me
iknit-me-clear
kilka wygodnych kluczy.Notatki
Testowane w Windows MiKTeX, z
biber
ibibtex8
backendami oraz GNU Emacs 25.1.1.Kod Elisp
źródło