X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/a032b4454b3fc67e11e9fc2d8c2345288065fa29..631337063ed07419a22ca1eaf2c5fa3042e89344:/gnu/packages/tex.scm diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index b6bc9dda62..2a135080b5 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -6,10 +6,10 @@ ;;; Copyright © 2016, 2018 Efraim Flashner ;;; Copyright © 2016 Federico Beffa ;;; Copyright © 2016 Thomas Danckaert -;;; Copyright © 2016, 2017 Ricardo Wurmus +;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus ;;; Copyright © 2017 Leo Famulari ;;; Copyright © 2017 Marius Bakke -;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Danny Milosavljevic ;;; Copyright © 2018 Arun Isaac ;;; @@ -49,6 +49,7 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages gd) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) @@ -60,6 +61,7 @@ #:use-module (gnu packages perl-check) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages ruby) #:use-module (gnu packages shells) @@ -76,42 +78,41 @@ (define texlive-extra-src (origin (method url-fetch) - (uri "ftp://tug.org/historic/systems/texlive/2017/texlive-20170524-extra.tar.xz") + (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-extra.tar.xz") (sha256 (base32 - "0zvd2zskk78ig114mfj24g15qys41hzqv59fmqpirdbgq9c9gr5g")))) + "0a83kymxc8zmlxjb0y1gf6mx7qnf0hxffwkivwh5yh138y2rfhsv")))) (define texlive-texmf-src (origin (method url-fetch) - (uri "ftp://tug.org/historic/systems/texlive/2017/texlive-20170524-texmf.tar.xz") + (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-texmf.tar.xz") (sha256 (base32 - "1v69y3kgkbk24f7s4dfkknwd317mqmck5jgpyb35wqgqfy5p0qrz")))) + "1b8zigzg8raxkhhzphcmynf84rbdbj2ym2qkz24v8n0qx82zmqms")))) (define-public texlive-bin (package (name "texlive-bin") - (version "20170524") + (version "20180414") (source (origin - (method url-fetch) - (uri (string-append "ftp://tug.org/historic/systems/texlive/2017/" + (method url-fetch) + (uri (string-append "ftp://tug.org/historic/systems/texlive/2018/" "texlive-" version "-source.tar.xz")) + (sha256 + (base32 + "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y")) (patches (list - ;; This is required for compatibility with Poppler >= 0.58. - ;; See - ;; and for some discussion. + ;; This is required for compatibility with Poppler 0.64.0 and to fix a + ;; segmentation fault in dvipdfm-x from XeTeX. (origin (method url-fetch) - (uri (string-append "https://git.archlinux.org/svntogit/packages.git/plain" - "/trunk/texlive-poppler-0.59.patch?h=packages/texlive-bin" - "&id=ba2de374e2b21ecc4b85cc9777f2f15c4d356c61")) + (uri (string-append "http://www.linuxfromscratch.org/patches/blfs/" + "svn/texlive-" version "-source-upstream_fixes-1.patch")) (file-name "texlive-poppler-compat.patch") (sha256 (base32 - "1c4ikq4kxw48bi3i33bzpabrjvbk01fwjr2lz20gkc9kv8l0bg3n"))))) - (sha256 (base32 - "1amjrxyasplv4alfwcxwnw4nrx7dz2ydmddkq16k6hg90i9njq81")))) + "0f8vhyj167y4xj0jx47vkybrcacfpxw0wdn1b777yq3xmhlahhlg"))))))) (build-system gnu-build-system) (inputs `(("texlive-extra-src" ,texlive-extra-src) @@ -175,44 +176,76 @@ (not (or (string-prefix? "aarch64" s) (string-prefix? "mips64" s)))) #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-unix-detection - ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows, - ;; and the "gs" ghostscript executable on Unix. It detects Unix by - ;; checking for the existence of the /usr/bin directory. Since - ;; GuixSD does not have /usr/bin, it is also detected as Windows. - (lambda _ - (substitute* "utils/ps2eps/ps2eps-src/bin/ps2eps.pl" - (("gswin32c") "gs")) - #t)) - (add-after 'install 'postint - (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) - (let* ((out (assoc-ref outputs "out")) - (share (string-append out "/share")) - (texlive-extra (assoc-ref inputs "texlive-extra-src")) - (unpack (assoc-ref %standard-phases 'unpack)) - (patch-source-shebangs - (assoc-ref %standard-phases 'patch-source-shebangs))) - ;; Create symbolic links for the latex variants and their - ;; man pages. - (with-directory-excursion (string-append out "/bin/") - (for-each symlink - '("pdftex" "pdftex" "xetex" "luatex") - '("latex" "pdflatex" "xelatex" "lualatex"))) - (with-directory-excursion (string-append share "/man/man1/") - (symlink "luatex.1" "lualatex.1")) - ;; Unpack texlive-extra and install tlpkg. - (mkdir "texlive-extra") - (with-directory-excursion "texlive-extra" - (apply unpack (list #:source texlive-extra)) - (apply patch-source-shebangs (list #:source texlive-extra)) - (invoke "mv" "tlpkg" share)) - ;; texlua shebangs are not patched by the patch-source-shebangs - ;; phase because the texlua executable does not exist at that - ;; time. - (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")) - (with-directory-excursion out - (patch-source-shebangs)))))))) + (modify-phases %standard-phases + (add-after 'unpack 'configure-ghostscript-executable + ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows, + ;; and the "gs" ghostscript executable on Unix. It detects Unix by + ;; checking for the existence of the /usr/bin directory. Since + ;; GuixSD does not have /usr/bin, it is also detected as Windows. + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "utils/ps2eps/ps2eps-src/bin/ps2eps.pl" + (("gswin32c") "gs")) + (substitute* "texk/texlive/linked_scripts/epstopdf/epstopdf.pl" + (("\"gs\"") + (string-append "\"" (assoc-ref inputs "ghostscript") "/bin/gs\""))) + #t)) + (add-after 'unpack 'use-code-for-new-poppler + (lambda _ + (copy-file "texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc" + "texk/web2c/pdftexdir/pdftoepdf.cc") + (copy-file "texk/web2c/pdftexdir/pdftosrc-newpoppler.cc" + "texk/web2c/pdftexdir/pdftosrc.cc") + #t)) + (add-after 'unpack 'disable-failing-test + (lambda _ + ;; FIXME: This test fails on 32-bit architectures since Glibc 2.28: + ;; . + (substitute* "texk/web2c/omegafonts/check.test" + (("^\\./omfonts -ofm2opl \\$srcdir/tests/check tests/xcheck \\|\\| exit 1") + "./omfonts -ofm2opl $srcdir/tests/check tests/xcheck || exit 77")) + #t)) + (add-after 'install 'postint + (lambda* (#:key inputs outputs #:allow-other-keys #:rest args) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share")) + (texlive-extra (assoc-ref inputs "texlive-extra-src")) + (unpack (assoc-ref %standard-phases 'unpack)) + (patch-source-shebangs + (assoc-ref %standard-phases 'patch-source-shebangs))) + (substitute* (string-append share "/texmf-dist/web2c/texmf.cnf") + ;; Don't truncate lines. + (("^error_line = .*$") "error_line = 254\n") + (("^half_error_line = .*$") "half_error_line = 238\n") + (("^max_print_line = .*$") "max_print_line = 1000\n")) + ;; Create symbolic links for the latex variants and their + ;; man pages. + (with-directory-excursion (string-append out "/bin/") + (for-each symlink + '("pdftex" "pdftex" "xetex" "luatex") + '("latex" "pdflatex" "xelatex" "lualatex"))) + (with-directory-excursion (string-append share "/man/man1/") + (symlink "luatex.1" "lualatex.1")) + ;; Unpack texlive-extra and install tlpkg. + (mkdir "texlive-extra") + (with-directory-excursion "texlive-extra" + (apply unpack (list #:source texlive-extra)) + (apply patch-source-shebangs (list #:source texlive-extra)) + (invoke "mv" "tlpkg" share)) + ;; texlua shebangs are not patched by the patch-source-shebangs + ;; phase because the texlua executable does not exist at that + ;; time. + (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")) + (with-directory-excursion out + (patch-source-shebangs)))))))) + (native-search-paths + (list (search-path-specification + (variable "TEXMF") + (files '("share/texmf-dist")) + (separator #f)) + (search-path-specification + (variable "TEXMFCNF") + (files '("share/texmf-dist/web2c")) + (separator #f)))) (synopsis "TeX Live, a package of the TeX typesetting system") (description "TeX Live provides a comprehensive TeX document production system. @@ -238,7 +271,7 @@ This package contains the binaries.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0fcy2hpapbj01ncpjj3v39yhr0jjxb6rm13qaxjjw66s3vydxls1")))) + "1ky6wc173jhf0b33lhyb4r3bx1d4bmiqkn6y1hxn92kwjdzl42p7")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -248,7 +281,7 @@ This package contains the binaries.") (let* ((root (string-append (assoc-ref %outputs "out") "/share/texmf-dist")) (dvips (string-append root "/dvips")) - (maps (string-append root "/fonts/map/dvips/tetex")) + (maps (string-append root "/fonts/map/dvips")) (encs (string-append root "/fonts/enc/dvips/base"))) (mkdir-p dvips) (copy-recursively (assoc-ref %build-inputs "source") dvips) @@ -264,12 +297,12 @@ This package contains the binaries.") (uri (svn-reference (url (string-append "svn://www.tug.org/texlive/tags/" %texlive-tag "/Master/texmf-dist/" - "/fonts/map/dvips/tetex")) + "/fonts/map/dvips")) (revision %texlive-revision))) (file-name (string-append "dvips-font-maps-" version "-checkout")) (sha256 (base32 - "100208pg7q6lj7swiq9p9287nn6b64bl62bnlaxpjni9y2kdrqy5")))) + "0nxvfbb5vsvakiw0iviicghdc2sxk05cj056ilqnpa62fffc36a6")))) ("dvips-base-enc" ,(origin (method svn-fetch) @@ -305,7 +338,7 @@ to PostScript.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0ivrhp6jz31pl4z841g4ws41lmvdiwz4sslmhf02inlib79gz6r2")))) + "0r1v16jyfpz6dwqsgm6b9jcj4kf2pkzc9hg07s6fx9g8ba8qglih")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -344,7 +377,7 @@ out to date by @code{unicode-letters.tex}. ") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1l9wgv99qq0ysvlxqpj4g8bl0dywbzra4g8m2kmpg2fb0i0hczap")))) + "03yj1di9py92drp6gpfva6q69vk2iixr79r7cp7ja570s3pr0m33")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -415,7 +448,7 @@ to adapt the plain e-TeX source file to work with XeTeX and LuaTeX.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0ghizcz7ps16dzfqf66wwg5i181assc6qsm0g7g5dbmp909931vi")))) + "1alnn9cd60m2c12vym9f9q22ap1ngywxpkjl9dk472why44g1dmy")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -510,6 +543,42 @@ converters, will completely supplant the older patterns.") build fonts using the Metafont system.") (license license:knuth))) +(define-public texlive-tex-fontinst-base + (package + (name "texlive-tex-fontinst-base") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/fontinst/base")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "12gnb8hc45p47pqn31msvi4mpr3wxbbbf2k4xhmshjqykwzlx508")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/fontinst/base"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/fontinst") + (synopsis "Tools for converting and installing fonts for TeX and LaTeX") + (description "This package provides TeX macros for converting Adobe Font +Metric files to TeX metric and virtual font format. Fontinst helps mainly +with the number crunching and shovelling parts of font installation. This +means in practice that it creates a number of files which give the TeX +metrics (and related information) for a font family that TeX needs to do any +typesetting in these fonts.") + (license license:lppl1.1+))) + (define-public texlive-fontname (package (name "texlive-fontname") @@ -524,7 +593,7 @@ build fonts using the Metafont system.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0cssbzcx15221dynp5sii72qh4l18mwkr14n8w1xb19j8pbaqasz")))) + "05rbn7z30xawd3n6w7c3ijp2yc67ga220jgqmkla9pd9wx185rzq")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -558,7 +627,7 @@ documents.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "045k5b9rdmbxpy1a3006l1x96z1rd18vg3cwrvnld9bqybw5qz44")))) + "0vfjhidr9pha613h8mfhnpcpvld6ahdfb449918fpsfs93cppkyj")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -579,33 +648,55 @@ documents.") (string-append (getcwd) ":" mf "/share/texmf-dist/metafont/base"))) (mkdir "build") + (mkdir-p "pk/ljfour/public/cm/dpi600") (for-each (lambda (font) (format #t "building font ~a\n" font) (invoke "mf" "-progname=mf" "-output-directory=build" (string-append "\\" "mode:=ljfour; " - "mag:=1; " + "mag:=1+0/600; " "batchmode; " "input " - (basename font ".mf")))) + (basename font ".mf"))) + (invoke "gftopk" + (string-append "build/" + (basename font ".mf") ".600gf") + (string-append "pk/ljfour/public/cm/dpi600/" + (basename font ".mf") ".pk"))) (find-files "." "cm(.*[0-9]+.*|inch)\\.mf$")) #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (tfm (string-append - out "/share/texmf-dist/fonts/tfm/public/cm")) - (mf (string-append - out "/share/texmf-dist/fonts/source/public/cm"))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (fonts (string-append out "/share/texmf-dist/fonts/")) + (pk (string-append fonts "pk")) + (tfm (string-append fonts "tfm/public/cm")) + (mf (string-append fonts "source/public/cm")) + (type1 (string-append fonts "type1/public/amsfonts/cm"))) (for-each (cut install-file <> tfm) (find-files "build" "\\.*")) (for-each (cut install-file <> mf) (find-files "." "\\.mf")) + (copy-recursively "pk" pk) + (mkdir-p type1) + (copy-recursively (assoc-ref inputs "cm-type1") type1) #t)))))) (native-inputs `(("texlive-bin" ,texlive-bin) - ("texlive-metafont-base" ,texlive-metafont-base))) + ("texlive-metafont-base" ,texlive-metafont-base) + ("cm-type1" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/type1/public/amsfonts/cm")) + (revision %texlive-revision))) + (file-name (string-append name "-type1-" version "-checkout")) + (sha256 + (base32 + "12jyl9jp3hidifa4l5pmi47p71d5mb5kj5rknxkygilix8yz2iy6")))))) (home-page "https://www.ctan.org/pkg/cm") (synopsis "Computer Modern fonts for TeX") (description "This package provides the Computer Modern fonts by Donald @@ -614,6 +705,154 @@ display, and mathematical fonts in a range of styles, based on Monotype Modern 8A.") (license license:knuth))) +(define-public texlive-fonts-cm-super + (package + (name "texlive-fonts-cm-super") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0ybb4gi2rblzpb6wfzm2wk7dj3y2jnmkzsla7mz7g3zc12y4r2b9")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((root (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/")) + (pkgs '(("source" . "tex/latex/cm-super") + ("cm-super-afm" . "fonts/afm/public/cm-super") + ("cm-super-type1" . "fonts/type1/public/cm-super") + ("cm-super-enc" . "fonts/enc/dvips/cm-super") + ("cm-super-map" . "fonts/map/dvips/cm-super") + ("cm-super-vtex" . "fonts/map/vtex/cm-super")))) + (for-each (match-lambda + ((pkg . dir) + (let ((target (string-append root dir))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs pkg) + target)))) + pkgs) + #t)))) + (native-inputs + `(("cm-super-vtex" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/map/vtex/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-map-vtex-" version "-checkout")) + (sha256 + (base32 + "14c9allsgfv6za9wznz4cxqxwz5nsmj8rnwvxams8fhs5rvglxqi")))) + ("cm-super-afm" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/afm/public/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-afm-" version "-checkout")) + (sha256 + (base32 + "048ih65f2nghdabdar2p957c4s2spgllmy2gxdscddwqpnmd26yn")))) + ("cm-super-type1" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/type1/public/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-type1-" version "-checkout")) + (sha256 + (base32 + "1140swk3w2ka0y4zdsq6pdifrdanb281q71p5gngbbjxdxjxf4qx")))) + ("cm-super-map" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/map/dvips/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-map-" version "-checkout")) + (sha256 + (base32 + "10r6xqbwf9wk3ylg7givwyrw1952zydc6p7fw29zjf8ijl0lndim")))) + ("cm-super-enc" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/enc/dvips/cm-super")) + (revision %texlive-revision))) + (file-name (string-append name "-enc-" version "-checkout")) + (sha256 + (base32 + "1pgksy96gfgyjxfhs2k04bgg7nr7i128y01kjcahr7n38080h4ij")))))) + (home-page "https://www.ctan.org/pkg/cm-super") + (synopsis "Computer Modern Super family of fonts") + (description "The CM-Super family provides Adobe Type 1 fonts that replace +the T1/TS1-encoded Computer Modern (EC/TC), T1/TS1-encoded Concrete, +T1/TS1-encoded CM bright and LH Cyrillic fonts (thus supporting all European +languages except Greek), and bringing many ameliorations in typesetting +quality. The fonts exhibit the same metrics as the METAFONT-encoded +originals.") + ;; With font exception + (license license:gpl2+))) + +(define-public texlive-fonts-lm + (package + (name "texlive-fonts-lm") + (version "2.004") + (source (origin + (method url-fetch) + (uri (string-append "http://www.gust.org.pl/projects/e-foundry/" + "latin-modern/download/lm" version "bas.zip")) + (sha256 + (base32 + "0z2s253y751m2ci5aw8nq0sf2kyg9hpimv2gyixkch9d07m2b9wp")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((root (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/"))) + (mkdir-p root) + (with-directory-excursion root + (invoke (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip") + (assoc-ref %build-inputs "source"))) + #t)))) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://www.gust.org.pl/projects/e-foundry/latin-modern/") + (synopsis "Latin Modern family of fonts") + (description "The Latin Modern fonts are derived from the famous Computer +Modern fonts designed by Donald E. Knuth and described in Volume E of his +Computers & Typesetting series.") + ;; The GUST font license (GFL) is legally identical to the LaTeX Project + ;; Public License (LPPL), version 1.3c or later, but comes with an + ;; additional but not legally binding clause. + (license license:lppl1.3c+))) + (define-public texlive-fonts-knuth-lib (package (name "texlive-fonts-knuth-lib") @@ -773,6 +1012,7 @@ symbol fonts.") (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) + (ice-9 match) (srfi srfi-1) (srfi srfi-26)) #:tests? #f ; no tests @@ -781,7 +1021,7 @@ symbol fonts.") (delete 'configure) (replace 'build (lambda* (#:key inputs #:allow-other-keys) - (let ((mf (assoc-ref inputs "texlive-metafont-base")) + (let ((mf (assoc-ref inputs "texlive-union")) (cwd (getcwd))) ;; Make METAFONT reproducible (setenv "SOURCE_DATE_EPOCH" "1") @@ -811,23 +1051,136 @@ symbol fonts.") (getcwd) "/" (basename font ".mf"))))) (find-files "." "[0-9]+\\.mf$")) + + ;; There are no metafont sources for the Euler fonts, so we + ;; convert the afm files instead. + (mkdir "build/euler") + (for-each (lambda (font) + (format #t "converting afm font ~a\n" (basename font ".afm")) + (invoke "afm2tfm" font + (string-append "build/euler/" + (basename font ".tfm")))) + (find-files (assoc-ref inputs "amsfonts-afm") + "\\.afm$")) + + ;; Frustratingly, not all fonts can be created this way. To + ;; generate eufm8.tfm, for example, we first scale down + ;; eufm10.afm to eufm8.pl, and then generate the tfm file from + ;; the pl file. + (with-directory-excursion "build/euler" + (setenv "TEXINPUTS" + (string-append (getcwd) "//:" + (assoc-ref inputs "amsfonts-afm") "//:" + (assoc-ref inputs "texlive-union") "//")) + (for-each (match-lambda + (((target-base target-size) + (source-base source-size)) + (let ((factor (number->string + (truncate/ (* 1000 target-size) + source-size)))) + (invoke "tex" + "-interaction=scrollmode" + (string-append "\\input fontinst.sty " + "\\transformfont{" target-base "}" + "{\\scalefont{" factor "}" + "{\\fromafm{" source-base "}}} " + "\\bye"))) + (invoke "pltotf" + (string-append target-base ".pl") + (string-append target-base ".tfm")) + (delete-file (string-append target-base ".pl")))) + + '((("eufm8" 8) ("eufm10" 10)) + + (("eufb6" 6) ("eufb7" 7)) + (("eufb8" 8) ("eufb10" 10)) + (("eufb9" 9) ("eufb10" 10)) + + (("eufm6" 6) ("eufb7" 7)) + (("eufm9" 9) ("eufb10" 10)) + + (("eurb6" 6) ("eurb7" 7)) + (("eurb8" 8) ("eurb10" 10)) + (("eurb9" 9) ("eurb10" 10)) + + (("eurm6" 6) ("eurm7" 7)) + (("eurm8" 8) ("eurm10" 10)) + (("eurm9" 9) ("eurm10" 10))))) #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (tfm (string-append - out "/share/texmf-dist/fonts/tfm/public/amsfonts")) - (mf (string-append - out "/share/texmf-dist/fonts/source/public/amsfonts"))) - (for-each (cut install-file <> tfm) - (find-files "build" "\\.*")) - (for-each (cut install-file <> mf) - (find-files "." "\\.mf")) - #t)))))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (root (string-append out "/share/texmf-dist/fonts/")) + (pkgs '(("amsfonts-afm" . "afm/public/amsfonts") + ("amsfonts-type1" . "type1/public/amsfonts") + ("amsfonts-map" . "map/dvips/amsfonts")))) + (for-each (match-lambda + ((pkg . dir) + (let ((target (string-append root dir))) + (mkdir-p target) + (copy-recursively (assoc-ref inputs pkg) + target)))) + pkgs) + (copy-recursively (assoc-ref inputs "amsfonts-plain") + (string-append out "/share/texmf-dist/tex/plain/amsfonts")) + (let* ((tfm (string-append root "tfm/public/amsfonts")) + (mf (string-append root "source/public/amsfonts"))) + (copy-recursively "build" tfm) + (for-each (cut install-file <> mf) + (find-files "." "\\.mf")) + #t))))))) (native-inputs - `(("texlive-fonts-cm" ,texlive-fonts-cm) - ("texlive-metafont-base" ,texlive-metafont-base) - ("texlive-bin" ,texlive-bin))) + `(("texlive-union" ,(texlive-union (list texlive-tex-fontinst-base + texlive-fonts-cm + texlive-metafont-base))) + ("amsfonts-plain" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/plain/amsfonts")) + (revision %texlive-revision))) + (file-name (string-append name "-plain-" version "-checkout")) + (sha256 + (base32 + "1hi8c9rkfb6395sxf7fhkr91xygfg8am1hqij9g3h2c7qx3714qp")))) + ("amsfonts-map" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/map/dvips/amsfonts")) + (revision %texlive-revision))) + (file-name (string-append name "-map-" version "-checkout")) + (sha256 + (base32 + "1lrj3bd9ybj4aawzlygc6qvakbrwc5s0mc5n9rpic331frv3axfs")))) + ("amsfonts-type1" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/type1/public/amsfonts")) + (revision %texlive-revision))) + (file-name (string-append name "-type1-" version "-checkout")) + (sha256 + (base32 + "1zfz33vn6gm19njy74n8wmn7sljrimfhwns5z8qqhxqfh1g4qip2")))) + ("amsfonts-afm" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/afm/public/amsfonts")) + (revision %texlive-revision))) + (file-name (string-append name "-afm-" version "-checkout")) + (sha256 + (base32 + "1fifzkaihmjgchnk7dmw0c23k0cz999dxnc78ivmqvgi1dhx0iv8")))))) (home-page "https://www.ctan.org/pkg/amsfonts") (synopsis "TeX fonts from the American Mathematical Society") (description @@ -883,7 +1236,7 @@ individual symbols defined in @code{amssymb.sty}.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0mjgl3gscn3ps29yjambz1j9fg81ynnncb96vpprwx4xsijhsns0")))) + "1xknlb3gcw6jjqh97bhghxi594bzpj1zfzzfsrr9pvr9s1bx7dnf")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -928,7 +1281,7 @@ book).") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1h9pir2hz6i9avc4lrl733p3zf4rpkg8537x1zdbhs91hvhikw9k")))) + "17bqrzzjz16k52sc7ydl4vw7ddy2z3g0p1xsk2c35h1ynq9h3wwm")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -955,15 +1308,8 @@ book).") (getcwd) ":" (getcwd) "/build:" (string-join - (append-map (match-lambda - ((_ . dir) - (find-files dir - (lambda (_ stat) - (eq? 'directory (stat:type stat))) - #:directories? #t - #:stat stat))) - inputs) - ":"))) + (map (match-lambda ((_ . dir) dir)) inputs) + "//:"))) ;; Create an empty texsys.cfg, because latex.ltx wants to include ;; it. This file must exist and it's fine if it's empty. @@ -1002,12 +1348,13 @@ book).") '("dviluatex" "dvilualatex" "luatex" "lualatex")) #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) + (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (target (string-append out "/share/texmf-dist/tex/latex/base")) (web2c (string-append - out "/share/texmf-dist/web2c"))) + out "/share/texmf-dist/web2c")) + (support-files (assoc-ref inputs "texlive-latex-base-support-files"))) (mkdir-p target) (mkdir-p web2c) (for-each delete-file (find-files "." "\\.(log|aux)$")) @@ -1019,6 +1366,30 @@ book).") ;; doesn't have its own format file, we need to copy it. (copy-file "web2c/pdfetex.fmt" (string-append web2c "/pdftex.fmt")) + ;; "source" is missing the support files as per doc/latex/base/manifest.txt. + ;; FIXME: We are probably not packaging this right. + (for-each (lambda (file) + (install-file + (string-append support-files "/" file) + target)) + '("ltxguide.cls" "ltnews.cls" "minimal.cls" "idx.tex" + "lablst.tex" "testpage.tex" "ltxcheck.tex")) + ;; Install configurations + (copy-recursively + (assoc-ref inputs "texlive-latex-latexconfig") + (string-append out "/share/texmf-dist/tex/latex/latexconfig")) + (copy-recursively + (assoc-ref inputs "texlive-generic-config") + (string-append out "/share/texmf-dist/tex/generic/config")) + (copy-recursively + (assoc-ref inputs "texlive-generic-hyphen") + (string-append out "/share/texmf-dist/tex/generic/hyphen")) + (copy-recursively + (assoc-ref inputs "texlive-generic-ruhyphen") + (string-append out "/share/texmf-dist/tex/generic/ruhyphen")) + (copy-recursively + (assoc-ref inputs "texlive-generic-ukrhyph") + (string-append out "/share/texmf-dist/tex/generic/ukrhyph")) #t)))))) (native-inputs `(("texlive-bin" ,texlive-bin) @@ -1028,7 +1399,6 @@ book).") ("texlive-latex-latexconfig" ,(texlive-dir "tex/latex/latexconfig/" "1zb3j49cj8p75yph6c8iysjp7qbdvghwf0mn9j0l7qq3qkbz2xaf")) - ("texlive-generic-hyph-utf8" ,texlive-generic-hyph-utf8) ("texlive-generic-hyphen" ,(texlive-dir "tex/generic/hyphen/" "0xim36wybw2625yd0zwlp9m2c2xrcybw58gl4rih9nkph0wqwwhd")) @@ -1040,11 +1410,25 @@ book).") "1cfwdg2rhbayl3w0x1xqd36d45zbc96f029myp13s7cb6kbmbppv")) ("texlive-generic-config" ,(texlive-dir "tex/generic/config/" - "19vj088p4kkp6xll0141m4kl6ssgdzhs3g10i232khb07aqiag8s")) + "1v90iihy112q93zdpblpdk8zv8rf99fgslsg06s1sxm27zjm9nap")) + ("texlive-latex-base-support-files" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/base")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "18wy8dlcw8adl6jzqwbg54pdwlhs8hilnfvqbw6ikj6y3zhqkj7q")))) ("texlive-tex-plain" ,texlive-tex-plain) ("texlive-fonts-cm" ,texlive-fonts-cm) ("texlive-fonts-latex" ,texlive-fonts-latex) ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib))) + (propagated-inputs + `(("texlive-generic-hyph-utf8" ,texlive-generic-hyph-utf8))) (home-page "https://www.ctan.org/pkg/latex-base") (synopsis "Base sources of LaTeX") (description @@ -1155,9 +1539,7 @@ users, via its Plain TeX version.)") (build-system texlive-build-system) (arguments '(#:tex-directory "latex/fancyvrb" - ;; We exclude "fvrb-ex" to avoid a dependency on texlive-luaotfload and - ;; thus texlive-luatex-lualibs. - #:build-targets '("fancyvrb.ins"))) + #:tex-format "latex")) (home-page "https://www.ctan.org/pkg/fancyvrb") (synopsis "Sophisticated verbatim text") (description @@ -1179,7 +1561,7 @@ verbatim source).") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "07azyn0b1s49vbdlr6dmygrminxp72ndl24j1091hiiccvrjq3xc")))) + "0nlfhn55ax89rcvpkrl9570671b62kcr4c9l5ch3w5zw9vmi00dz")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/graphics" @@ -1228,7 +1610,7 @@ verbatim source).") "-checkout")) (sha256 (base32 - "0gi4qv6378nl84s8n1yx3hjqvv7r4lza7hpbymbl5rzwgw8qrnyb")))))) + "17zpcgrfsr29g1dkz9np1qi63kjv7gb12rg979c6dai6qksbr3vq")))))) (home-page "https://www.ctan.org/pkg/latex-graphics") (synopsis "LaTeX standard graphics bundle") (description @@ -1304,7 +1686,7 @@ pdf and HTML backends. The package is distributed with the @code{backref} and (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0aswvsxgsn709xmvpcg50d2xl7vcy1ckdxb9c1cligqqfjjvviqf")))) + "1m9fg8ddhpsl1212igr9a9fmj012lv780aghjn6fpidg2wqrffmn")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/oberdiek" @@ -1335,7 +1717,7 @@ arrows; record information about document class(es) used; and many more.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "052a0pch2k5zls5jlay9xxcf93rw3i60a2x28y3ip3rhbsv3xgiz")))) + "0vj7h1fgf1396h4qjdc2m07y08i54gbbfrxl8y327cn3r1n093s6")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/tools" @@ -1401,7 +1783,7 @@ of file names.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0r0wfk594j8wkdqhh21haimwsfq8x5jch4ldm21hkzk5dnmvpbg6")))) + "0p3fsxap1ilwjz356aq4s5ygwvdscis8bh93g8klf8mhrd8cr2jy")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/l3kernel")) @@ -1425,10 +1807,13 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "16jplkvzdysfssijq9l051nsks65c2nrarsl17k8gjhc28yznj8y")))) + "0pyx0hffiyss363vv7fkrcdiaf7p099xnq0mngzqc7v8v9q849hs")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/l3packages" + ;; build-targets must be specified manually since they are in + ;; sub-directories. + #:build-targets '("l3keys2e.ins" "xparse.ins" "xfrac.ins" "xfp.ins" "xtemplate.ins") #:phases (modify-phases %standard-phases ;; All package sources are in sub-directories, so we need to add them @@ -1441,9 +1826,13 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.") cwd "/xparse:" cwd "/xfrac:" cwd "/xfp:" - cwd "/xtemplate"))) - #t))))) - (inputs + cwd "/xtemplate" + ;; The terminating ":" is required to include the + ;; l3kernel input as well. + ":"))) + #t))) + )) + (propagated-inputs `(("texlive-latex-l3kernel" ,texlive-latex-l3kernel))) (home-page "https://www.ctan.org/pkg/l3packages") (synopsis "High-level LaTeX3 concepts") @@ -1473,13 +1862,40 @@ programming tools and kernel sup­port. Packages provided in this release are: (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1rx43y5xmjqvc27pjdnmqwp4pcw3czcfd6nfpmzc1gnqfl1hlc0q")))) + "1p0mkn6iywl0k4m9cx3hnhylpi499inisff3f72pcf349baqsnvq")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/fontspec" - #:build-targets '("fontspec.dtx"))) - (inputs - `(("texlive-latex-l3kernel" ,texlive-latex-l3kernel))) + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-default-fontspec.cfg + (lambda* (#:key outputs #:allow-other-keys) + (with-output-to-file + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/tex/latex/fontspec/fontspec.cfg") + (lambda _ + (display "\ +%%% FONTSPEC.CFG %%% +% +% This configuration file sets up TeX Ligatures by default for all fonts loaded +% with `\\setmainfont` and `\\setsansfont`. +% +% In addition, `\\setmonofont` has default features to enforce \"monospace\" +% settings with regard to space stretchability and shrinkability. + +\\defaultfontfeatures + [\\rmfamily,\\sffamily] + {Ligatures=TeX} + +\\defaultfontfeatures + [\\ttfamily] + {WordSpace={1,0,0}, + HyphenChar=None, + PunctuationSpace=WordSpace} +"))) + #t))))) + (propagated-inputs + `(("texlive-latex-l3packages" ,texlive-latex-l3packages))) (home-page "https://www.ctan.org/pkg/fontspec") (synopsis "Advanced font selection in XeLaTeX and LuaLaTeX") (description @@ -1527,6 +1943,98 @@ this bundle for use independent of ConTeXt.") ;; GPL version 2 only (license license:gpl2))) +(define-public texlive-luatex-luaotfload + (package + (name "texlive-luatex-luaotfload") + (version "2.8-fix-2") + ;; The release tarball does not contain all source files. + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lualatex/luaotfload.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0l5l7iq3dxcxl65qaghcpjg27yd9iw1sxa8pnd7xlvlm09dhfdnf")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "DESTDIR=" + (assoc-ref %outputs "out") + "/share/texmf-dist") + "all") + #:parallel-build? #f ; not supported + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "doc/Makefile" + (("rst2man") "rst2man.py") + ;; Don't build the PDF. This requires more of LaTeX. + (("\\$\\(DOCPDF\\)") "")) + + (substitute* "Makefile" + ;; We don't build the PDF, so don't attempt to install it. + (("cp \\$\\(RESOURCES\\) \\$\\(DOCPDF\\)") + "cp $(RESOURCES)") + (("= \\$\\(DOCPDF\\)") "= ") + ;; Fix name of fontloader file + (("^LOADER.*= \\$\\(BUILDDIR\\)/fontloader-\\$\\(shell date \\+%F\\).lua") + "LOADER = $(BUILDDIR)/fontloader.lua")) + + (mkdir "build") + + ;; Don't download this file. + (copy-file (assoc-ref inputs "glyphlist") + "build/glyphlist.txt") + + ;; Don't use git + (let ((notes + `((committer . "Philipp Gesang ") + (description . ,version) + (loader . "fontloader.lua") + (revision . "ad480924393fffa2896156e1a32c22f5c61120dd") + (timestamp . "2019-01-01 00:00:00 +0000")))) + (substitute* "scripts/mkstatus" + (("local notes.*=.*") + (string-append "local notes = {" + (string-join + (map (lambda (entry) + (format "[\"~a\"]=\"~a\"," + (symbol->string (car entry)) + (cdr entry))) + notes)) + "}")))) + #t))))) + (native-inputs + `(("zip" ,zip) + ("unzip" ,unzip) + ("graphviz" ,graphviz) + ("lualatex" ,(texlive-union (list texlive-luatex-lualibs + texlive-context-base))) + ("python-docutils" ,python-docutils) + ("glyphlist" + ,(origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/adobe-type-tools/" + "agl-aglfn/b2a04cb906f9257cc06a2fe0ad4b3d663bc02136/" + "glyphlist.txt")) + (sha256 + (base32 "1s6svfw23rqzdvflv8frgd4xrwvrmsj8szwzqgcd39dp9rpjafjp")))))) + (propagated-inputs + `(("texlive-luatex-lualibs" ,texlive-luatex-lualibs))) + (home-page "https://github.com/lualatex/luaotfload") + (synopsis "OpenType font loader for LuaTeX") + (description + "Luaotfload is an adaptation of the ConTeXt font loading system for the +Plain and LaTeX formats. It allows OpenType fonts to be loaded with font +features accessible using an extended font request syntax while providing +compatibilitywith XeTeX. By indexing metadata in a database it facilitates +loading fonts by their proper names instead of file names.") + ;; GPL version 2 only + (license license:gpl2))) + (define-public texlive-latex-amsmath (package (name "texlive-latex-amsmath") @@ -1537,7 +2045,7 @@ this bundle for use independent of ConTeXt.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "178ywjpdlv78qmfzqdyn6gy14620zjsn2q9wap76fbr9s4hw6dba")))) + "0arvk7gn32mshnfdad5qkgf3i1arxq77k3vq7wnpm4nwnrzclxal")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/amsmath")) (home-page "https://www.ctan.org/pkg/amsmath") @@ -1566,7 +2074,7 @@ definitions.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0jmcr37mcdi7drczppvr6lmz5d5yd9m67ii79gp2nglg1xpw934j")))) + "0c2j9xh4qpi0x1vvcxdjxq6say0zhyr569fryi5cmhp8bclh4kca")))) (build-system texlive-build-system) (arguments `(#:tex-directory "latex/amscls")) @@ -1590,7 +2098,7 @@ distribution.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1n3i5adsyy7jw0imnzrm2i8wkf73i3mjk9h3ic8cb9cd19i4r9r3")))) + "0yhlfiz3fjc8jd46f1zrjj4jig48l8rrzh8cmd8ammml8z9a01z6")))) (build-system texlive-build-system) (arguments '(#:tex-directory "generic/babel" @@ -1637,6 +2145,29 @@ for British English and Australian text, and default (\"american\") patterns for Canadian and USA text.") (license license:lppl1.3+))) +(define-public texlive-generic-babel-german + (package + (name "texlive-generic-babel-german") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (texlive-ref "generic" "babel-german")) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0h47s67gnhdaxfgbf8pirp5vw4z6rrhxl8zav803yjxka0096i3y")))) + (build-system texlive-build-system) + (arguments '(#:tex-directory "generic/babel-german")) + (home-page "https://www.ctan.org/pkg/babel-german") + (synopsis "Babel support for German") + (description + "This package provides the language definition file for support of German +in @code{babel}. It provides all the necessary macros, definitions and +settings to typeset German documents. The bundle includes support for the +traditional and reformed German orthography as well as for the Austrian and +Swiss varieties of German.") + (license license:lppl1.3+))) + (define-public texlive-latex-cyrillic (package (name "texlive-latex-cyrillic") @@ -1647,7 +2178,7 @@ for Canadian and USA text.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1mdhl35hwas68ki56qqngzar37dwv4mm64l2canihr255bz34lbv")))) + "083xbwg7hrnlv47fkwvz8yjb830bhxx7y0mq7z7nz2f96y2ldr6b")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/cyrillic")) @@ -1685,31 +2216,59 @@ font metrics. The bundle as a whole is part of the LaTeX required set of packages.") (license license:lppl1.2+))) -(define-public texlive-union +;; For user profiles +(define-public texlive-base + (let ((default-packages + (list texlive-bin + texlive-dvips + texlive-fontname + texlive-fonts-cm + texlive-fonts-latex + texlive-metafont-base + texlive-latex-base + ;; LaTeX packages from the "required" set. + texlive-latex-amsmath + texlive-latex-amscls + texlive-latex-babel + texlive-generic-babel-english + texlive-latex-cyrillic + texlive-latex-graphics + texlive-latex-psnfss + texlive-latex-tools))) + (package + (name "texlive-base") + (version (number->string %texlive-revision)) + (source #f) + (build-system trivial-build-system) + (arguments + '(#:builder + (begin (mkdir (assoc-ref %outputs "out"))))) + (propagated-inputs + (map (lambda (package) + (list (package-name package) package)) + default-packages)) + (home-page (package-home-page texlive-bin)) + (synopsis "TeX Live base packages") + (description "This is a very limited subset of the TeX Live distribution. +It includes little more than the required set of LaTeX packages.") + (license (fold (lambda (package result) + (match (package-license package) + ((lst ...) + (append lst result)) + ((? license:license? license) + (cons license result)))) + '() + default-packages))))) + +;; For use in package definitions only +(define-public texlive-union (lambda* (#:optional (packages '())) "Return 'texlive-union' package which is a union of PACKAGES and the standard LaTeX packages." - (let ((default-packages - (list texlive-bin - texlive-dvips - texlive-fontname - texlive-fonts-cm - texlive-fonts-latex - texlive-metafont-base - texlive-latex-base - ;; LaTeX packages from the "required" set. - texlive-latex-amsmath - texlive-latex-amscls - texlive-latex-babel - texlive-generic-babel-english - texlive-latex-cyrillic - texlive-latex-graphics - texlive-latex-psnfss - texlive-latex-tools))) - (package + (let ((default-packages (match (package-propagated-inputs texlive-base) + (((labels packages) ...) packages)))) + (package (inherit texlive-base) (name "texlive-union") - (version (number->string %texlive-revision)) - (source #f) (build-system trivial-build-system) (arguments '(#:modules ((guix build union) @@ -1751,8 +2310,8 @@ standard LaTeX packages." "/bin")) (for-each (cut wrap-program <> - `("TEXMFCNF" ":" = (,(dirname texmf.cnf))) - `("TEXMF" ":" = (,(string-append out "/share/texmf-dist")))) + `("TEXMFCNF" ":" suffix (,(dirname texmf.cnf))) + `("TEXMF" ":" suffix (,(string-append out "/share/texmf-dist")))) (find-files (string-append out "/bin") ".*")) #t)))) (inputs @@ -1773,6 +2332,7 @@ distribution.") '() (append default-packages packages))))))) +;; For use in package definitions only (define-public texlive-tiny (package (inherit (texlive-union)) @@ -1881,6 +2441,13 @@ ipsum\" text, see the @code{lipsum} package).") (add-after 'unpack 'remove-generated-file (lambda _ (delete-file "dinbrief.drv") + #t)) + (add-after 'unpack 'fix-encoding-error + (lambda _ + (with-fluids ((%default-port-encoding "ISO-8859-1")) + (substitute* "dinbrief.dtx" + (("zur Verf.+ung. In der Pr\"aambel") + "zur Verf\"ung. In der Pr\"aambel"))) #t))))) (home-page "https://www.ctan.org/pkg/dinbrief") (synopsis "German letter DIN style") @@ -1951,7 +2518,7 @@ define a new author interface to creating new environments.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0pvmhsd4xmpil0m3c7qcgwilbk266mlkzv03g0jr8r3zd8jxlyzq")))) + "1ib5xdwcj5wk23wgk41m2hdcjr1dzrs4l3wwnpink9mlapz12wjs")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/eqparbox")) (home-page "https://www.ctan.org/pkg/eqparbox") @@ -2049,7 +2616,7 @@ but non-expandable ones.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "11gvvjvmdfs9b7mm19yf80zwkx49jqcbq6g8qb9y5ns1r1qvnixp")))) + "157pplavvm2z97b3jl4x41w11k6q9wgy074mfg0dwmsx5lm328jy")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/ifplatform")) (home-page "https://www.ctan.org/pkg/ifplatform") @@ -2113,34 +2680,70 @@ with a user specified LaTeX construction, properly aligned, scaled, and/or rotated.") (license (license:fsf-free "file://psfrag.dtx")))) +(define-public texlive-latex-xkeyval + (package + (name "texlive-latex-xkeyval") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (texlive-ref "latex" "xkeyval")) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0wancavix39j240pd8m9cgmwsijwx6jd6n54v8wg0x2rk5m44myp")))) + (build-system texlive-build-system) + (arguments '(#:tex-directory "latex/xkeyval")) + (home-page "https://www.ctan.org/pkg/xkeyval") + (synopsis "Macros for defining and setting keys") + (description + "This package is an extension of the @code{keyval} package and offers +more flexible macros for defining and setting keys. The package provides a +pointer and a preset system. Furthermore, it supplies macros to allow class +and package options to contain options of the @code{key=value} form. A LaTeX +kernel patch is provided to avoid premature expansions of macros in class or +package options. A specialized system for setting @code{PSTricks} keys is +provided by the @code{pst-xkey} package.") + (license license:lppl1.3+))) + (define-public texlive-latex-pstool (package (name "texlive-latex-pstool") (version (number->string %texlive-revision)) (source (origin (method svn-fetch) - (uri (texlive-ref "latex" "pstool")) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/pstool")) + (revision %texlive-revision))) (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1kwlk1x67lad4xb7gpkxqgdlxwpi6nvq1r9wika7m92abmyf18h3")))) - (build-system texlive-build-system) + "1h816jain8c9nky75kk8pmmwj5b4yf9dpqvdvi2l6jhfj5iqkzr8")))) + (build-system trivial-build-system) (arguments - '(#:tex-directory "latex/pstool" - #:tex-format "latex")) - (inputs - `(("texlive-fonts-cm" ,texlive-fonts-cm) - ("texlive-latex-filecontents" ,texlive-latex-filecontents))) + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/pstool"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) (propagated-inputs - `(("texlive-latex-bigfoot" ,texlive-latex-bigfoot) + `(("texlive-latex-bigfoot" ,texlive-latex-bigfoot) ; for suffix ("texlive-latex-filemod" ,texlive-latex-filemod) ("texlive-latex-graphics" ,texlive-latex-graphics) ("texlive-latex-ifplatform" ,texlive-latex-ifplatform) + ("texlive-latex-l3kernel" ,texlive-latex-l3kernel) ; for expl3 ("texlive-latex-oberdiek" ,texlive-latex-oberdiek) ("texlive-latex-psfrag" ,texlive-latex-psfrag) - ("texlive-latex-trimspaces" ,texlive-latex-trimspaces))) + ("texlive-latex-tools" ,texlive-latex-tools) ; for shellesc + ("texlive-latex-trimspaces" ,texlive-latex-trimspaces) + ("texlive-latex-xkeyval" ,texlive-latex-xkeyval))) (home-page "https://www.ctan.org/pkg/pstool") - (synopsis "Process PostScript graphisc within pdfLaTeX documents") + (synopsis "Process PostScript graphics within pdfLaTeX documents") (description "This is a package for processing PostScript graphics with @code{psfrag} labels within pdfLaTeX documents. Every graphic is compiled individually, @@ -2163,8 +2766,17 @@ re-processing.") (sha256 (base32 "0y4i651b75y6006n03x8n86bsqvjsailvvz9bhzy51dzsznqidq0")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/seminar")) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/seminar"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) (home-page "https://www.ctan.org/pkg/seminar") (synopsis "Make overhead slides") ;; TODO: This package may need fancybox and xcomment at runtime. @@ -2243,6 +2855,44 @@ space-stripped macros.") to something that's not a float.") (license license:lppl))) +(define-public texlive-latex-doi + (package + (name "texlive-latex-doi") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/doi")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0378rdmrgr2lzbfi4qqy4dfpj5im20diyd8z8b9m4mlg05r7wgnb")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/doi"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/doi") + (synopsis "Create correct hyperlinks for DOI numbers") + (description + "You can hyperlink DOI numbers to doi.org. However, some publishers have +elected to use nasty characters in their DOI numbering scheme (@code{<}, +@code{>}, @code{_} and @code{;} have all been spotted). This will either +upset LaTeX, or your PDF reader. This package contains a single user-level +command @code{\\doi{}}, which takes a DOI number, and creates a correct +hyperlink to the target of the DOI.") + ;; Any version of the LPPL. + (license license:lppl1.3+))) + (define-public texlive-latex-etoolbox (package (name "texlive-latex-etoolbox") @@ -2257,7 +2907,7 @@ to something that's not a float.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0016bscnpima9krrg2569mva78xzwnygzlvg87dznsm6gf8g589v")))) + "1agmq6bf8wzcd77n20ng8bl4kh69cg5f6sjniii7bcw4llhd3nc8")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -2439,7 +3089,7 @@ BibLaTeX, and is considered experimental.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1r2kfcwclg33yk5z8mvlagwxj7nr1mc3w4bdpmhrwv6dn8mrbvw8")))) + "0yw6bjfgsli3s1dldsgb7mkr7lnk329cgdjbgs8z2xn59pmmdsn4")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/geometry")) (home-page "https://www.ctan.org/pkg/geometry") @@ -2488,7 +3138,7 @@ array environments; verbatim handling; and syntax diagrams.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "09mvszd5qgqg4cfglpj5qxyzjz190ppb9p8gnsnjydwp1akvhayf")))) + "03ma58z3ypsbp7zgkzb1ylpn2ygr27cxzkf042ns0rif4g8s491f")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/polyglossia")) (home-page "https://www.ctan.org/pkg/polyglossia") @@ -2534,7 +3184,7 @@ situations where longtable has problems.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "09zj2w3lx0y6i2syfjjgizahf86z301dw8p37ln6syfhqhzqdz46")))) + "06cf821y1j7jdg93pb41ayigrfwgn0y49d7w1025zlijjxi6bvjp")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -2651,7 +3301,7 @@ command.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1ik4m8pzfsn1grlda6fniqqfwmgj7rfxwg63jdw0p0qv002vc7ik")))) + "05x15ilynqrl448h8l6qiraygamdldlngz89a2bw7kg74fym14ch")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/changebar")) (home-page "https://www.ctan.org/pkg/changebar") @@ -2767,7 +3417,7 @@ floats, center, flushleft, and flushright, lists, and pages.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "04h430agf8aj7ziwyb46xpk95c605rjk1wzhr63m6ylipihidlgw")))) + "1xsnzx7vgdfh9zh2m7bjz6bgdpxsgb1kyc19p50vhs34x5nbgsnr")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -3185,7 +3835,7 @@ entry at the \"natural\" width of its text.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0m29q9qdb00558b7g2i7iw6w62n5s46yx81j8m99qkv77magk4fm")))) + "1rpx4ibjncj5416rg19v0xjbj3z9avhfdfn2gzp8r8sz9vz25c6g")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -3251,7 +3901,7 @@ designed class) helps alleviate this untidiness.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "06p5smfq66559ppdnmkl3hp8534x84ywbscimsiir4gllpya3i9h")))) + "0s4izcah7im67889qz4d26pcfpasmm35sj1rw4ragkkdk3rlbbbd")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/pdfpages")) (home-page "https://www.ctan.org/pkg/pdfpages") @@ -3665,7 +4315,7 @@ OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "03nvjddffiz796wll6axzmgfvynyciy2mqamv20qx252w71vwkwd")))) + "0sf18pc6chgy26p9bxxn44xcqhzjrfb53jxjr2y7l3jb6xllhblq")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -3845,7 +4495,7 @@ package of that name now exists.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0j6fff6q0ca96nwfdgay2jm55792z4q9aa0rczmiw2qccyg5n2dv")))) + "1hpsk4yp08qvbl43kqiv0hhwxv3gcqqxcpahyv6ch2b38pbj4bh6")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/preview" @@ -3912,10 +4562,27 @@ e-TeX.") (begin (use-modules (guix build utils)) (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/pdftex"))) + "/share/texmf-dist/tex/generic/pdftex")) + (target-map (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/fonts/map/pdftex"))) (mkdir-p target) (copy-recursively (assoc-ref %build-inputs "source") target) + (mkdir-p target-map) + (copy-recursively (assoc-ref %build-inputs "pdftex-map") target-map) #t)))) + (native-inputs + `(("pdftex-map" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/map/pdftex")) + (revision %texlive-revision))) + (file-name (string-append name "-map-" version "-checkout")) + (sha256 + (base32 + "18jvcm0vwpg6wwzijvnb92xx78la45kkh71k6l44425krp2vnwm0")))))) (home-page "https://www.ctan.org/pkg/pdftex") (synopsis "TeX extension for direct creation of PDF") (description @@ -3926,7 +4593,7 @@ directly generate PDF documents instead of DVI.") (define texlive-texmf (package (name "texlive-texmf") - (version "2017") + (version "20180414") (source texlive-texmf-src) (build-system gnu-build-system) (inputs @@ -3948,6 +4615,11 @@ directly generate PDF documents instead of DVI.") #:phases (modify-phases (map (cut assq <> %standard-phases) '(set-paths unpack patch-source-shebangs)) + (add-after 'unpack 'unset-environment-variables + (lambda _ + (unsetenv "TEXMF") + (unsetenv "TEXMFCNF") + #t)) (add-after 'patch-source-shebangs 'install (lambda* (#:key outputs #:allow-other-keys) (let ((share (string-append (assoc-ref outputs "out") "/share"))) @@ -3998,7 +4670,7 @@ This package contains the complete tree of texmf-dist data.") (define-public texlive (package (name "texlive") - (version "2017") + (version "20180414") (source #f) (build-system trivial-build-system) (inputs `(("bash" ,bash) ; for wrap-program @@ -4091,7 +4763,7 @@ This package contains the complete TeX Live distribution.") ("perl-config-autoconf" ,perl-config-autoconf) ("perl-extutils-libbuilder" ,perl-extutils-libbuilder) ("perl-module-build" ,perl-module-build))) - (home-page "http://search.cpan.org/dist/Text-BibTeX") + (home-page "https://metacpan.org/release/Text-BibTeX") (synopsis "Interface to read and parse BibTeX files") (description "@code{Text::BibTeX} is a Perl library for reading, parsing, and processing BibTeX files. @code{Text::BibTeX} gives you access to the data @@ -4103,15 +4775,19 @@ values (strings, macros, or numbers) pasted together.") (define-public biber (package (name "biber") - (version "2.7") + (version "2.12") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/plk/biber/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/plk/biber/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + ;; TODO: Patch awaiting inclusion upstream (see: + ;; https://github.com/plk/biber/issues/239). + (patches (search-patches "biber-fix-encoding-write.patch")) (sha256 (base32 - "17wd80jg98qyddhvz4cin8779ycvppaf2va77r1lyvymjz6w9bx0")))) + "1g1hi6zvf2hmrjly1sidjaxy5440gfqm4p7p3n7kayshnjsmlskx")))) (build-system perl-build-system) (arguments `(#:phases @@ -4133,7 +4809,7 @@ values (strings, macros, or numbers) pasted together.") ("perl-data-uniqid" ,perl-data-uniqid) ("perl-datetime-format-builder" ,perl-datetime-format-builder) ("perl-datetime-calendar-julian" ,perl-datetime-calendar-julian) - ("perl-file-slurp" ,perl-file-slurp) + ("perl-file-slurper" ,perl-file-slurper) ("perl-ipc-cmd" ,perl-ipc-cmd) ("perl-ipc-run3" ,perl-ipc-run3) ("perl-list-allutils" ,perl-list-allutils) @@ -4213,14 +4889,14 @@ PDF documents.") (define-public texmaker (package (name "texmaker") - (version "4.5") + (version "5.0.2") (source (origin (method url-fetch) (uri (string-append "http://www.xm1math.net/texmaker/texmaker-" version ".tar.bz2")) (sha256 (base32 - "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c")))) + "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9")))) (build-system gnu-build-system) (arguments `(#:phases @@ -4231,9 +4907,9 @@ PDF documents.") (let ((out (assoc-ref outputs "out"))) (invoke "qmake" (string-append "PREFIX=" out) - (string-append "DESKTOPDIR=" out - "/share/applications") + (string-append "DESKTOPDIR=" out "/share/applications") (string-append "ICONDIR=" out "/share/pixmaps") + (string-append "METAINFODIR=" out "/share/metainfo") "texmaker.pro"))))))) (inputs `(("poppler-qt5" ,poppler-qt5) @@ -4376,3 +5052,827 @@ cross-references, bibliographies, indexes, etc. It is very good for working with documents of any length in which the usual processing abilities are required: automatic sectioning and pagination, spell checking and so forth.") (license license:gpl2+))) + +(define-public texlive-latex-media9 + (package + (name "texlive-latex-media9") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/media9")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0lhb2h5hxjq9alpk4r3gvg21pwyifs4ah6hqzp92k55mkp1xv73j")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/media9"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/media9") + (synopsis "Multimedia inclusion package with Adobe Reader-9/X compatibility") + (description + "The package provides an interface to embed interactive Flash (SWF) and 3D +objects (Adobe U3D & PRC), as well as video and sound files or streams in the +popular MP4, FLV and MP3 formats into PDF documents with Acrobat-9/X +compatibility. Playback of multimedia files uses the built-in Flash Player of +Adobe Reader and does, therefore, not depend on external plug-ins. Flash Player +supports the efficient H.264 codec for video compression. + +The package is based on the RichMedia Annotation, an Adobe addition to the PDF +specification. It replaces the now obsolete @code{movie15} package.") + (license license:lppl))) + +(define-public texlive-latex-ocgx2 + (package + (name "texlive-latex-ocgx2") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/ocgx2")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0zp00jg058djx8xp0xqwas92y3j97clkyd8z6pqr890yqy06myqb")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/ogcx2"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/ocgx2") + (synopsis "Provide OCG (Optional Content Groups) support within a PDF document") + (description + "This package provides OCG (Optional Content Groups) support within a PDF +document. + +It re-implements the functionality of the @code{ocg}, @code{ocgx}, and +@code{ocg-p} packages and adds support for all known engines and back-ends +including: + +@itemize +@item LaTeX → dvips → @code{ps2pdf}/Distiller +@item (Xe)LaTeX(x) → @code{dvipdfmx} +@item pdfLaTeX and LuaLaTeX . +@end itemize + +It also ensures compatibility with the @code{media9} and @code{animate} packages.") + (license license:lppl))) + +(define-public texlive-latex-ms + (package + (name "texlive-latex-ms") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (texlive-ref "latex" "ms")) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0m4wx3yjb5al1qsv995z8fii8xxy96mcfihbnlx43lpgayiwz35s")))) + (build-system texlive-build-system) + (arguments + '(#:tex-directory "latex/ms" + #:tex-format "latex")) + (home-page "https://ctan.org/pkg/ms") + (synopsis "Various LATEX packages by Martin Schröder") + (description + "A bundle of LATEX packages by Martin Schröder; the collection comprises: + +@itemize +@item @command{count1to}, make use of fixed TEX counters; +@item @command{everysel}, set commands to execute every time a font is selected; +@item @command{everyshi}, set commands to execute whenever a page is shipped out; +@item @command{multitoc}, typeset the table of contents in multiple columns; +@item @command{prelim2e}, mark typeset pages as preliminary; and +@item @command{ragged2e}, typeset ragged text and allow hyphenation. +@end itemize\n") + (license license:lppl1.3c+))) + +(define-public texlive-latex-needspace + (package + (name "texlive-latex-needspace") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (texlive-ref "latex" "needspace")) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0kw80f5jh4gdpa2ka815abza3gr5z8b929w0745vrlc59pl0017y")))) + (build-system texlive-build-system) + (arguments + '(#:tex-directory "latex/needspace" + #:tex-format "latex")) + (inputs + `(("texlive-latex-filecontents" ,texlive-latex-filecontents))) + (home-page "https://www.ctan.org/pkg/needspace") + (synopsis "Insert pagebreak if not enough space") + (description + "Provides commands to disable pagebreaking within a given vertical +space. If there is not enough space between the command and the bottom of the +page, a new page will be started.") + (license license:lppl))) + +(define-public texlive-latex-changepage + (package + (name "texlive-latex-changepage") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (texlive-ref "latex" "changepage")) + (sha256 + (base32 + "1rpw8xg5p4jsyh236jma9dz3l29wjx4062f154b3wak5yjcxyxyb")))) + (build-system texlive-build-system) + (arguments + '(#:tex-directory "latex/changepage" + #:tex-format "latex")) + (inputs + `(("texlive-latex-filecontents" ,texlive-latex-filecontents))) + (home-page "https://www.ctan.org/pkg/changepage") + (synopsis "Margin adjustment and detection of odd/even pages") + (description + "The package provides commands to change the page layout in the middle of +a document, and to robustly check for typesetting on odd or even pages. +Instructions for use are at the end of the file. The package is an extraction +of code from the @code{memoir} class, whose user interface it shares.") + (license license:lppl1.3+))) + +(define-public texlive-latex-eukdate + (package + (name "texlive-latex-eukdate") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/eukdate")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "18xan116l8w47v560bkw6nbhkrml7g04xrlzk3jrpc7qsyf3n5fz")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/eukdate"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/eukdate") + (synopsis "UK format dates, with weekday") + (description + "The package is used to change the format of @code{\\today}’s date, +including the weekday, e.g., \"Saturday, 26 June 2008\", the 'UK format', which +is preferred in many parts of the world, as distinct from that which is used in +@code{\\maketitle} of the article class, \"June 26, 2008\", the 'US format'.") + (license license:lppl))) + +(define-public texlive-generic-ulem + (package + (name "texlive-generic-ulem") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/generic/ulem")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1rzdniqq9zk39w8ch8ylx3ywh2mj87s4ivchrsk2b8nx06jyn797")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/generic/ulem"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/ulem") + (synopsis "Underline text in TeX") + (description + "The package provides an @code{\\ul} (underline) command which will break +over line ends; this technique may be used to replace @code{\\em} (both in that +form and as the @code{\\emph} command), so as to make output look as if it comes +from a typewriter. The package also offers double and wavy underlining, and +striking out (line through words) and crossing out (/// over words).") + (license license:lppl1.3c+))) + +(define-public texlive-latex-pgf + (package + (name "texlive-latex-pgf") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/pgf")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1dq8p10pz8wn0vx412m7d7d5gj1syxly3yqdqvf7lv2xl8zndn5h")))) + (build-system trivial-build-system) + (native-inputs + `(("texlive-latex-pgf-generic" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/generic/pgf")) + (revision %texlive-revision))) + (file-name (string-append "texlive-latex-pgf-generic" version "-checkout")) + (sha256 + (base32 + "0xkxw26sjzr5npjpzpr28yygwdbhzpdd0hsk80gjpidhcxmz393i")))))) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target-generic (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/generic/pgf")) + (target-latex (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/pgf"))) + (mkdir-p target-generic) + (mkdir-p target-latex) + (copy-recursively (assoc-ref %build-inputs "texlive-latex-pgf-generic") target-generic) + (copy-recursively (assoc-ref %build-inputs "source") target-latex) + #t)))) + (home-page "https://www.ctan.org/pkg/tikz") + (synopsis "Create PostScript and PDF graphics in TeX") + (description + "PGF is a macro package for creating graphics. It is platform- and +format-independent and works together with the most important TeX backend +drivers, including pdfTeX and dvips. It comes with a user-friendly syntax layer +called TikZ. + +Its usage is similar to pstricks and the standard picture environment. PGF +works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt. Unlike pstricks, it can +produce either PostScript or PDF output.") + (license license:lppl1.3c+))) + +(define-public texlive-latex-koma-script + (package + (name "texlive-latex-koma-script") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/koma-script")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0nqwf0sr4mf3v9gqa6apv6ml2xhcdwax0vgyf12a672g7rpdyvgm")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((root (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/")) + (pkgs '(("source" . "tex/latex/koma-script")))) + (for-each (match-lambda + ((pkg . dir) + (let ((target (string-append root dir))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs pkg) + target)))) + pkgs) + #t)))) + (home-page "https://www.ctan.org/pkg/koma-script") + (synopsis "Bundle of versatile classes and packages") + (description + "The KOMA-Script bundle provides replacements for the article, report, and +book classes with emphasis on typography and versatility. There is also a +letter class. + +The bundle also offers: + +@itemize +@item a package for calculating type areas in the way laid down by the +typographer Jan Tschichold, +@item packages for easily changing and defining page styles, +@item a package scrdate for getting not only the current date but also the name +of the day, and +@item a package scrtime for getting the current time. +@end itemize + +All these packages may be used not only with KOMA-Script classes but also with +the standard classes. + +Since every package has its own version number, the version number quoted only +refers to the version of scrbook, scrreprt, scrartcl, scrlttr2 and +typearea (which are the main parts of the bundle).") + (license license:lppl1.3+))) + +(define-public texlive-generic-listofitems + (package + (name "texlive-generic-listofitems") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/generic/listofitems")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0hs28fc0v2l92ad9las9b8xcckyrdrwmyhcx1yzmbr6s7s6nvsx8")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/generic/listofitems"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/listofitems") + (synopsis "Grab items in lists using user-specified seperation character") + (description + "This package allows one to capture all the items of a list, for which +the parsing character has been selected by the user, and to access any of +these items with a simple syntax.") + (license license:lppl1.3c+))) + +(define-public texlive-latex-readarray + (package + (name "texlive-latex-readarray") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/readarray")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0c53k180ivn1n7fz3ngvd2w1i5dw3kxml0n64vhki88xsylz7lxp")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/readarray"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (propagated-inputs + `(("texlive-generic-listofitems" ,texlive-generic-listofitems))) + (home-page "https://www.ctan.org/pkg/readarray") + (synopsis "Read, store and recall array-formatted data") + (description + "This package allows the user to input formatted data into elements of a +2-D or 3-D array and to recall that data at will by individual cell number. +The data can be but need not be numerical in nature. It can be, for example, +formatted text.") + (license license:lppl1.3))) + +(define-public texlive-latex-verbatimbox + (package + (name "texlive-latex-verbatimbox") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/verbatimbox")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0qh1cgvfs463zsi2pjg490gj0mkjfdpfc381j10cbb5la304psna")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/verbatimbox"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (propagated-inputs + `(("texlive-latex-readarray" ,texlive-latex-readarray))) + (home-page "https://www.ctan.org/pkg/verbatimbox") + (synopsis "Deposit verbatim text in a box") + (description + "The package provides a @code{verbbox} environment to place its contents +into a globally available box, or into a box specified by the user. The +global box may then be used in a variety of situations (for example, providing +a replica of the @code{boxedverbatim} environment itself). A valuable use is +in places where the standard @code{verbatim} environment (which is based on a +@code{trivlist}) may not appear.") + (license license:lppl1.3+))) + +(define-public texlive-latex-examplep + (package + (name "texlive-latex-examplep") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/examplep")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0fsvvmz68ij0zwfzrny6x13d92grxr4ap59lxgah4smbkccd6s27")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/examplep"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/examplep") + (synopsis "Verbatim phrases and listings in LaTeX") + (description + "Examplep provides sophisticated features for typesetting verbatim source +code listings, including the display of the source code and its compiled LaTeX +or METAPOST output side-by-side, with automatic width detection and enabled +page breaks (in the source), without the need for specifying the source twice. +Special care is taken that section, page and footnote numbers do not interfere +with the main document. For typesetting short verbatim phrases, a replacement +for the @code{\\verb} command is also provided in the package, which can be +used inside tables and moving arguments such as footnotes and section +titles.") + ;; No version of the GPL is specified. + (license license:gpl3+))) + +(define-public texlive-generic-xypic + (package + (name "texlive-generic-xypic") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/generic/xypic")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1g5cyxwdfznq4lk9zl6fkjkapmhmwd2cm4m5aibxj20qgwnaggfz")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/generic/xypic"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/xypic") + (synopsis "Flexible diagramming macros for TeX") + (description + "A package for typesetting a variety of graphs and diagrams with TeX. +Xy-pic works with most formats (including LaTeX, AMS-LaTeX, AMS-TeX, and plain +TeX).") + (license license:gpl3+))) + +(define-public texlive-fonts-xypic + (package + (name "texlive-fonts-xypic") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/source/public/xypic")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0p20v1257kwsqnrk98cdhhiz2viv8l3ly4xay4by0an3j37m9xs3")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((root (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/")) + (pkgs '(("source" . "fonts/source/public/xypic") + ("xypic-afm" . "fonts/afm/public/xypic") + ("xypic-type1" . "fonts/type1/public/xypic") + ("xypic-enc" . "fonts/enc/dvips/xypic")))) + (for-each (match-lambda + ((pkg . dir) + (let ((target (string-append root dir))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs pkg) + target)))) + pkgs) + #t)))) + (native-inputs + `(("xypic-afm" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/afm/public/xypic")) + (revision %texlive-revision))) + (file-name (string-append name "-afm-" version "-checkout")) + (sha256 + (base32 + "149xdijxp8lw3s0qv2aqxxxyyn748z57dpr596rjvkqdffpnsddh")))) + ("xypic-type1" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/type1/public/xypic")) + (revision %texlive-revision))) + (file-name (string-append name "-type1-" version "-checkout")) + (sha256 + (base32 + "1bln89wib7g3hcv2jny3qi6jb73k9d2vbgx3wnnjwp3ryg0846if")))) + ("xypic-enc" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/enc/dvips/xypic")) + (revision %texlive-revision))) + (file-name (string-append name "-enc-" version "-checkout")) + (sha256 + (base32 + "0yi8vms3203l3p5slnhrrlzzp0f0jw77fkcvcaicrz2vmw9z99x7")))))) + (home-page "https://www.ctan.org/pkg/xypic") + (synopsis "Fonts for XY-pic") + (description "This package provides the XY-pic fonts.") + (license license:gpl3+))) + +(define-public texlive-bibtex + (package + (name "texlive-bibtex") + (version (number->string %texlive-revision)) + (source + (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/bibtex")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0hnbs0s1znbn32hfcsyijl39z81sdb00jf092a4blqz421qs2mbv")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/bibtex"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/bibtex") + (synopsis "Process bibliographies for LaTeX") + (description + "BibTeX allows the user to store his citation data in generic form, while +printing citations in a document in the form specified by a BibTeX style, to +be specified in the document itself (one often needs a LaTeX citation-style +package, such as @command{natbib} as well).") + (license license:knuth))) + +(define-public texlive-fonts-charter + (package + (name "texlive-fonts-charter") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/type1/bitstrea/charter")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0yvib45xxff3jm5270zij4q888pivbc18cqs7lz4pqfhn1am4wnv")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((root (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/")) + (pkgs '(("source" . "fonts/type1/bitstrea/charter") + ("charter-afm" . "fonts/afm/bitstrea/charter") + ("charter-tfm" . "fonts/tfm/bitstrea/charter")))) + (for-each (match-lambda + ((pkg . dir) + (let ((target (string-append root dir))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs pkg) + target)))) + pkgs) + #t)))) + (native-inputs + `(("charter-afm" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/afm/bitstrea/charter")) + (revision %texlive-revision))) + (file-name (string-append name "-afm-" version "-checkout")) + (sha256 + (base32 + "02nbkqrlr3vypnzslmr7dxg1353mmc0rl4ynx0s6qbvf313fq76a")))) + ("charter-tfm" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/fonts/tfm/bitstrea/charter")) + (revision %texlive-revision))) + (file-name (string-append name "-tfm-" version "-checkout")) + (sha256 + (base32 + "0j7ci9vprivbhac70aq0z7m23hqcpx1g0i3wp1k0h8ilhimj80xk")))))) + (home-page "https://www.ctan.org/pkg/charter") + (synopsis "Charter fonts for TeX") + (description "A commercial text font donated for the common good. Support +for use with LaTeX is available in @code{freenfss}, part of +@command{psnfss}. ") + (license (license:non-copyleft (string-append "http://mirrors.ctan.org/" + "fonts/charter/readme.charter"))))) + +(define-public texlive-context-base + (package + (name "texlive-context-base") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/context/base")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0rlx4qqijms1n64gjx475kvip8l322fh7v17zkmwp1l1g0w3vlyz")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/context/case"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + #t)))) + (home-page "https://www.ctan.org/pkg/context") + (synopsis "Full featured, parameter driven macro package for TeX") + (description "A full featured, parameter driven macro package, which fully +supports advanced interactive documents. See the ConTeXt garden for a wealth +of support information.") + (license license:gpl2+))) + +(define-public texlive-latex-beamer + (package + (name "texlive-latex-beamer") + (version (number->string %texlive-revision)) + (source (origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/tex/latex/beamer")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "09y3qwbj0nckshvg9afgwcv9v3zdif1d7bnpzrggsa1fbr80mgk2")))) + (build-system trivial-build-system) + (outputs '("out" "doc")) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let ((target (string-append (assoc-ref %outputs "out") + "/share/texmf-dist/tex/latex/beamer")) + (docs (string-append (assoc-ref %outputs "doc") + "/share/texmf-dist/doc/latex/beamer/"))) + (mkdir-p target) + (copy-recursively (assoc-ref %build-inputs "source") target) + + (mkdir-p docs) + (copy-recursively (assoc-ref %build-inputs "docs") docs) + #t)))) + (propagated-inputs + `(("texlive-latex-hyperref" ,texlive-latex-hyperref) + ("texlive-latex-oberdiek" ,texlive-latex-oberdiek) + ("texlive-latex-etoolbox" ,texlive-latex-etoolbox) + ("texlive-latex-pgf" ,texlive-latex-pgf))) + (native-inputs + `(("docs" + ,(origin + (method svn-fetch) + (uri (svn-reference + (url (string-append "svn://www.tug.org/texlive/tags/" + %texlive-tag "/Master/texmf-dist/" + "/doc/latex/beamer")) + (revision %texlive-revision))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "102b18b9nw9dicqqgjwx0srh1mav8vh9wdvwayn741niza9hac23")))))) + (home-page "https://www.ctan.org/pkg/beamer") + (synopsis "LaTeX class for producing presentations and slides") + (description "The beamer LaTeX class can be used for producing slides. +The class works in both PostScript and direct PDF output modes, using the +@code{pgf} graphics system for visual effects. Content is created in the +@code{frame} environment, and each frame can be made up of a number of slides +using a simple notation for specifying material to appear on each slide within +a frame. Short versions of title, authors, institute can also be specified as +optional parameters. Whole frame graphics are supported by plain frames. The +class supports @code{figure} and @code{table} environments, transparency +effects, varying slide transitions and animations.") + ;; Code is dual licensed under GPLv2+ or LPPL1.3c+; documentation is + ;; dual-licensed under either FDLv1.3+ or LPPL1.3c+. + (license (list license:lppl1.3c+ license:gpl2+ license:fdl1.3+))))