GNU/Linux >> Belajar Linux >  >> Linux

Pengunduhan Paket Otomatis untuk TeXLive

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

  1. 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 memerlukan cyrillic paket, dan untuk mendapatkan ly1enc.def Anda membutuhkan ly1 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 memerlukan texcount paket.
  1. 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, misalnya latexmk 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.


Linux
  1. Cara mengemas aplikasi Python untuk Linux

  2. Persepolis – Pengelola Unduhan Lintas Platform Gratis untuk Linux

  3. youtube-dl-gui – GUI Lintas-Platform untuk youtube-dl

  1. Menggunakan AppImage untuk manajemen paket Linux

  2. Paket Dia Mana yang Harus Saya Unduh Untuk Ubuntu 14.04 64-bit?

  3. Kesalahan menginstal paket R untuk Linux

  1. Ubuntu 20.04 Unduh Untuk Imac G5 Powerpc?

  2. Apt-cache Digunakan Untuk?

  3. Perangkat lunak ekstraksi otomatis untuk Linux?