Sementara di MiKTeX, proses instalasi dipicu secara otomatis jika Anda memiliki, katakanlah, \usepackage{beamer}
dalam pembukaan dokumen tanpa menginstal paket terkait, tidak ada fitur seperti itu di TeX Live.
Pernyataan terakhir sebenarnya tidak benar, seperti yang ditunjukkan oleh wasteofspace di komentar ada paket texliveonfly yang mengimplementasikan instalasi on demand di TeX Live 2010 dan yang lebih baru. Saya tidak pernah mengujinya dan tidak tahu apakah ada kekurangannya.
Namun, jika Anda menginstal kumpulan paket TeX Live lengkap (atau hampir penuh) (~2400), Anda tidak perlu menambahkan paket baru, tlmgr update -all
berkala akan menangani semuanya, termasuk penginstalan paket yang ditambahkan ke koleksi TeX Live setelah Anda pertama kali melakukan penginstalan penuh. Fitur ini dijelaskan di tlmgr
manual.
Secara analogi, jika sebuah paket telah ditambahkan ke koleksi di server yang juga diinstal secara lokal, itu akan ditambahkan ke instalasi lokal. Ini disebut
auto-install
dan diumumkan seperti itu saat menggunakan opsi--list
. Instalasi otomatis ini dapat ditekan menggunakan opsi--no-auto-install
Manual memiliki banyak info tentang perintah yang berguna dan merupakan bacaan yang direkomendasikan untuk setiap pengguna.
Sisi negatifnya tentu saja Anda memerlukan paket lengkap yang diinstal di mesin Anda, yang mungkin menjadi masalah jika Anda tidak memiliki cukup ruang kosong. Jika Anda benar-benar tidak dapat menyisihkan 2GB dari HD Anda, Anda juga dapat menginstal TeX Live dalam, misalnya, kunci USB 4GB dan hidup bahagia selamanya :)
Semua yang baru saja saya tulis mengharuskan Anda menginstal TeX Live dengan salah satu metode yang dijelaskan di sini. Jika Anda memutuskan untuk menggunakan paket TeX dari distro Anda, Anda terpaksa mengikuti kebijakan pembaruan mereka, yang berbeda untuk distro yang berbeda
texliveonfly
Seperti disebutkan dalam komentar, ada paket TeX Live bernama texliveonfly
yang dapat Anda gunakan dengan texliveonfly filename.tex
, dan secara otomatis akan mengunduh paket TeX Live yang tepat.
Ini juga berfungsi untuk paket yang nama paket LaTeX dan nama paket TeX Live tidak cocok (misalnya LaTeX rubikrotation
paket terkandung dalam rubik
paket TeX Live), dan juga memperhitungkan dependensi paket.
Penggunaan
Memasang Ini adalah skrip Python sehingga membutuhkan Python untuk diinstal. Anda kemudian dapat menginstalnya seperti biasa dengan tlmgr install texliveonfly
. Jika harus menggunakan sudo tlmgr
di sini, Anda harus menggunakan sudo texliveonfly
nanti.
Berjalan Jika Anda masuk ke terminal Anda ke direktori filename.tex
Anda file, Anda dapat menjalankannya dengan texliveonfly filename.tex
.
Kompiler lain Saat ini menggunakan pdflatex
secara default, tetapi Anda dapat mengonfigurasinya untuk dijalankan dengan mesin kompiler lain dengan menggunakan --compiler
(atau -c
) bendera, jadi seperti texliveonfly --compiler=lualatex filename.tex
.
Bendera penyusun Anda dapat meneruskan flag untuk kompiler yang Anda gunakan ke texliveonfly
menggunakan --arguments
(atau -a
) flag, jadi misalnya jika sebelumnya Anda menggunakan latexmk -shell-escape -pdf filename.tex
maka Anda sekarang menggunakan texliveonfly --compiler=latexmk --arguments='-shell-escape -pdf' filename.tex
.
Masalah umum
- Ada beberapa kasus paket yang hilang yang gagal dengan pesan kesalahan non-standar, misalnya babel ketika bahasanya hilang, dalam hal ini
texliveonfly
tidak mendownloadnya. Saat ini paket-paket berikut diketahui harus diinstal secara manual:(harap edit jika Anda menemukan lebih banyak)
- Bahasa Babel, misalnya untuk bahasa eropa pasang
collection-langeuropean
paket - Gaya Biblatex, mis. untuk gaya alami Anda memerlukan
biblatex-nature
paket - pengkodean fontenc, mis. untuk mendapatkan
t2aenc.def
Anda memerlukancyrillic
paket, dan untuk mendapatkanly1enc.def
Anda membutuhkanly1
paket. - Paket yang terlibat saat menggunakan paket yang dibuat, yaitu
minted fvextra upquote lineno xstring framed caption
(terima kasih kepada pablgonz untuk pengujiannya) - Saat menjalankan program eksternal seperti
texcount
dalam file LaTeX Anda, texliveonfly tidak mendeteksi bahwa Anda memerlukantexcount
paket.
- Saat memberikan opsi ke texliveonfly, misalnya untuk kompiler yang berbeda, kadang-kadang hang tanpa alasan yang jelas saat menginstal paket. Anda kemungkinan besar dapat mengatasinya dengan terlebih dahulu menjalankan texliveonfly tanpa opsi, jadi
texliveonfly main.tex
(jadi itu akan mengunduh paket) dan kemudian menjalankan apa pun yang Anda inginkan, misalnyalatexmk main.tex
.
Latar Belakang
Pada dasarnya texliveonfly adalah alat build seperti latexmk (yang merupakan skrip Perl), ini membungkus mesin TeX. Namun perhatikan bahwa Anda dapat menghubungkannya dengan texliveonfly --compiler=latexmk filename.tex
.
Ini adalah skrip python yang berfungsi dengan mencoba menjalankan file LaTeX Anda, dan jika gagal karena ada paket yang hilang, ia akan mencoba menginstal paket itu.
Selain di ctan.org/pkg/texliveonfly Anda dapat melihat sumbernya di ctan.org/tex-archive/support/texliveonfly atau di latex.org/forum
PS Saya menguji ini di Arch Linux 4.19.4 dan di Travis CI (Ubuntu 14.04).
Pendekatan saya yang agak sederhana adalah mencari \usepackage
, ekstrak konten dan instal menggunakan pengelola paket distribusi.
cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' -
Ini mengembalikan daftar paket dengan .sty
dan dikelilingi oleh tex()
, mis. tex(amsmath.sty) tex(enumitem.sty) tex(graphicx.sty)
. Saya dapat meneruskan ini langsung ke yum
/dnf
(Saya menggunakan Fedora).
sudo dnf install $( cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' - )
Ada beberapa paket yang telah saya bagi menjadi beberapa baris yaitu sed
ekspresi terlewatkan, yang saya instal secara manual menggunakan sudo dnf install 'tex(some-package-name.sty)'
.
Mudah-mudahan ada .sty
yang sederhana menginstal yang setara untuk apt-get
di ubuntu.