RStudio menyediakan cara satu tombol untuk menghasilkan file PDF dari sumber LaTeX + R dengan Knitr. Ini terlihat bagus untuk melakukan penelitian yang dapat direproduksi. Dan saya mencoba mengkonfigurasi Emacs saya untuk:
- di buffer kiri kode LaTeX + R dengan cara Knitr;
- pada pratinjau output PDF buffer kanan;
- satu kombinasi tombol untuk kompilasi.
Jika memungkinkan: bagaimana saya harus mengatur ini?
(ESS berfungsi dengan baik, tapi saya tidak tahu cara mengatur Knitr-way dan satu-tombol-untuk-kompilasi.)
rmarkdown::render
(viashell-command
) pada saat inibuffer-file-name
, yang akan memperbarui pdf di jendela lain.Jawaban:
MEMPERBARUI
Pada ESS 19.04, perpustakaan
ess-noweb
daness-swv
sudah usang:Akibatnya, jawaban asli saya (di bawah) tidak berlaku lagi. Fitur-fitur yang digunakan oleh perpustakaan-perpustakaan ini sekarang disediakan oleh polymode, dan konfigurasinya lebih sederhana. Untuk mendapatkan dukungan minimal, yang Anda butuhkan adalah menginstal
ess
,polymode
danpoly-R
paket (dari MELPA, atau dari sumber jika itu cara Anda menggulung).Itu dia! Sekarang jika Anda membuka
Rnw
file, Anda akan melihatPM-Rnw
bendera di modeline, dan akan adaPolymode
menu di atas. Anda dapat menenun file Anda menjadi.tex
file melaluiM-n w
(atau menu polymode), dan mengekspornya ke.pdf
melaluiM-n e
(atau menu). Anda akan diminta untuk eksportir saat pertama kali melakukan ini; Saya baru saja memilihknitr
.CATATAN: mengekspor (
M-n e
) secara otomatis menjalankan kode Anda, menghasilkan pdf dan menampilkannya, semuanya sekaligus. Saya tidak bisa mendapatkan perilaku "satu klik" dengan versi lama yang dijelaskan di bawah ini.File yang dihasilkan akan memiliki kata
-woven
dan-exported
ditambahkan. Jika Anda tidak suka ini, Anda dapat menyesuaikan opsipolymode-weaver-output-file-format
danpolymode-exporter-output-file-format
.Prosesnya mirip untuk file RMarkdown (
.Rmd
).Rincian lengkap disediakan di manual polymode
Jawaban Asli (usang setelah ESS 19.04)
Tiga variabel perlu diatur:
ess-swv-pdflatex-commands
, dalam grup kustomisasiess-sweave
harus memiliki "pdflatex" sebagai perintah pertama. yaitu, harus terlihat seperti:("pdflatex" "texi2pdf" "make")
ess-swv-processor
, dalam grup penyesuaianess-R
, harus menjadi nilainya"knitr"
ess-pdf-viewer-pref
dalam grup penyesuaianess
untuk"emacsclient"
. Ini mengasumsikan Anda menjalankan server emacs, atau emacs berjalan dalam mode --daemon. Anda juga harus menggunakan alat pdf jika memungkinkan, karena jauh lebih disukai daripada penampil pdf Emacs bawaan.Saya menggunakan hook untuk menambahkan dua keybindings untuk memanggil BibTeX dan texi2pdf:
Setelah ini selesai,
M-n s
akan merajut dokumen Anda,M-n b
akan bibtex, danM-n P
akan memprosesnya dengan pdflatex.Perhatikan bahwa tidak ada cara sederhana bagi Emacs untuk mengetahui kapan merajut selesai, jadi Anda tidak dapat mengatur ini untuk merajut & lateks dalam satu langkah; Anda harus secara manual memicu pdflatex setelah Anda melihat rajutan telah selesai.
Diberikan beberapa langkah di sini - Rnw -> Lateks -> PDF, saya tidak berpikir Anda bisa mendapatkan Synctex untuk menyimpan file pdf dan Rnw Anda untuk digabungkan, tetapi saya akan senang terbukti salah.
Adapun pengaturan jendela, saya tidak pernah bisa membuat mereka tetap di tempat yang saya inginkan. Jadi untuk mengkompensasi saya telah menjadi sangat mahir mengocok jendela dan buffer sesuai kebutuhan saya;)
Yihui memposting video pendek di situs rajutan yang menunjukkan sebagian dari ini.
sumber
Ini adalah solusi menyeluruh. Ini akan membuat dan menampilkan PDF dari Rnw .
Secara khusus itu akan:
Prosedur mencoba untuk keluar dengan pesan informatif jika salah satu langkah di atas gagal.
Sebuah instance R akan dibuka, jika perlu, atau yang sekarang digunakan untuk menunjukkan proses merajut.
Output LaTeX dikirim ke buffer "TeX-output", yang juga muncul jika terjadi kesalahan kompilasi.
Pemakaian
Meta- x
knit-me
untuk membuat dan melihat PDF.Meta- x
knit-me-clear
untuk menghapus file LaTeX menengah danknit-me
.Bibliografi membutuhkan paket "biblatex", yaitu:
Nama mesin bib (misalnya
bibtex
,biber
) diperoleh dengan menguraikanbackend
kata kunci.\addbibresource
perintah diuraikan untuk mendapatkan file bibliografi: jikafoo.bib
lebih baru dari file TeX mesin bib dijalankan. Dalam hal ini, hanya\addbibresource
perintah pertama yang diperhitungkan jika ada banyak.Sesuaikan
Untuk benar-benar melihat PDF, tetapkan jalur yang dapat dieksekusi penampil dengan:
Mungkin menggunakan penampil seperti SumatraPDF , yang secara otomatis memperbarui PDF ketika dikompilasi ulang dan tidak memblokir file yang dibuka mencegah kompilasi baru.
Mesin LaTeX default adalah
pdflatex
(diasumsikan di jalur saat ini). Sesuaikan dengan:Tentu saja Anda mungkin ingin mengikat
knit-me
danknit-me-clear
beberapa tombol yang mudah digunakan.Catatan
Diuji pada Windows MiKTeX, dengan
biber
danbibtex8
backends dan GNU Emacs 25.1.1.Kode elisp
sumber