gnu: r-abaenrichment: Update to 1.14.0.
[jackhill/guix/guix.git] / gnu / packages / tex.scm
index ccbdfc6..c3ce80c 100644 (file)
@@ -3,13 +3,13 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -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)
        (base32
         "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y"))
       (patches
-       (list
-        ;; 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 "http://www.linuxfromscratch.org/patches/blfs/"
-                              "svn/texlive-" version "-source-upstream_fixes-1.patch"))
-          (file-name "texlive-poppler-compat.patch")
-          (sha256
-           (base32
-            "0f8vhyj167y4xj0jx47vkybrcacfpxw0wdn1b777yq3xmhlahhlg")))))))
+       (let ((arch-patch
+              (lambda (name revision hash)
+                (origin
+                  (method url-fetch)
+                  (uri (string-append "https://git.archlinux.org/svntogit/packages.git"
+                                      "/plain/trunk/" name "?h=packages/texlive-bin"
+                                      "&id=" revision))
+                  (file-name (string-append "texlive-bin-" name))
+                  (sha256 (base32 hash)))))
+             (arch-revision "e1975bce0b9d270d7c9773c5beb7e87d61ee8f57"))
+         (append (search-patches  "texlive-bin-CVE-2018-17407.patch"
+                                  "texlive-bin-luatex-poppler-compat.patch")
+                 (list
+                  (arch-patch "pdftex-poppler0.72.patch" arch-revision
+                              "0p46b6xxxg2s3hx67r0wpz16g3qygx65hpc581xs3jz5pvsiq3y7")
+                  (arch-patch "xetex-poppler-fixes.patch" arch-revision
+                              "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx")))))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
           ;; 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.
+          ;; Guix System 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"))
             #t))
         (add-after 'unpack 'use-code-for-new-poppler
           (lambda _
-            (copy-file "texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc"
                        "texk/web2c/pdftexdir/pdftoepdf.cc")
-            (copy-file "texk/web2c/pdftexdir/pdftosrc-newpoppler.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.72.0.cc"
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
         (add-after 'unpack 'disable-failing-test
             ;; FIXME: This test fails on 32-bit architectures since Glibc 2.28:
             ;; <https://bugzilla.redhat.com/show_bug.cgi?id=1631847>.
             (substitute* "texk/web2c/omegafonts/check.test"
-              (("^\\./omfonts -ofm2opl \\$srcdir/tests/check tests/xcheck || exit 1")
+              (("^\\./omfonts -ofm2opl \\$srcdir/tests/check tests/xcheck \\|\\| exit 1")
                "./omfonts -ofm2opl $srcdir/tests/check tests/xcheck || exit 77"))
             #t))
         (add-after 'install 'postint
                    (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/")
               (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.
@@ -255,7 +277,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))
@@ -265,7 +287,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)
@@ -281,12 +303,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)
@@ -322,7 +344,7 @@ to PostScript.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0ivrhp6jz31pl4z841g4ws41lmvdiwz4sslmhf02inlib79gz6r2"))))
+                "0r1v16jyfpz6dwqsgm6b9jcj4kf2pkzc9hg07s6fx9g8ba8qglih"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -361,7 +383,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))
@@ -432,7 +454,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))
@@ -527,6 +549,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")
@@ -541,7 +599,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))
@@ -575,7 +633,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)
@@ -596,33 +654,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
@@ -631,6 +711,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")
@@ -666,13 +894,17 @@ display, and mathematical fonts in a range of styles, based on Monotype Modern
                        (string-append (getcwd) ":"
                                       mf "/share/texmf-dist/metafont/base")))
              (mkdir "build")
-             (invoke "mf" "-progname=mf"
-                     "-output-directory=build"
-                     (string-append "\\"
-                                    "mode:=ljfour; "
-                                    "mag:=1; "
-                                    "batchmode; "
-                                    "input manfnt"))))
+             (for-each (lambda (font)
+                         (format #t "building font ~a\n" font)
+                         (invoke "mf" "-progname=mf"
+                                 "-output-directory=build"
+                                 (string-append "\\"
+                                                "mode:=ljfour; "
+                                                "mag:=1; "
+                                                "batchmode; "
+                                                "input " font)))
+                       (find-files "." "(manfnt|logo.+)\\.mf$"))
+             #t))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -771,6 +1003,98 @@ class), line and circle fonts (for use in the picture environment) and LaTeX
 symbol fonts.")
     (license license:lppl1.2+)))
 
+(define-public texlive-latex-mflogo
+  (package
+    (name "texlive-latex-mflogo")
+    (version (number->string %texlive-revision))
+    (source
+     (origin
+       (method svn-fetch)
+       (uri (texlive-ref "latex" "mflogo"))
+       (sha256
+        (base32
+         "15i2ib6nvhf31g1b92c6njf7n0g29znlq7hbfp9ii7qabhcwwvrj"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/mflogo"))
+    (home-page "http://www.ctan.org/pkg/mflogo")
+    (synopsis "LaTeX support for Metafont logo fonts")
+    (description
+     "This package provides LaTeX and font definition files to access the
+Knuthian mflogo fonts described in The Metafontbook and to typeset Metafont
+logos in LaTeX documents.")
+    (license license:lppl)))
+
+(define-public texlive-fonts-mflogo-font
+  (package
+    (name "texlive-fonts-mflogo-font")
+    (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/hoekwater/mflogo-font"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "09fsxfpiyxjljkrb52b197728bjnkcnv3bdwm4hl6hf23mbmqadf"))))
+    (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/hoekwater/mflogo-font")
+                       ("afm"       . "fonts/afm/hoekwater/mflogo-font")
+                       ("fonts-map" . "fonts/map/dvips/mflogo-font"))))
+           (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
+     `(("afm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/afm/hoekwater/mflogo-font"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "0bx1mfhhzsk9gj1pha36q2rk0jd0y285qm62zgvdvzzzlfnk8sdb"))))
+       ("fonts-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/mflogo-font/"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-fonts-map-" version "-checkout"))
+           (sha256
+            (base32
+             "044xrrpl8hnvj55cx2ql1ib1bcyr33nzanx5nkwxpai7fb7pg4y6"))))))
+    (home-page "https://www.ctan.org/pkg/mflogo-font")
+    (synopsis "Metafont logo font")
+    (description
+     "These fonts were created in METAFONT by Knuth, for his own publications.
+At some stage, the letters P and S were added, so that the METAPOST logo could
+also be expressed.  The fonts were originally issued (of course) as METAFONT
+source; they have since been autotraced and reissued in Adobe Type 1 format by
+Taco Hoekwater.")
+    (license license:knuth)))
+
 (define-public texlive-fonts-amsfonts
   (package
     (name "texlive-fonts-amsfonts")
@@ -790,6 +1114,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
@@ -798,7 +1123,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")
@@ -828,23 +1153,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
@@ -900,7 +1338,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))
@@ -945,7 +1383,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)
@@ -972,15 +1410,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.
@@ -1045,6 +1476,22 @@ book).")
                               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)
@@ -1054,7 +1501,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"))
@@ -1066,7 +1512,7 @@ book).")
                         "1cfwdg2rhbayl3w0x1xqd36d45zbc96f029myp13s7cb6kbmbppv"))
          ("texlive-generic-config"
           ,(texlive-dir "tex/generic/config/"
-                        "19vj088p4kkp6xll0141m4kl6ssgdzhs3g10i232khb07aqiag8s"))
+                        "1v90iihy112q93zdpblpdk8zv8rf99fgslsg06s1sxm27zjm9nap"))
          ("texlive-latex-base-support-files"
           ,(origin
              (method svn-fetch)
@@ -1078,11 +1524,13 @@ book).")
              (file-name (string-append name "-" version "-checkout"))
              (sha256
               (base32
-               "16bs9pi3nq407xhg59glklqv43v102cg3yim6k3zcri5d9nkbv3a"))))
+               "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
@@ -1193,9 +1641,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
@@ -1217,7 +1663,7 @@ verbatim source).")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "07azyn0b1s49vbdlr6dmygrminxp72ndl24j1091hiiccvrjq3xc"))))
+                "0nlfhn55ax89rcvpkrl9570671b62kcr4c9l5ch3w5zw9vmi00dz"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/graphics"
@@ -1266,7 +1712,7 @@ verbatim source).")
                                      "-checkout"))
            (sha256
             (base32
-             "0gi4qv6378nl84s8n1yx3hjqvv7r4lza7hpbymbl5rzwgw8qrnyb"))))))
+             "17zpcgrfsr29g1dkz9np1qi63kjv7gb12rg979c6dai6qksbr3vq"))))))
     (home-page "https://www.ctan.org/pkg/latex-graphics")
     (synopsis "LaTeX standard graphics bundle")
     (description
@@ -1319,6 +1765,9 @@ tables.")
                 "1d3rmjgzh0025a1dza55zb6nzzlgd1y9snwx45wq1c1vf42m79h2"))))
     (build-system texlive-build-system)
     (arguments '(#:tex-directory "latex/hyperref"))
+    (propagated-inputs
+     `(("texlive-latex-oberdiek" ,texlive-latex-oberdiek) ; for ltxcmds.sty
+       ("texlive-latex-url" ,texlive-latex-url)))
     (home-page "https://www.ctan.org/pkg/hyperref")
     (synopsis "Extensive support for hypertext in LaTeX")
     (description
@@ -1342,7 +1791,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"
@@ -1355,6 +1804,8 @@ pdf and HTML backends.  The package is distributed with the @code{backref} and
              (substitute* "oberdiek.ins"
                (("ifpdf.ins") "ifpdf.dtx"))
              #t)))))
+    (propagated-inputs
+     `(("texlive-generic-ifxetex" ,texlive-generic-ifxetex)))
     (home-page "https://www.ctan.org/pkg/oberdiek")
     (synopsis "Bundle of packages submitted by Heiko Oberdiek")
     (description
@@ -1373,7 +1824,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"
@@ -1439,7 +1890,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"))
@@ -1463,7 +1914,7 @@ 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"
@@ -1488,7 +1939,7 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.")
                                       ":")))
              #t)))
        ))
-    (inputs
+    (propagated-inputs
      `(("texlive-latex-l3kernel" ,texlive-latex-l3kernel)))
     (home-page "https://www.ctan.org/pkg/l3packages")
     (synopsis "High-level LaTeX3 concepts")
@@ -1518,13 +1969,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
@@ -1572,6 +2050,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 <phg@phi-gamma.net>")
+                      (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")
@@ -1582,7 +2152,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")
@@ -1611,7 +2181,7 @@ definitions.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0jmcr37mcdi7drczppvr6lmz5d5yd9m67ii79gp2nglg1xpw934j"))))
+                "0c2j9xh4qpi0x1vvcxdjxq6say0zhyr569fryi5cmhp8bclh4kca"))))
     (build-system texlive-build-system)
     (arguments
      `(#:tex-directory "latex/amscls"))
@@ -1635,7 +2205,7 @@ distribution.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1n3i5adsyy7jw0imnzrm2i8wkf73i3mjk9h3ic8cb9cd19i4r9r3"))))
+                "0yhlfiz3fjc8jd46f1zrjj4jig48l8rrzh8cmd8ammml8z9a01z6"))))
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "generic/babel"
@@ -1682,6 +2252,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")
@@ -1692,7 +2285,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"))
@@ -1730,31 +2323,59 @@ font metrics.  The bundle as a whole is part of the LaTeX required set of
 packages.")
     (license license:lppl1.2+)))
 
+;; 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)
@@ -1796,8 +2417,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
@@ -1818,6 +2439,7 @@ distribution.")
                        '()
                        (append default-packages packages)))))))
 
+;; For use in package definitions only
 (define-public texlive-tiny
   (package
     (inherit (texlive-union))
@@ -1926,6 +2548,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")
@@ -1996,7 +2625,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")
@@ -2094,7 +2723,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")
@@ -2158,34 +2787,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,
@@ -2208,8 +2873,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.
@@ -2288,6 +2962,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")
@@ -2302,7 +3014,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))
@@ -2484,9 +3196,11 @@ 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"))
+    (propagated-inputs
+     `(("texlive-latex-oberdiek" ,texlive-latex-oberdiek))) ;for ifpdf
     (home-page "https://www.ctan.org/pkg/geometry")
     (synopsis "Flexible and complete interface to document dimensions")
     (description
@@ -2533,7 +3247,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")
@@ -2579,7 +3293,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))
@@ -2696,7 +3410,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")
@@ -2704,8 +3418,8 @@ command.")
     (description
      "Identify areas of text to be marked with changebars with the
 @code{\\cbstart} and @code{\\cbend} commands; the bars may be coloured.  The
-package uses 'drivers' to place the bars; the available drivers can work with
-@code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI
+package uses @code{drivers} to place the bars; the available drivers can work
+with @code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI
 drivers, and VTeX and pdfTeX.")
     (license license:lppl)))
 
@@ -2812,7 +3526,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))
@@ -3026,443 +3740,366 @@ differs from the EC in a number of particulars.")
     (license (license:fsf-free "https://www.tug.org/svn/texlive/tags/\
 texlive-2017.1/Master/texmf-dist/doc/fonts/ec/copyrite.txt"))))
 
-(define-public texlive-fonts-rsfs
-  (package
-    (name "texlive-fonts-rsfs")
-    (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/rsfs/"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0r12pn02r4a955prcvq0048nifh86ihlcgvw3pppqqvfngv34l5h"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (srfi srfi-1)
-                  (srfi srfi-26))
-       #:tests? #f                      ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'build
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((mf (assoc-ref inputs "texlive-metafont-base")))
-               ;; Tell mf where to find mf.base
-               (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c"))
-               ;; Tell mf where to look for source files
-               (setenv "MFINPUTS"
-                       (string-append (getcwd) ":"
-                                      mf "/share/texmf-dist/metafont/base:"
-                                      (assoc-ref inputs "texlive-fonts-cm")
-                                      "/share/texmf-dist/fonts/source/public/cm")))
-             (mkdir "build")
-             (for-each (lambda (font)
-                         (format #t "building font ~a\n" font)
-                         (invoke "mf" "-progname=mf"
-                                 "-output-directory=build"
-                                 (string-append "\\"
-                                                "mode:=ljfour; "
-                                                "mag:=1; "
-                                                "batchmode; "
-                                                "input " (basename font ".mf"))))
-                       (find-files "." "[0-9]+\\.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/rsfs"))
-                    (mf  (string-append
-                          out "/share/texmf-dist/fonts/source/public/rsfs")))
-               (for-each (cut install-file <> tfm)
-                         (find-files "build" "\\.*"))
-               (for-each (cut install-file <> mf)
-                         (find-files "." "\\.mf"))
-               #t))))))
-    (native-inputs
-     `(("texlive-bin" ,texlive-bin)
-       ("texlive-metafont-base" ,texlive-metafont-base)
-       ("texlive-fonts-cm" ,texlive-fonts-cm)))
-    (home-page "https://www.ctan.org/pkg/rsfs")
-    (synopsis "Ralph Smith's Formal Script font")
-    (description
-     "The fonts provide uppercase formal script letters for use as symbols in
-scientific and mathematical typesetting (in contrast to the informal script
-fonts such as that used for the calligraphic symbols in the TeX maths symbol
-font).  The fonts are provided as Metafont source, and as derived Adobe Type 1
-format.  LaTeX support, for using these fonts in mathematics, is available via
-one of the packages @code{calrsfs} and @code{mathrsfs}.")
-    (license (license:fsf-free "http://mirrors.ctan.org/fonts/rsfs/README"))))
-
-(define-public texlive-latex-eso-pic
-  (package
-    (name "texlive-latex-eso-pic")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "eso-pic"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1xvmms28mvvfpks9x7lfya2xhh5k8jy3qnlih1mzcnf156xnb89z"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/eso-pic"))
-    (home-page "https://www.ctan.org/pkg/eso-pic")
-    (synopsis "Add picture commands (or backgrounds) to every page")
-    (description
-     "The package adds one or more user commands to LaTeX's @code{shipout}
-routine, which may be used to place the output at fixed positions.  The
-@code{grid} option may be used to find the correct places.")
-    (license license:lppl1.3+)))
-
-(define-public texlive-latex-eepic
+(define-public texlive-fonts-adobe-times
   (package
-    (name "texlive-latex-eepic")
+    (name "texlive-fonts-adobe-times")
     (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/eepic"))
+                                        "/fonts/type1/urw/times/"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1c68gvh021pvybg07apsd2xhq2ljbg80kq94wh71drdga3c2zqjw"))))
+                "15vzyr7favkv1mj00qxr03s89kw78nd066fh69by93272g8p5sgd"))))
     (build-system trivial-build-system)
     (arguments
-     `(#:modules ((guix build utils))
+     `(#:modules ((guix build utils)
+                  (ice-9 match))
        #:builder
        (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/eepic")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/eepic")
-    (synopsis "Extensions to epic and the LaTeX drawing tools")
-    (description
-     "Extensions to @code{epic} and the LaTeX picture drawing environment,
-include the drawing of lines at any slope, the drawing of circles in any
-radii, and the drawing of dotted and dashed lines much faster with much less
-TeX memory, and providing several new commands for drawing ellipses, arcs,
-splines, and filled circles and ellipses.  The package uses @code{tpic}
-@code{\\special} commands.")
-    (license license:public-domain)))
+         (use-modules (guix build utils)
+                      (ice-9 match))
+         (let ((root (string-append (assoc-ref %outputs "out")
+                                    "/share/texmf-dist/"))
+               (pkgs '(("source"        . "fonts/type1/urw/times")
 
-(define-public texlive-latex-enumitem
-  (package
-    (name "texlive-latex-enumitem")
-    (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/enumitem"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0q24b1bkdi9l6bw787bpggww83jh2vj8955aw2m5yccqbx4vgr5r"))))
-    (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/enumitem")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/enumitem")
-    (synopsis "Customize basic list environments")
-    (description
-     "This package is intended to ease customizing the three basic list
-environments: @code{enumerate}, @code{itemize} and @code{description}.  It
-extends their syntax to allow an optional argument where a set of parameters
-in the form @code{key=value} are available, for example:
-@code{\\begin{itemize}[itemsep=1ex,leftmargin=1cm]}.")
-    (license license:lppl1.3+)))
+                       ("times-afm"     . "fonts/afm/adobe/times")
+                       ("times-tfm"     . "fonts/tfm/adobe/times")
+                       ("times-vf"      . "fonts/vf/adobe/times")
 
-(define-public texlive-latex-multirow
-  (package
-    (name "texlive-latex-multirow")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "multirow"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0qlxy47f1f8plgch3jqfsnrdgpyz20sz46yp33i2jwvf9hvfczf0"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/multirow"))
-    (home-page "https://www.ctan.org/pkg/multirow")
-    (synopsis "Create tabular cells spanning multiple rows")
+                       ("urw-afm"       . "fonts/afm/urw/times")
+                       ("urw35vf-tfm"   . "fonts/tfm/urw35vf/times")
+                       ("urw35vf-vf"    . "fonts/vf/urw35vf/times")
+
+                       ("times-tex"     . "tex/latex/times")
+                       ("dvips"         . "dvips/times")
+                       ("fonts-map"     . "fonts/map/dvips/times"))))
+           (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
+     `(("times-afm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/afm/adobe/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "1k7h6vihfc6ri2lq9ggnq2g4zq3qcgq1vd0hr486g9cqrdpys6cy"))))
+       ("times-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/adobe/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-tfm-" version "-checkout"))
+           (sha256
+            (base32
+             "1hbgkjnf5xyganbznwpwszvr3iyk4bzb0ys4hd8ybawp60paadrr"))))
+       ("times-vf"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/vf/adobe/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-vf-" version "-checkout"))
+           (sha256
+            (base32
+             "18rfspnwdw9r81dy18lb4w96d09b6c4g7y80azwylalkhwdf2lfp"))))
+       ("urw-afm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/afm/urw/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "0g0xpsyn6634g0b4rpd420v7i4gkz3zr12vcy2b8csbcscjvwri5"))))
+       ("urw35vf-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/urw35vf/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw35vf-tfm-" version "-checkout"))
+           (sha256
+            (base32
+             "0a4idlvpaqd0ypqgy1xw0rpx8q23bvssg8xq757zzn3zikj0w7pr"))))
+       ("urw35vf-vf"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/vf/urw35vf/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw35vf-vf-" version "-checkout"))
+           (sha256
+            (base32
+             "05mppwxd4c5x0yw50gca726f0ylc1rk8jf0jjkrriixq6rnw03di"))))
+       ("times-tex"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/tex/latex/times"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-tex-" version "-checkout"))
+           (sha256
+            (base32
+             "1gmd0x7c3vkvfzgmrsp4866rcdbyimfk3bjr91zaadc41r1i8xrp"))))
+       ("dvips"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/dvips/times/"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-dvips-" version "-checkout"))
+           (sha256
+            (base32
+             "1fvqpgqi7bp2q76nf5kmlhsdijxw65arqfy3ax3djwih3yg12mp0"))))
+       ("fonts-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/times/"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-fonts-map-" version "-checkout"))
+           (sha256
+            (base32
+             "12f00gzs2zgllkm59qdhw2xxj7lvg3p256232f1l275z3pldfqqi"))))))
+    (home-page "https://ctan.org/pkg/urw-base35")
+    (synopsis "URW Base 35 font pack for LaTeX")
     (description
-     "The package provides tools for creating tabular cells spanning multiple
-rows.  It has a lot of flexibility, including an option for specifying an
-entry at the \"natural\" width of its text.")
-    (license license:lppl1.3+)))
+     "This package provides a drop-in replacements for the Times font from
+Adobe's basic set.")
+    ;; No license version specified.
+    (license license:gpl3+)))
 
-(define-public texlive-latex-overpic
+(define-public texlive-fonts-adobe-palatino
   (package
-    (name "texlive-latex-overpic")
+    (name "texlive-fonts-adobe-palatino")
     (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/overpic"))
+                                        "/fonts/type1/urw/palatino/"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0m29q9qdb00558b7g2i7iw6w62n5s46yx81j8m99qkv77magk4fm"))))
+                "18dw5260c6fy7acxaqwrg3hw04kg63ijq4lkn56q5pa2g6nyylrp"))))
     (build-system trivial-build-system)
     (arguments
-     `(#:modules ((guix build utils))
+     `(#:modules ((guix build utils)
+                  (ice-9 match))
        #:builder
        (begin
-         (use-modules (guix build utils))
-         (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/overpic")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
+         (use-modules (guix build utils)
+                      (ice-9 match))
+         (let ((root (string-append (assoc-ref %outputs "out")
+                                    "/share/texmf-dist/"))
+               (pkgs '(("source"        . "fonts/type1/urw/palatino")
+
+                       ("palatino-afm"  . "fonts/afm/adobe/palatino")
+                       ("palatino-tfm"  . "fonts/tfm/adobe/palatino")
+                       ("palatino-vf"   . "fonts/vf/adobe/palatino")
+
+                       ("urw-afm"       . "fonts/afm/urw/palatino")
+                       ("urw35vf-tfm"   . "fonts/tfm/urw35vf/palatino")
+                       ("urw35vf-vf"    . "fonts/vf/urw35vf/palatino")
+
+                       ("palatino-tex"  . "tex/latex/palatino")
+                       ("dvips"         . "dvips/palatino")
+                       ("fonts-map"     . "fonts/map/dvips/palatino"))))
+           (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/overpic")
-    (synopsis "Combine LaTeX commands over included graphics")
+    (native-inputs
+     `(("palatino-afm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/afm/adobe/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "0pxizay730cx7rb9y5bqq9dn1zxx3arc33rmdsn7l29pc51flmmi"))))
+       ("palatino-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/adobe/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-tfm-" version "-checkout"))
+           (sha256
+            (base32
+             "1w1vm0sk9kpsy14yhyf1v1q3c6b97cgbba74g578bcwjlh810mg0"))))
+       ("palatino-vf"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/vf/adobe/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-vf-" version "-checkout"))
+           (sha256
+            (base32
+             "1maqfis8hpybcn9lmm8r2b1g56620lfpsncg0742c3kkjd6dh97h"))))
+       ("urw-afm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/afm/urw/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "0gk0xwy1fs2si5kb1j3dzgm52c8sagv32gd9dmw88m7sgh5qkd87"))))
+       ("urw35vf-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/urw35vf/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw35vf-tfm-" version "-checkout"))
+           (sha256
+            (base32
+             "19aq3xwfg7vkf1qzjdxgcvcdqwpvpavq3l25y64xni72qx0kmppz"))))
+       ("urw35vf-vf"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/vf/urw35vf/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-urw35vf-vf-" version "-checkout"))
+           (sha256
+            (base32
+             "1lkn4p6zimrs0ah6mxsang4bicp8j7xzl016529a3f168an7mdmj"))))
+       ("palatino-tex"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/tex/latex/palatino"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-tex-" version "-checkout"))
+           (sha256
+            (base32
+             "0ng9w7i0p1nb51amla32jj86vx6p84m6qc7asam3g4x8w5jf7s27"))))
+       ("dvips"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/dvips/palatino/"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-dvips-" version "-checkout"))
+           (sha256
+            (base32
+             "1pdbkfmhx4kk3brh5lg6fyl9ad2kbjmkrhgcx84klnlhq01mfdhb"))))
+       ("fonts-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/palatino/"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-fonts-map-" version "-checkout"))
+           (sha256
+            (base32
+             "0rg13hyp652hp3gnrj5pbyb84zkqmyi1qnm8c6spcyaq8pm06l0d"))))))
+    (home-page "https://ctan.org/pkg/urw-base35")
+    (synopsis "URW Base 35 font pack for LaTeX")
     (description
-     "The @code{overpic} environment is a cross between the LaTeX
-@code{picture} environment and the @code{\\includegraphics} command of
-@code{graphicx}.  The resulting picture environment has the same dimensions as
-the included graphic.  LaTeX commands can be placed on the graphic at defined
-positions; a grid for orientation is available.")
-    (license license:lppl1.0+)))
+     "This package provides a drop-in replacements for the Palatino font from
+Adobe's basic set.")
+    ;; No license version specified.
+    (license license:gpl3+)))
 
-(define-public texlive-latex-parskip
+(define-public texlive-fonts-adobe-zapfding
   (package
-    (name "texlive-latex-parskip")
+    (name "texlive-fonts-adobe-zapfding")
     (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/parskip"))
+                                        "/fonts/type1/urw/zapfding/"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "14r6h9hqb0qgccxj5l1208694fx8sb8avmgzps36lsbbpszl7i7m"))))
+                "1sp3jblg3khp0yj121blvhph6ib09919kyrsk5x2lg258yypqyis"))))
     (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/parskip")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/parskip")
-    (synopsis "Layout with zero \\parindent, non-zero \\parskip")
-    (description
-     "Simply changing @code{\\parskip} and @code{\\parindent} leaves a layout
-that is untidy; this package (though it is no substitute for a properly
-designed class) helps alleviate this untidiness.")
-    (license license:lppl)))
-
-(define-public texlive-latex-pdfpages
-  (package
-    (name "texlive-latex-pdfpages")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "pdfpages"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "06p5smfq66559ppdnmkl3hp8534x84ywbscimsiir4gllpya3i9h"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/pdfpages"))
-    (home-page "https://www.ctan.org/pkg/pdfpages")
-    (synopsis "Include PDF documents in LaTeX")
-    (description
-     "This package simplifies the inclusion of external multi-page PDF
-documents in LaTeX documents.  Pages may be freely selected and it is possible
-to put several logical pages onto each sheet of paper.  Furthermore a lot of
-hypertext features like hyperlinks and article threads are provided.  The
-package supports pdfTeX (pdfLaTeX) and VTeX.  With VTeX it is even possible to
-use this package to insert PostScript files, in addition to PDF files.")
-    (license license:lppl1.3+)))
-
-(define-public texlive-fonts-stmaryrd
-  (package
-    (name "texlive-fonts-stmaryrd")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "fonts" "stmaryrd"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "08pn4ca3vl6qm9l3wm5h5iyjsrg411kkm1yana329xwg2j14s9n6"))))
-    (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/stmaryrd"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'configure 'patch-ins
-           (lambda _
-             (substitute* "stmaryrd.ins"
-               (("^%% LaTeX2e.*") "\\input docstrip\n")
-               (("fontdef\\}\\}" line)
-                (string-append line "\n\\endbatchfile")))
-             #t)))))
-    (home-page "https://www.ctan.org/pkg/stmaryrd")
-    (synopsis "St Mary Road symbols for theoretical computer science")
-    (description
-     "The fonts were originally distributed as Metafont sources only, but
-Adobe Type 1 versions are also now available.  Macro support is provided for
-use under LaTeX; the package supports the @code{only} option (provided by the
-@code{somedefs} package) to restrict what is loaded, for those who don't need
-the whole font.")
-    (license license:lppl)))
-
-(define-public texlive-latex-subfigure
-  (package
-    (name "texlive-latex-subfigure")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "subfigure"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "15spcl5wb7w269qd6y596vp4yi8sa5ppcx8w4z2i9kyp02r3a0yb"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/subfigure"))
-    (home-page "https://www.ctan.org/pkg/subfigure")
-    (synopsis "Figures divided into subfigures")
-    (description
-     "This (deprecated) package provides support for the manipulation and
-reference of small or \"sub\" figures and tables within a single figure or
-table environment.  It is convenient to use this package when your subfigures
-are to be separately captioned, referenced, or are to be included in the
-List-of-Figures.  A new @code{\\subfigure} command is introduced which can be
-used inside a figure environment for each subfigure.  An optional first
-argument is used as the caption for that subfigure.  The package is now
-considered obsolete: it was superseded by @code{subfig}, but users may find
-the more recent @code{subcaption} package more satisfactory.")
-    (license license:lppl)))
-
-(define-public texlive-latex-tabulary
-  (package
-    (name "texlive-latex-tabulary")
-    (version (number->string %texlive-revision))
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "tabulary"))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1adkdx2zkk42g82nqf57lv1nc1z7kwl13jmy8vpcsizsa0xdnx9n"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/tabulary"))
-    (home-page "https://www.ctan.org/pkg/tabulary")
-    (synopsis "Tabular with variable width columns balanced")
-    (description
-     "The package defines a @code{tabular*}-like environment, @code{tabulary},
-taking a \"total width\" argument as well as the column specifications.  The
-environment uses column types @code{L}, @code{C}, @code{R} and @code{J} for
-variable width columns (@code{\\raggedright}, @code{\\centering},
-@code{\\raggedleft}, and normally justified).  In contrast to
-@code{tabularx}'s @code{X} columns, the width of each column is weighted
-according to the natural width of the widest cell in the column.")
-    (license license:lppl)))
-
-(define-public texlive-latex-threeparttable
-  (package
-    (name "texlive-latex-threeparttable")
-    (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/threeparttable"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "10vy9k150w2lviw8h22s2mcykff38xci653m5823s2vv44pwbmzq"))))
-    (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/threeparttable")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/threeparttable")
-    (synopsis "Tables with captions and notes all the same width")
-    (description
-     "This package facilitates tables with titles (captions) and notes.  The
-title and notes are given a width equal to the body of the table (a
-@code{tabular} environment).  By itself, a @code{threeparttable} does not
-float, but you can put it in a @code{table} or a @code{table*} or some other
-environment.")
-    (license (license:fsf-free "file://threeparttable.sty"))))
-
-(define-public texlive-fonts-txfonts
-  (package
-    (name "texlive-fonts-txfonts")
-    (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/txfonts"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0jl921qdphg8i7bkfprackn3xd4gmvxckc526nmzqsmahqkavgg2"))))
-    (build-system trivial-build-system)
-    (arguments
-     `(#:modules ((guix build utils)
-                  (ice-9 match))
+     `(#: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/txfonts")
-                       ("txfonts-vf"    . "fonts/tfm/public/txfonts")
-                       ("txfonts-afm"   . "fonts/afm/public/txfonts")
-                       ("txfonts-tfm"   . "fonts/tfm/public/txfonts")
-                       ("txfonts-type1" . "fonts/type1/public/txfonts")
-                       ("txfonts-enc"   . "fonts/enc/dvips/txfonts")
-                       ("txfonts-map"   . "fonts/map/dvips/txfonts"))))
+               (pkgs '(("source"      . "fonts/type1/urw/zapfding")
+                       ("zapf-afm"    . "fonts/afm/adobe/zapfding")
+                       ("zapf-tfm"    . "fonts/tfm/adobe/zapfding")
+                       ("urw-afm"     . "fonts/afm/urw/zapfding")
+                       ("urw35vf-tfm" . "fonts/tfm/urw35vf/zapfding")
+
+                       ("zapf-tex"    . "tex/latex/zapfding")
+                       ("dvips"       . "dvips/zapfding")
+                       ("fonts-map"   . "fonts/map/dvips/zapfding"))))
            (for-each (match-lambda
                        ((pkg . dir)
                         (let ((target (string-append root dir)))
@@ -3472,153 +4109,209 @@ environment.")
                      pkgs)
            #t))))
     (native-inputs
-     `(("txfonts-tfm"
+     `(("zapf-afm"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/tfm/public/txfonts"))
+                                     "/fonts/afm/adobe/zapfding"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "0qvl4w1bfcpiakkd8rvkism46qnvzj9w7x4r8z9m0y7mspbkblyr"))))
+       ("zapf-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/adobe/zapfding"))
                  (revision %texlive-revision)))
            (file-name (string-append name "-tfm-" version "-checkout"))
            (sha256
             (base32
-             "12ffmbrp48ap35qa3b4mi6ckif9q2vf7972jxh5dc1yzykhla2xv"))))
-       ("txfonts-vf"
+             "1i8mh9xsl8l4cgsg3nl4ha9q6m55j122riclaxsvkc5ka83432qm"))))
+       ("urw-afm"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/vf/public/txfonts"))
+                                     "/fonts/afm/urw/zapfding"))
                  (revision %texlive-revision)))
-           (file-name (string-append name "-vf-" version "-checkout"))
+           (file-name (string-append name "-urw-afm-" version "-checkout"))
            (sha256
             (base32
-             "04acyfdwvxpfx4l2xh2bpzdmpvwdf2pzbs7a236b0xckz2jvc1ci"))))
-       ("txfonts-afm"
+             "0m4qndqh7ji723ff82c5c1q8ziqvblbaip7vx05vnl15fqbsnfx1"))))
+       ("urw35vf-tfm"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/afm/public/txfonts"))
+                                     "/fonts/tfm/urw35vf/zapfding"))
                  (revision %texlive-revision)))
-           (file-name (string-append name "-afm-" version "-checkout"))
+           (file-name (string-append name "-urw35vf-tfm-" version "-checkout"))
            (sha256
             (base32
-             "1705klz51pnqzcs89s3521b84b6c89wlczflsh0vci66nl155yis"))))
-       ("txfonts-type1"
+             "167g2x6mpjfqh0w1fhjbw14qcx6ridrj2zm1bd8bi0l2d7phj28m"))))
+       ("zapf-tex"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/type1/public/txfonts"))
+                                     "/tex/latex/zapfding"))
                  (revision %texlive-revision)))
-           (file-name (string-append name "-type1-" version "-checkout"))
+           (file-name (string-append name "-tex-" version "-checkout"))
            (sha256
             (base32
-             "0ajwr7zb6ch3gxd0g8p2i4llhy2wr9a9saz6jq6hm6fxf4pgl5h3"))))
-       ("txfonts-map"
+             "0hp7i8f6nbrg7irrwc8fd7n1hrzjysa84d6iyivwlc65v9p7lmd0"))))
+       ("dvips"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/map/dvips/txfonts"))
+                                     "/dvips/zapfding/"))
                  (revision %texlive-revision)))
-           (file-name (string-append name "-map-" version "-checkout"))
+           (file-name (string-append name "-dvips-" version "-checkout"))
            (sha256
             (base32
-             "0kamr8a9x24jakas3v09dgv7kkpybj3i7qv4vz1iyypqr6kk1raj"))))
-       ("txfonts-enc"
+             "1f18sc4qwxykd786zhn6szcrycqvpvfhlcim71aamxmwghakd7fa"))))
+       ("fonts-map"
         ,(origin
            (method svn-fetch)
            (uri (svn-reference
                  (url (string-append "svn://www.tug.org/texlive/tags/"
                                      %texlive-tag "/Master/texmf-dist/"
-                                     "/fonts/enc/dvips/txfonts"))
+                                     "/fonts/map/dvips/zapfding/"))
                  (revision %texlive-revision)))
-           (file-name (string-append name "-enc-" version "-checkout"))
+           (file-name (string-append name "-fonts-map-" version "-checkout"))
            (sha256
             (base32
-             "1bal5fhw0xlhl37ayv8vlnqnsn1y82kadzfjhbgr223blspp4zsj"))))))
-    (home-page "https://www.ctan.org/pkg/threeparttable")
-    (synopsis "Times-like fonts in support of mathematics")
+             "17kwxmdrgz2fb072hx57a3pidcrhbgayphx11zyld2hv9149pkyl"))))))
+    (home-page "https://ctan.org/pkg/urw-base35")
+    (synopsis "URW Base 35 font pack for LaTeX")
     (description
-     "Txfonts supplies virtual text roman fonts using Adobe Times (or URW
-NimbusRomNo9L) with some modified and additional text symbols in the OT1, T1,
-and TS1 encodings; maths alphabets using Times/URW Nimbus; maths fonts
-providing all the symbols of the Computer Modern and AMS fonts, including all
-the Greek capital letters from CMR; and additional maths fonts of various
-other symbols.
-
-The set is complemented by a sans-serif set of text fonts, based on
-Helvetica/NimbusSanL, and a monospace set.
-
-All the fonts are in Type 1 format (AFM and PFB files), and are supported by
-TeX metrics (VF and TFM files) and macros for use with LaTeX.")
-    ;; Any version of the GPL with font exception.
+     "This package provides a drop-in replacements for the Zapfding font from
+Adobe's basic set.")
+    ;; No license version specified.
     (license license:gpl3+)))
 
-(define-public texlive-fonts-iwona
+(define-public texlive-fonts-rsfs
   (package
-    (name "texlive-fonts-iwona")
-    (version "0.995b")
+    (name "texlive-fonts-rsfs")
+    (version (number->string %texlive-revision))
     (source (origin
-              (method url-fetch)
-              (uri (string-append "http://jmn.pl/pliki/Iwona-tex-"
-                                  (string-map (lambda (c)
-                                                (if (char=? c #\.)
-                                                    #\_ c))
-                                              version)
-                                  ".zip"))
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url (string-append "svn://www.tug.org/texlive/tags/"
+                                        %texlive-tag "/Master/texmf-dist/"
+                                        "/fonts/source/public/rsfs/"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "13684iqx5granpc5rfvqnmyvdpgpbr1x9y7i7y7bcaq0qxv7ph1x"))))
-    (build-system trivial-build-system)
+                "0r12pn02r4a955prcvq0048nifh86ihlcgvw3pppqqvfngv34l5h"))))
+    (build-system gnu-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/"))
-               (unzip  (string-append (assoc-ref %build-inputs "unzip")
-                                      "/bin/unzip")))
-           (invoke unzip (assoc-ref %build-inputs "source"))
-           (mkdir-p target)
-           (copy-recursively "iwona" target)
-           #t))))
-    (native-inputs
-     `(("unzip" ,unzip)))
-    (home-page "http://jmn.pl/en/kurier-i-iwona/")
-    (synopsis "Sans-serif typeface for TeX")
-    (description "Iwona is a two-element sans-serif typeface. It was created
-as an alternative version of the Kurier typeface, which was designed in 1975
-for a diploma in typeface design at the Warsaw Academy of Fine Arts under the
-supervision of Roman Tomaszewski.  Kurier was designed for linotype
-typesetting of newspapers and similar periodicals. The Iwona fonts are an
-alternative version of the Kurier fonts.  The difference lies in the absence
-of ink traps which typify the Kurier font.")
-    (license license:gfl1.0)))
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       #:tests? #f                      ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((mf (assoc-ref inputs "texlive-metafont-base")))
+               ;; Tell mf where to find mf.base
+               (setenv "MFBASES" (string-append mf "/share/texmf-dist/web2c"))
+               ;; Tell mf where to look for source files
+               (setenv "MFINPUTS"
+                       (string-append (getcwd) ":"
+                                      mf "/share/texmf-dist/metafont/base:"
+                                      (assoc-ref inputs "texlive-fonts-cm")
+                                      "/share/texmf-dist/fonts/source/public/cm")))
+             (mkdir "build")
+             (for-each (lambda (font)
+                         (format #t "building font ~a\n" font)
+                         (invoke "mf" "-progname=mf"
+                                 "-output-directory=build"
+                                 (string-append "\\"
+                                                "mode:=ljfour; "
+                                                "mag:=1; "
+                                                "batchmode; "
+                                                "input " (basename font ".mf"))))
+                       (find-files "." "[0-9]+\\.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/rsfs"))
+                    (mf  (string-append
+                          out "/share/texmf-dist/fonts/source/public/rsfs")))
+               (for-each (cut install-file <> tfm)
+                         (find-files "build" "\\.*"))
+               (for-each (cut install-file <> mf)
+                         (find-files "." "\\.mf"))
+               #t))))))
+    (native-inputs
+     `(("texlive-bin" ,texlive-bin)
+       ("texlive-metafont-base" ,texlive-metafont-base)
+       ("texlive-fonts-cm" ,texlive-fonts-cm)))
+    (home-page "https://www.ctan.org/pkg/rsfs")
+    (synopsis "Ralph Smith's Formal Script font")
+    (description
+     "The fonts provide uppercase formal script letters for use as symbols in
+scientific and mathematical typesetting (in contrast to the informal script
+fonts such as that used for the calligraphic symbols in the TeX maths symbol
+font).  The fonts are provided as Metafont source, and as derived Adobe Type 1
+format.  LaTeX support, for using these fonts in mathematics, is available via
+one of the packages @code{calrsfs} and @code{mathrsfs}.")
+    (license (license:fsf-free "http://mirrors.ctan.org/fonts/rsfs/README"))))
 
-(define-public texlive-latex-titlesec
+(define-public texlive-latex-eso-pic
   (package
-    (name "texlive-latex-titlesec")
+    (name "texlive-latex-eso-pic")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "eso-pic"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1xvmms28mvvfpks9x7lfya2xhh5k8jy3qnlih1mzcnf156xnb89z"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/eso-pic"))
+    (home-page "https://www.ctan.org/pkg/eso-pic")
+    (synopsis "Add picture commands (or backgrounds) to every page")
+    (description
+     "The package adds one or more user commands to LaTeX's @code{shipout}
+routine, which may be used to place the output at fixed positions.  The
+@code{grid} option may be used to find the correct places.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-latex-eepic
+  (package
+    (name "texlive-latex-eepic")
     (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/titlesec"))
+                                        "/tex/latex/eepic"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "04nmkhqx6jxcxx9a30zbcd5smxi5fd0cbp132bki7fnvhspnhg21"))))
+                "1c68gvh021pvybg07apsd2xhq2ljbg80kq94wh71drdga3c2zqjw"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -3626,91 +4319,93 @@ of ink traps which typify the Kurier font.")
        (begin
          (use-modules (guix build utils))
          (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/titlesec")))
+                                      "/share/texmf-dist/tex/latex/eepic")))
            (mkdir-p target)
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
-    (home-page "https://www.ctan.org/pkg/titlesec")
-    (synopsis "Select alternative section titles")
+    (home-page "https://www.ctan.org/pkg/eepic")
+    (synopsis "Extensions to epic and the LaTeX drawing tools")
     (description
-     "This package provides an interface to sectioning commands for selection
-from various title styles, e.g. for marginal titles and to change the font of
-all headings with a single command, also providing simple one-step page
-styles.  It also includes a package to change the page styles when there are
-floats in a page.  You may assign headers/footers to individual floats, too.")
-    (license license:lppl)))
+     "Extensions to @code{epic} and the LaTeX picture drawing environment,
+include the drawing of lines at any slope, the drawing of circles in any
+radii, and the drawing of dotted and dashed lines much faster with much less
+TeX memory, and providing several new commands for drawing ellipses, arcs,
+splines, and filled circles and ellipses.  The package uses @code{tpic}
+@code{\\special} commands.")
+    (license license:public-domain)))
 
-(define-public texlive-latex-type1cm
+(define-public texlive-latex-enumitem
   (package
-    (name "texlive-latex-type1cm")
+    (name "texlive-latex-enumitem")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
-              (uri (texlive-ref "latex" "type1cm"))
+              (uri (svn-reference
+                    (url (string-append "svn://www.tug.org/texlive/tags/"
+                                        %texlive-tag "/Master/texmf-dist/"
+                                        "/tex/latex/enumitem"))
+                    (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1lvxrqfwcwa4p31zyfm80gr05v8c28xybv5ri79zi2ngz6834z12"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/type1cm"))
-    (home-page "https://www.ctan.org/pkg/type1cm")
-    (synopsis "Arbitrary size font selection in LaTeX")
+                "0q24b1bkdi9l6bw787bpggww83jh2vj8955aw2m5yccqbx4vgr5r"))))
+    (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/enumitem")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/enumitem")
+    (synopsis "Customize basic list environments")
     (description
-     "LaTeX, by default, restricts the sizes at which you can use its default
-computer modern fonts, to a fixed set of discrete sizes (effectively, a set
-specified by Knuth).  The @code{type1cm} package removes this restriction;
-this is particularly useful when using scalable versions of the CM
-fonts (Bakoma, or the versions from BSR/Y&Y, or True Type versions from Kinch,
-PCTeX, etc.).  In fact, since modern distributions will automatically generate
-any bitmap font you might need, @code{type1cm} has wider application than just
-those using scalable versions of the fonts.  Note that the LaTeX distribution
-now contains a package @code{fix-cm},f which performs the task of
-@code{type1cm}, as well as doing the same job for T1- and TS1-encoded
-@code{ec} fonts.")
-    (license license:lppl)))
+     "This package is intended to ease customizing the three basic list
+environments: @code{enumerate}, @code{itemize} and @code{description}.  It
+extends their syntax to allow an optional argument where a set of parameters
+in the form @code{key=value} are available, for example:
+@code{\\begin{itemize}[itemsep=1ex,leftmargin=1cm]}.")
+    (license license:lppl1.3+)))
 
-(define-public texlive-latex-lh
+(define-public texlive-latex-multirow
   (package
-    (name "texlive-latex-lh")
+    (name "texlive-latex-multirow")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
-              (uri (texlive-ref "latex" "lh"))
+              (uri (texlive-ref "latex" "multirow"))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "00gdiwh3sfhh1iimjhpja7lm7k4vzqzql2irgwnpz94qvh25zwi5"))))
+                "0qlxy47f1f8plgch3jqfsnrdgpyz20sz46yp33i2jwvf9hvfczf0"))))
     (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/lh"))
-    (home-page "https://www.ctan.org/pkg/lh")
-    (synopsis "Cyrillic fonts that support LaTeX standard encodings")
+    (arguments '(#:tex-directory "latex/multirow"))
+    (home-page "https://www.ctan.org/pkg/multirow")
+    (synopsis "Create tabular cells spanning multiple rows")
     (description
-     "The LH fonts address the problem of the wide variety of alphabets that
-are written with Cyrillic-style characters.  The fonts are the original basis
-of the set of T2* and X2 encodings that are now used when LaTeX users need to
-write in Cyrillic languages.  Macro support in standard LaTeX encodings is
-offered through the latex-cyrillic and t2 bundles, and the package itself
-offers support for other (more traditional) encodings.  The fonts, in the
-standard T2* and X2 encodings are available in Adobe Type 1 format, in the
-CM-Super family of fonts.  The package also offers its own LaTeX support for
-OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.")
-    (license license:lppl)))
+     "The package provides tools for creating tabular cells spanning multiple
+rows.  It has a lot of flexibility, including an option for specifying an
+entry at the \"natural\" width of its text.")
+    (license license:lppl1.3+)))
 
-(define-public texlive-metapost
+(define-public texlive-latex-overpic
   (package
-    (name "texlive-metapost")
+    (name "texlive-latex-overpic")
     (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/"
-                                        "/metapost"))
+                                        "/tex/latex/overpic"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "03nvjddffiz796wll6axzmgfvynyciy2mqamv20qx252w71vwkwd"))))
+                "1rpx4ibjncj5416rg19v0xjbj3z9avhfdfn2gzp8r8sz9vz25c6g"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -3718,53 +4413,35 @@ OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.")
        (begin
          (use-modules (guix build utils))
          (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/metapost")))
+                                      "/share/texmf-dist/tex/latex/overpic")))
            (mkdir-p target)
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
-    (home-page "https://www.ctan.org/pkg/metapost")
-    (synopsis "Create scalable illustrations")
-    (description
-     "MetaPost uses a language based on that of Metafont to produce precise
-technical illustrations.  Its output is scalable PostScript or SVG, rather
-than the bitmaps Metafont creates.")
-    (license license:lppl)))
-
-(define-public texlive-latex-acmart
-  (package
-    (name "texlive-latex-acmart")
-    (version "1.45")
-    (source (origin
-              (method svn-fetch)
-              (uri (texlive-ref "latex" "acmart"))
-              (sha256
-               (base32
-                "10zs8ga88ksypv1v4p6mynmfa7749q2hgxlr4shnwfjd9wrb421q"))
-              (file-name (string-append name "-" version "-checkout"))))
-    (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/acmart"))
-    (home-page "https://www.ctan.org/pkg/acmart")
-    (synopsis "Class for typesetting publications of ACM")
+    (home-page "https://www.ctan.org/pkg/overpic")
+    (synopsis "Combine LaTeX commands over included graphics")
     (description
-     "This package provides a class for typesetting publications of the
-Association for Computing Machinery (ACM).")
-    (license license:lppl1.3+)))
+     "The @code{overpic} environment is a cross between the LaTeX
+@code{picture} environment and the @code{\\includegraphics} command of
+@code{graphicx}.  The resulting picture environment has the same dimensions as
+the included graphic.  LaTeX commands can be placed on the graphic at defined
+positions; a grid for orientation is available.")
+    (license license:lppl1.0+)))
 
-(define-public texlive-latex-varwidth
+(define-public texlive-latex-parskip
   (package
-    (name "texlive-latex-varwidth")
+    (name "texlive-latex-parskip")
     (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/varwidth"))
+                                        "/tex/latex/parskip"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1bmz9ap0ffyg7qry2xi7lki06qx4809w028xvk88cl66h7p46g52"))))
+                "14r6h9hqb0qgccxj5l1208694fx8sb8avmgzps36lsbbpszl7i7m"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -3772,184 +4449,142 @@ Association for Computing Machinery (ACM).")
        (begin
          (use-modules (guix build utils))
          (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/varwidth")))
+                                      "/share/texmf-dist/tex/latex/parskip")))
            (mkdir-p target)
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
-    (home-page "https://www.ctan.org/pkg/varwidth")
-    (synopsis "Variable-width minipage")
+    (home-page "https://www.ctan.org/pkg/parskip")
+    (synopsis "Layout with zero \\parindent, non-zero \\parskip")
     (description
-     "The @code{varwidth} environment is superficially similar to
-@code{minipage}, but the specified width is just a maximum value — the box may
-get a narrower “natural” width.")
+     "Simply changing @code{\\parskip} and @code{\\parindent} leaves a layout
+that is untidy; this package (though it is no substitute for a properly
+designed class) helps alleviate this untidiness.")
     (license license:lppl)))
 
-(define-public texlive-latex-wasysym
+(define-public texlive-latex-pdfpages
   (package
-    (name "texlive-latex-wasysym")
+    (name "texlive-latex-pdfpages")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
-              (uri (texlive-ref "latex" "wasysym"))
+              (uri (texlive-ref "latex" "pdfpages"))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1sgwbfwjjf70g54hh93gsd9jp9nm67w6n74x9d72a56n07jbk5hv"))))
+                "0s4izcah7im67889qz4d26pcfpasmm35sj1rw4ragkkdk3rlbbbd"))))
     (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/wasysym"))
-    (home-page "https://www.ctan.org/pkg/wasysym")
-    (synopsis "LaTeX support file to use the WASY2 fonts")
+    (arguments '(#:tex-directory "latex/pdfpages"))
+    (home-page "https://www.ctan.org/pkg/pdfpages")
+    (synopsis "Include PDF documents in LaTeX")
     (description
-     "The wasy2WASY2 (Waldi Symbol) font by Roland Waldi provides many glyphs
-like male and female symbols and astronomical symbols, as well as the complete
-lasy font set and other odds and ends.  The wasysym package implements an easy
-to use interface for these symbols.")
-    (license license:lppl)))
+     "This package simplifies the inclusion of external multi-page PDF
+documents in LaTeX documents.  Pages may be freely selected and it is possible
+to put several logical pages onto each sheet of paper.  Furthermore a lot of
+hypertext features like hyperlinks and article threads are provided.  The
+package supports pdfTeX (pdfLaTeX) and VTeX.  With VTeX it is even possible to
+use this package to insert PostScript files, in addition to PDF files.")
+    (license license:lppl1.3+)))
 
-(define-public texlive-latex-wrapfig
+(define-public texlive-fonts-stmaryrd
   (package
-    (name "texlive-latex-wrapfig")
+    (name "texlive-fonts-stmaryrd")
     (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/wrapfig"))
-                    (revision %texlive-revision)))
+              (uri (texlive-ref "fonts" "stmaryrd"))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "16xpyl0csmmwndz1xhzqfg9l0zcsnqxslsixsqkwd4zsvfj30sv4"))))
-    (build-system trivial-build-system)
+                "08pn4ca3vl6qm9l3wm5h5iyjsrg411kkm1yana329xwg2j14s9n6"))))
+    (build-system texlive-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/wrapfig")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/wrapfig")
-    (synopsis "Produces figures which text can flow around")
+     '(#:tex-directory "latex/stmaryrd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-ins
+           (lambda _
+             (substitute* "stmaryrd.ins"
+               (("^%% LaTeX2e.*") "\\input docstrip\n")
+               (("fontdef\\}\\}" line)
+                (string-append line "\n\\endbatchfile")))
+             #t)))))
+    (home-page "https://www.ctan.org/pkg/stmaryrd")
+    (synopsis "St Mary Road symbols for theoretical computer science")
     (description
-     "This package allows figures or tables to have text wrapped around them.
-It does not work in combination with list environments, but can be used in a
-@code{parbox} or @code{minipage}, and in two-column format.")
+     "The fonts were originally distributed as Metafont sources only, but
+Adobe Type 1 versions are also now available.  Macro support is provided for
+use under LaTeX; the package supports the @code{only} option (provided by the
+@code{somedefs} package) to restrict what is loaded, for those who don't need
+the whole font.")
     (license license:lppl)))
 
-(define-public texlive-latex-ucs
-  (package
-    (name "texlive-latex-ucs")
-    (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/ucs"))
-                    (revision %texlive-revision)))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "0rrxwi60wmz5dfjifl4fwk66plf7wix85qnhfv4ylvmj6qi6hw37"))))
-    (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/ucs")))
-           (mkdir-p target)
-           (copy-recursively (assoc-ref %build-inputs "source") target)
-           #t))))
-    (home-page "https://www.ctan.org/pkg/ucs")
-    (synopsis "Extended UTF-8 input encoding support for LaTeX")
-    (description
-     "The bundle provides the @code{ucs} package, and @code{utf8x.def},
-together with a large number of support files.  The @code{utf8x.def}
-definition file for use with @code{inputenc} covers a wider range of Unicode
-characters than does @code{utf8.def} in the LaTeX distribution.  The package
-provides facilities for efficient use of its large sets of Unicode characters.
-Glyph production may be controlled by various options, which permits use of
-non-ASCII characters when coding mathematical formulae.  Note that the bundle
-previously had an alias “unicode”; that alias has now been withdrawn, and no
-package of that name now exists.")
-    (license license:lppl1.3+)))
-
-(define-public texlive-latex-preview
+(define-public texlive-latex-subfigure
   (package
-    (name "texlive-latex-preview")
+    (name "texlive-latex-subfigure")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
-              (uri (texlive-ref "latex" "preview"))
+              (uri (texlive-ref "latex" "subfigure"))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0j6fff6q0ca96nwfdgay2jm55792z4q9aa0rczmiw2qccyg5n2dv"))))
+                "15spcl5wb7w269qd6y596vp4yi8sa5ppcx8w4z2i9kyp02r3a0yb"))))
     (build-system texlive-build-system)
-    (arguments
-     '(#:tex-directory "latex/preview"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-generated-file
-           (lambda _
-             (delete-file "preview.drv")
-             #t)))))
-    (home-page "https://www.ctan.org/pkg/preview")
-    (synopsis "Extract bits of a LaTeX source for output")
+    (arguments '(#:tex-directory "latex/subfigure"))
+    (home-page "https://www.ctan.org/pkg/subfigure")
+    (synopsis "Figures divided into subfigures")
     (description
-     "The main purpose of the preview package is the extraction of selected
-elements from a LaTeX source, like formulas or graphics, into separate
-pages of a DVI file.  A flexible and convenient interface allows it to
-specify what commands and constructs should be extracted.  This works
-with DVI files postprocessed by either Dvips and Ghostscript or
-dvipng, but it also works when you are using PDFTeX for generating PDF
-files.")
-    (license license:gpl3+)))
+     "This (deprecated) package provides support for the manipulation and
+reference of small or \"sub\" figures and tables within a single figure or
+table environment.  It is convenient to use this package when your subfigures
+are to be separately captioned, referenced, or are to be included in the
+List-of-Figures.  A new @code{\\subfigure} command is introduced which can be
+used inside a figure environment for each subfigure.  An optional first
+argument is used as the caption for that subfigure.  The package is now
+considered obsolete: it was superseded by @code{subfig}, but users may find
+the more recent @code{subcaption} package more satisfactory.")
+    (license license:lppl)))
 
-(define-public texlive-latex-acronym
+(define-public texlive-latex-tabulary
   (package
-    (name "texlive-latex-acronym")
+    (name "texlive-latex-tabulary")
     (version (number->string %texlive-revision))
     (source (origin
               (method svn-fetch)
-              (uri (texlive-ref "latex" "acronym"))
+              (uri (texlive-ref "latex" "tabulary"))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0jmasg40bk53zdd2jc8nc18jvdai3p2wmamy7hwli8gls4nf25qp"))))
+                "1adkdx2zkk42g82nqf57lv1nc1z7kwl13jmy8vpcsizsa0xdnx9n"))))
     (build-system texlive-build-system)
-    (arguments '(#:tex-directory "latex/acronym"))
-    (home-page "https://www.ctan.org/pkg/acronym")
-    (synopsis "Expand acronyms at least once")
+    (arguments '(#:tex-directory "latex/tabulary"))
+    (home-page "https://www.ctan.org/pkg/tabulary")
+    (synopsis "Tabular with variable width columns balanced")
     (description
-     "This package ensures that all acronyms used in the text are spelled out
-in full at least once.  It also provides an environment to build a list of
-acronyms used.  The package is compatible with PDF bookmarks.  The package
-requires the suffix package, which in turn requires that it runs under
-e-TeX.")
-    (license license:lppl1.3+)))
+     "The package defines a @code{tabular*}-like environment, @code{tabulary},
+taking a \"total width\" argument as well as the column specifications.  The
+environment uses column types @code{L}, @code{C}, @code{R} and @code{J} for
+variable width columns (@code{\\raggedright}, @code{\\centering},
+@code{\\raggedleft}, and normally justified).  In contrast to
+@code{tabularx}'s @code{X} columns, the width of each column is weighted
+according to the natural width of the widest cell in the column.")
+    (license license:lppl)))
 
-(define-public texlive-generic-pdftex
+(define-public texlive-latex-threeparttable
   (package
-    (name "texlive-generic-pdftex")
+    (name "texlive-latex-threeparttable")
     (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/pdftex"))
+                                        "/tex/latex/threeparttable"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0k68zmqzs4qvrqxdwsrawbjb14hxqjfamq649azvai0jjxdpkljd"))))
+                "10vy9k150w2lviw8h22s2mcykff38xci653m5823s2vv44pwbmzq"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -3957,486 +4592,1794 @@ 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/latex/threeparttable")))
            (mkdir-p target)
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
-    (home-page "https://www.ctan.org/pkg/pdftex")
-    (synopsis "TeX extension for direct creation of PDF")
+    (home-page "https://www.ctan.org/pkg/threeparttable")
+    (synopsis "Tables with captions and notes all the same width")
     (description
-     "This package provides an extension of TeX which can be configured to
-directly generate PDF documents instead of DVI.")
-    (license license:gpl2+)))
+     "This package facilitates tables with titles (captions) and notes.  The
+title and notes are given a width equal to the body of the table (a
+@code{tabular} environment).  By itself, a @code{threeparttable} does not
+float, but you can put it in a @code{table} or a @code{table*} or some other
+environment.")
+    (license (license:fsf-free "file://threeparttable.sty"))))
 
-(define texlive-texmf
+(define-public texlive-fonts-txfonts
   (package
-   (name "texlive-texmf")
-   (version "20180414")
-   (source texlive-texmf-src)
-   (build-system gnu-build-system)
-   (inputs
-    `(("texlive-bin" ,texlive-bin)
-      ("lua" ,lua)
-      ("perl" ,perl)
-      ("python" ,python-2) ; incompatible with Python 3 (print syntax)
-      ("ruby" ,ruby)
-      ("tcsh" ,tcsh)))
-   (arguments
-    `(#:modules ((guix build gnu-build-system)
-                 (guix build utils)
-                 (srfi srfi-26))
-
-      ;; This package takes 4 GiB, which we can't afford to distribute from
-      ;; our servers.
-      #:substitutable? #f
-
-      #:phases
-        (modify-phases (map (cut assq <> %standard-phases)
-                            '(set-paths unpack patch-source-shebangs))
-          (add-after 'patch-source-shebangs 'install
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let ((share (string-append (assoc-ref outputs "out") "/share")))
-                (mkdir-p share)
-                (invoke "mv" "texmf-dist" share))))
-          (add-after 'install 'texmf-config
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (share (string-append out "/share"))
-                     (texmfroot (string-append share "/texmf-dist/web2c"))
-                     (texmfcnf (string-append texmfroot "/texmf.cnf"))
-                     (texlive-bin (assoc-ref inputs "texlive-bin"))
-                     (texbin (string-append texlive-bin "/bin"))
-                     (tlpkg (string-append texlive-bin "/share/tlpkg")))
-                ;; Register SHARE as TEXMFROOT in texmf.cnf.
-                (substitute* texmfcnf
-                  (("TEXMFROOT = \\$SELFAUTOPARENT")
-                   (string-append "TEXMFROOT = " share))
-                  (("TEXMFLOCAL = \\$SELFAUTOGRANDPARENT/texmf-local")
-                   "TEXMFLOCAL = $SELFAUTODIR/share/texmf-local")
-                  (("!!\\$TEXMFLOCAL") "$TEXMFLOCAL"))
-                ;; Register paths in texmfcnf.lua, needed for context.
-                (substitute* (string-append texmfroot "/texmfcnf.lua")
-                  (("selfautodir:") out)
-                  (("selfautoparent:") (string-append share "/")))
-                ;; Set path to TeXLive Perl modules
-                (setenv "PERL5LIB"
-                        (string-append (getenv "PERL5LIB") ":" tlpkg))
-                ;; Configure the texmf-dist tree; inspired from
-                ;; http://slackbuilds.org/repository/13.37/office/texlive/
-                (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
-                (setenv "TEXMFCNF" texmfroot)
-                (invoke "updmap-sys" "--nohash" "--syncwithtrees")
-                (invoke "mktexlsr")
-                (invoke "fmtutil-sys" "--all")))))))
-   (properties `((max-silent-time . 9600))) ; don't time out while grafting
-   (synopsis "TeX Live, a package of the TeX typesetting system")
+    (name "texlive-fonts-txfonts")
+    (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/txfonts"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0jl921qdphg8i7bkfprackn3xd4gmvxckc526nmzqsmahqkavgg2"))))
+    (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/txfonts")
+                       ("txfonts-vf"    . "fonts/tfm/public/txfonts")
+                       ("txfonts-afm"   . "fonts/afm/public/txfonts")
+                       ("txfonts-tfm"   . "fonts/tfm/public/txfonts")
+                       ("txfonts-type1" . "fonts/type1/public/txfonts")
+                       ("txfonts-enc"   . "fonts/enc/dvips/txfonts")
+                       ("txfonts-map"   . "fonts/map/dvips/txfonts"))))
+           (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
+     `(("txfonts-tfm"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/tfm/public/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-tfm-" version "-checkout"))
+           (sha256
+            (base32
+             "12ffmbrp48ap35qa3b4mi6ckif9q2vf7972jxh5dc1yzykhla2xv"))))
+       ("txfonts-vf"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/fonts/vf/public/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-vf-" version "-checkout"))
+           (sha256
+            (base32
+             "04acyfdwvxpfx4l2xh2bpzdmpvwdf2pzbs7a236b0xckz2jvc1ci"))))
+       ("txfonts-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/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-afm-" version "-checkout"))
+           (sha256
+            (base32
+             "1705klz51pnqzcs89s3521b84b6c89wlczflsh0vci66nl155yis"))))
+       ("txfonts-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/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-type1-" version "-checkout"))
+           (sha256
+            (base32
+             "0ajwr7zb6ch3gxd0g8p2i4llhy2wr9a9saz6jq6hm6fxf4pgl5h3"))))
+       ("txfonts-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/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-map-" version "-checkout"))
+           (sha256
+            (base32
+             "0kamr8a9x24jakas3v09dgv7kkpybj3i7qv4vz1iyypqr6kk1raj"))))
+       ("txfonts-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/txfonts"))
+                 (revision %texlive-revision)))
+           (file-name (string-append name "-enc-" version "-checkout"))
+           (sha256
+            (base32
+             "1bal5fhw0xlhl37ayv8vlnqnsn1y82kadzfjhbgr223blspp4zsj"))))))
+    (home-page "https://www.ctan.org/pkg/threeparttable")
+    (synopsis "Times-like fonts in support of mathematics")
+    (description
+     "Txfonts supplies virtual text roman fonts using Adobe Times (or URW
+NimbusRomNo9L) with some modified and additional text symbols in the OT1, T1,
+and TS1 encodings; maths alphabets using Times/URW Nimbus; maths fonts
+providing all the symbols of the Computer Modern and AMS fonts, including all
+the Greek capital letters from CMR; and additional maths fonts of various
+other symbols.
+
+The set is complemented by a sans-serif set of text fonts, based on
+Helvetica/NimbusSanL, and a monospace set.
+
+All the fonts are in Type 1 format (AFM and PFB files), and are supported by
+TeX metrics (VF and TFM files) and macros for use with LaTeX.")
+    ;; Any version of the GPL with font exception.
+    (license license:gpl3+)))
+
+(define-public texlive-fonts-iwona
+  (package
+    (name "texlive-fonts-iwona")
+    (version "0.995b")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://jmn.pl/pliki/Iwona-tex-"
+                                  (string-map (lambda (c)
+                                                (if (char=? c #\.)
+                                                    #\_ c))
+                                              version)
+                                  ".zip"))
+              (sha256
+               (base32
+                "13684iqx5granpc5rfvqnmyvdpgpbr1x9y7i7y7bcaq0qxv7ph1x"))))
+    (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/"))
+               (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip")))
+           (invoke unzip (assoc-ref %build-inputs "source"))
+           (mkdir-p target)
+           (copy-recursively "iwona" target)
+           #t))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "http://jmn.pl/en/kurier-i-iwona/")
+    (synopsis "Sans-serif typeface for TeX")
+    (description "Iwona is a two-element sans-serif typeface. It was created
+as an alternative version of the Kurier typeface, which was designed in 1975
+for a diploma in typeface design at the Warsaw Academy of Fine Arts under the
+supervision of Roman Tomaszewski.  Kurier was designed for linotype
+typesetting of newspapers and similar periodicals. The Iwona fonts are an
+alternative version of the Kurier fonts.  The difference lies in the absence
+of ink traps which typify the Kurier font.")
+    (license license:gfl1.0)))
+
+(define-public texlive-latex-titlesec
+  (package
+    (name "texlive-latex-titlesec")
+    (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/titlesec"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "04nmkhqx6jxcxx9a30zbcd5smxi5fd0cbp132bki7fnvhspnhg21"))))
+    (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/titlesec")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/titlesec")
+    (synopsis "Select alternative section titles")
+    (description
+     "This package provides an interface to sectioning commands for selection
+from various title styles, e.g. for marginal titles and to change the font of
+all headings with a single command, also providing simple one-step page
+styles.  It also includes a package to change the page styles when there are
+floats in a page.  You may assign headers/footers to individual floats, too.")
+    (license license:lppl)))
+
+(define-public texlive-latex-type1cm
+  (package
+    (name "texlive-latex-type1cm")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "type1cm"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1lvxrqfwcwa4p31zyfm80gr05v8c28xybv5ri79zi2ngz6834z12"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/type1cm"))
+    (home-page "https://www.ctan.org/pkg/type1cm")
+    (synopsis "Arbitrary size font selection in LaTeX")
+    (description
+     "LaTeX, by default, restricts the sizes at which you can use its default
+computer modern fonts, to a fixed set of discrete sizes (effectively, a set
+specified by Knuth).  The @code{type1cm} package removes this restriction;
+this is particularly useful when using scalable versions of the CM
+fonts (Bakoma, or the versions from BSR/Y&Y, or True Type versions from Kinch,
+PCTeX, etc.).  In fact, since modern distributions will automatically generate
+any bitmap font you might need, @code{type1cm} has wider application than just
+those using scalable versions of the fonts.  Note that the LaTeX distribution
+now contains a package @code{fix-cm},f which performs the task of
+@code{type1cm}, as well as doing the same job for T1- and TS1-encoded
+@code{ec} fonts.")
+    (license license:lppl)))
+
+(define-public texlive-latex-lh
+  (package
+    (name "texlive-latex-lh")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "lh"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "00gdiwh3sfhh1iimjhpja7lm7k4vzqzql2irgwnpz94qvh25zwi5"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/lh"))
+    (home-page "https://www.ctan.org/pkg/lh")
+    (synopsis "Cyrillic fonts that support LaTeX standard encodings")
+    (description
+     "The LH fonts address the problem of the wide variety of alphabets that
+are written with Cyrillic-style characters.  The fonts are the original basis
+of the set of T2* and X2 encodings that are now used when LaTeX users need to
+write in Cyrillic languages.  Macro support in standard LaTeX encodings is
+offered through the latex-cyrillic and t2 bundles, and the package itself
+offers support for other (more traditional) encodings.  The fonts, in the
+standard T2* and X2 encodings are available in Adobe Type 1 format, in the
+CM-Super family of fonts.  The package also offers its own LaTeX support for
+OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.")
+    (license license:lppl)))
+
+(define-public texlive-metapost
+  (package
+    (name "texlive-metapost")
+    (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/"
+                                        "/metapost"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0sf18pc6chgy26p9bxxn44xcqhzjrfb53jxjr2y7l3jb6xllhblq"))))
+    (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/metapost")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/metapost")
+    (synopsis "Create scalable illustrations")
+    (description
+     "MetaPost uses a language based on that of Metafont to produce precise
+technical illustrations.  Its output is scalable PostScript or SVG, rather
+than the bitmaps Metafont creates.")
+    (license license:lppl)))
+
+(define-public texlive-latex-acmart
+  (package
+    (name "texlive-latex-acmart")
+    (version "1.45")
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "acmart"))
+              (sha256
+               (base32
+                "10zs8ga88ksypv1v4p6mynmfa7749q2hgxlr4shnwfjd9wrb421q"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/acmart"))
+    (home-page "https://www.ctan.org/pkg/acmart")
+    (synopsis "Class for typesetting publications of ACM")
+    (description
+     "This package provides a class for typesetting publications of the
+Association for Computing Machinery (ACM).")
+    (license license:lppl1.3+)))
+
+(define-public texlive-latex-varwidth
+  (package
+    (name "texlive-latex-varwidth")
+    (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/varwidth"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1bmz9ap0ffyg7qry2xi7lki06qx4809w028xvk88cl66h7p46g52"))))
+    (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/varwidth")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/varwidth")
+    (synopsis "Variable-width minipage")
+    (description
+     "The @code{varwidth} environment is superficially similar to
+@code{minipage}, but the specified width is just a maximum value — the box may
+get a narrower “natural” width.")
+    (license license:lppl)))
+
+(define-public texlive-latex-wasysym
+  (package
+    (name "texlive-latex-wasysym")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "wasysym"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1sgwbfwjjf70g54hh93gsd9jp9nm67w6n74x9d72a56n07jbk5hv"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/wasysym"))
+    (home-page "https://www.ctan.org/pkg/wasysym")
+    (synopsis "LaTeX support file to use the WASY2 fonts")
+    (description
+     "The wasy2WASY2 (Waldi Symbol) font by Roland Waldi provides many glyphs
+like male and female symbols and astronomical symbols, as well as the complete
+lasy font set and other odds and ends.  The wasysym package implements an easy
+to use interface for these symbols.")
+    (license license:lppl)))
+
+(define-public texlive-latex-wrapfig
+  (package
+    (name "texlive-latex-wrapfig")
+    (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/wrapfig"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "16xpyl0csmmwndz1xhzqfg9l0zcsnqxslsixsqkwd4zsvfj30sv4"))))
+    (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/wrapfig")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/wrapfig")
+    (synopsis "Produces figures which text can flow around")
+    (description
+     "This package allows figures or tables to have text wrapped around them.
+It does not work in combination with list environments, but can be used in a
+@code{parbox} or @code{minipage}, and in two-column format.")
+    (license license:lppl)))
+
+(define-public texlive-latex-ucs
+  (package
+    (name "texlive-latex-ucs")
+    (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/ucs"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0rrxwi60wmz5dfjifl4fwk66plf7wix85qnhfv4ylvmj6qi6hw37"))))
+    (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/ucs")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/ucs")
+    (synopsis "Extended UTF-8 input encoding support for LaTeX")
+    (description
+     "The bundle provides the @code{ucs} package, and @code{utf8x.def},
+together with a large number of support files.  The @code{utf8x.def}
+definition file for use with @code{inputenc} covers a wider range of Unicode
+characters than does @code{utf8.def} in the LaTeX distribution.  The package
+provides facilities for efficient use of its large sets of Unicode characters.
+Glyph production may be controlled by various options, which permits use of
+non-ASCII characters when coding mathematical formulae.  Note that the bundle
+previously had an alias “unicode”; that alias has now been withdrawn, and no
+package of that name now exists.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-latex-preview
+  (package
+    (name "texlive-latex-preview")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "preview"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1hpsk4yp08qvbl43kqiv0hhwxv3gcqqxcpahyv6ch2b38pbj4bh6"))))
+    (build-system texlive-build-system)
+    (arguments
+     '(#:tex-directory "latex/preview"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-generated-file
+           (lambda _
+             (delete-file "preview.drv")
+             #t)))))
+    (home-page "https://www.ctan.org/pkg/preview")
+    (synopsis "Extract bits of a LaTeX source for output")
+    (description
+     "The main purpose of the preview package is the extraction of selected
+elements from a LaTeX source, like formulas or graphics, into separate
+pages of a DVI file.  A flexible and convenient interface allows it to
+specify what commands and constructs should be extracted.  This works
+with DVI files postprocessed by either Dvips and Ghostscript or
+dvipng, but it also works when you are using PDFTeX for generating PDF
+files.")
+    (license license:gpl3+)))
+
+(define-public texlive-latex-acronym
+  (package
+    (name "texlive-latex-acronym")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "acronym"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0jmasg40bk53zdd2jc8nc18jvdai3p2wmamy7hwli8gls4nf25qp"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/acronym"))
+    (home-page "https://www.ctan.org/pkg/acronym")
+    (synopsis "Expand acronyms at least once")
+    (description
+     "This package ensures that all acronyms used in the text are spelled out
+in full at least once.  It also provides an environment to build a list of
+acronyms used.  The package is compatible with PDF bookmarks.  The package
+requires the suffix package, which in turn requires that it runs under
+e-TeX.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-generic-pdftex
+  (package
+    (name "texlive-generic-pdftex")
+    (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/pdftex"))
+                    (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0k68zmqzs4qvrqxdwsrawbjb14hxqjfamq649azvai0jjxdpkljd"))))
+    (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/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
+     "This package provides an extension of TeX which can be configured to
+directly generate PDF documents instead of DVI.")
+    (license license:gpl2+)))
+
+(define texlive-texmf
+  (package
+   (name "texlive-texmf")
+   (version "20180414")
+   (source texlive-texmf-src)
+   (build-system gnu-build-system)
+   (inputs
+    `(("texlive-bin" ,texlive-bin)
+      ("lua" ,lua)
+      ("perl" ,perl)
+      ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+      ("ruby" ,ruby)
+      ("tcsh" ,tcsh)))
+   (arguments
+    `(#:modules ((guix build gnu-build-system)
+                 (guix build utils)
+                 (srfi srfi-26))
+
+      ;; This package takes 4 GiB, which we can't afford to distribute from
+      ;; our servers.
+      #:substitutable? #f
+
+      #: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")))
+                (mkdir-p share)
+                (invoke "mv" "texmf-dist" share))))
+          (add-after 'install 'texmf-config
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (share (string-append out "/share"))
+                     (texmfroot (string-append share "/texmf-dist/web2c"))
+                     (texmfcnf (string-append texmfroot "/texmf.cnf"))
+                     (texlive-bin (assoc-ref inputs "texlive-bin"))
+                     (texbin (string-append texlive-bin "/bin"))
+                     (tlpkg (string-append texlive-bin "/share/tlpkg")))
+                ;; Register SHARE as TEXMFROOT in texmf.cnf.
+                (substitute* texmfcnf
+                  (("TEXMFROOT = \\$SELFAUTOPARENT")
+                   (string-append "TEXMFROOT = " share))
+                  (("TEXMFLOCAL = \\$SELFAUTOGRANDPARENT/texmf-local")
+                   "TEXMFLOCAL = $SELFAUTODIR/share/texmf-local")
+                  (("!!\\$TEXMFLOCAL") "$TEXMFLOCAL"))
+                ;; Register paths in texmfcnf.lua, needed for context.
+                (substitute* (string-append texmfroot "/texmfcnf.lua")
+                  (("selfautodir:") out)
+                  (("selfautoparent:") (string-append share "/")))
+                ;; Set path to TeXLive Perl modules
+                (setenv "PERL5LIB"
+                        (string-append (getenv "PERL5LIB") ":" tlpkg))
+                ;; Configure the texmf-dist tree; inspired from
+                ;; http://slackbuilds.org/repository/13.37/office/texlive/
+                (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
+                (setenv "TEXMFCNF" texmfroot)
+                (invoke "updmap-sys" "--nohash" "--syncwithtrees")
+                (invoke "mktexlsr")
+                (invoke "fmtutil-sys" "--all")))))))
+   (properties `((max-silent-time . 9600))) ; don't time out while grafting
+   (synopsis "TeX Live, a package of the TeX typesetting system")
+   (description
+    "TeX Live provides a comprehensive TeX document production system.
+It includes all the major TeX-related programs, macro packages, and fonts
+that are free software, including support for many languages around the
+world.
+
+This package contains the complete tree of texmf-dist data.")
+   (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
+   (home-page "https://www.tug.org/texlive/")))
+
+(define-public texlive
+  (package
+   (name "texlive")
+   (version "20180414")
+   (source #f)
+   (build-system trivial-build-system)
+   (inputs `(("bash" ,bash) ; for wrap-program
+             ("texlive-bin" ,texlive-bin)
+             ("texlive-texmf" ,texlive-texmf)))
+   (native-search-paths
+    (list (search-path-specification
+           (variable "TEXMFLOCAL")
+           (files '("share/texmf-local")))))
+   (arguments
+    `(#:modules ((guix build utils))
+      #:builder
+        ;; Build the union of texlive-bin and texlive-texmf, but take the
+        ;; conflicting subdirectory share/texmf-dist from texlive-texmf.
+        (begin
+          (use-modules (guix build utils))
+          (let ((out (assoc-ref %outputs "out"))
+                (bin (assoc-ref %build-inputs "texlive-bin"))
+                (texmf (assoc-ref %build-inputs "texlive-texmf"))
+                (bash (assoc-ref %build-inputs "bash")))
+               (mkdir out)
+               (with-directory-excursion out
+                 (for-each
+                   (lambda (name)
+                     (symlink (string-append bin "/" name) name))
+                   '("include" "lib"))
+                 (mkdir "bin")
+                 (with-directory-excursion "bin"
+                   (setenv "PATH" (string-append bash "/bin"))
+                   (for-each
+                     (lambda (name)
+                       (symlink name (basename name))
+                       (wrap-program
+                         (basename name)
+                         `("TEXMFCNF" =
+                           (,(string-append texmf "/share/texmf-dist/web2c")))))
+                     (find-files (string-append bin "/bin/") "")))
+                 (mkdir "share")
+                 (with-directory-excursion "share"
+                   (for-each
+                     (lambda (name)
+                       (symlink (string-append bin "/share/" name) name))
+                     '("info" "man" "tlpkg"))
+                   (for-each
+                     (lambda (name)
+                       (symlink (string-append texmf "/share/" name) name))
+                     '("texmf-dist" "texmf-var"))))
+               #t))))
+   (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
 It includes all the major TeX-related programs, macro packages, and fonts
 that are free software, including support for many languages around the
 world.
 
-This package contains the complete tree of texmf-dist data.")
-   (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
-   (home-page "https://www.tug.org/texlive/")))
+This package contains the complete TeX Live distribution.")
+   (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
+   (home-page "https://www.tug.org/texlive/")))
+
+(define-public perl-text-bibtex
+  (package
+    (name "perl-text-bibtex")
+    (version "0.85")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AM/AMBS/Text-BibTeX-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "036kxgbn1jf70pfm2lmjlzjwnhbkd888fp5lyvmkjpdd15gla18h"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-output-directory-to-rpath
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "inc/MyBuilder.pm"
+               (("-Lbtparse" line)
+                (string-append "-Wl,-rpath="
+                               (assoc-ref outputs "out") "/lib " line)))
+             #t))
+         (add-after 'unpack 'install-libraries-to-/lib
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Build.PL"
+               (("lib64") "lib"))
+             #t)))))
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-config-autoconf" ,perl-config-autoconf)
+       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
+       ("perl-module-build" ,perl-module-build)))
+    (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
+at many different levels: you may work with BibTeX entries as simple field to
+string mappings, or get at the original form of the data as a list of simple
+values (strings, macros, or numbers) pasted together.")
+    (license license:perl-license)))
+
+(define-public biber
+  (package
+    (name "biber")
+    (version "2.12")
+    (source (origin
+              (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
+                "1g1hi6zvf2hmrjly1sidjaxy5440gfqm4p7p3n7kayshnjsmlskx"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-programs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (perl5lib (getenv "PERL5LIB")))
+               (wrap-program (string-append out "/bin/biber")
+                 `("PERL5LIB" ":" prefix
+                   (,(string-append perl5lib ":" out
+                                    "/lib/perl5/site_perl")))))
+             #t)))))
+    (inputs
+     `(("perl-autovivification" ,perl-autovivification)
+       ("perl-class-accessor" ,perl-class-accessor)
+       ("perl-data-dump" ,perl-data-dump)
+       ("perl-data-compare" ,perl-data-compare)
+       ("perl-data-uniqid" ,perl-data-uniqid)
+       ("perl-datetime-format-builder" ,perl-datetime-format-builder)
+       ("perl-datetime-calendar-julian" ,perl-datetime-calendar-julian)
+       ("perl-file-slurper" ,perl-file-slurper)
+       ("perl-ipc-cmd" ,perl-ipc-cmd)
+       ("perl-ipc-run3" ,perl-ipc-run3)
+       ("perl-list-allutils" ,perl-list-allutils)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-mozilla-ca" ,perl-mozilla-ca)
+       ("perl-regexp-common" ,perl-regexp-common)
+       ("perl-log-log4perl" ,perl-log-log4perl)
+       ;; We cannot use perl-unicode-collate here, because otherwise the
+       ;; hardcoded hashes in the tests would differ.  See
+       ;; https://mail-archive.com/debian-bugs-dist@lists.debian.org/msg1469249.html
+       ;;("perl-unicode-collate" ,perl-unicode-collate)
+       ("perl-unicode-normalize" ,perl-unicode-normalize)
+       ("perl-unicode-linebreak" ,perl-unicode-linebreak)
+       ("perl-encode-eucjpascii" ,perl-encode-eucjpascii)
+       ("perl-encode-jis2k" ,perl-encode-jis2k)
+       ("perl-encode-hanextra" ,perl-encode-hanextra)
+       ("perl-xml-libxml" ,perl-xml-libxml)
+       ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)
+       ("perl-xml-libxslt" ,perl-xml-libxslt)
+       ("perl-xml-writer" ,perl-xml-writer)
+       ("perl-sort-key" ,perl-sort-key)
+       ("perl-text-csv" ,perl-text-csv)
+       ("perl-text-csv-xs" ,perl-text-csv-xs)
+       ("perl-text-roman" ,perl-text-roman)
+       ("perl-uri" ,perl-uri)
+       ("perl-text-bibtex" ,perl-text-bibtex)
+       ("perl-libwww" ,perl-libwww)
+       ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
+       ("perl-business-isbn" ,perl-business-isbn)
+       ("perl-business-issn" ,perl-business-issn)
+       ("perl-business-ismn" ,perl-business-ismn)
+       ("perl-lingua-translit" ,perl-lingua-translit)))
+    (native-inputs
+     `(("perl-config-autoconf" ,perl-config-autoconf)
+       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
+       ("perl-module-build" ,perl-module-build)
+       ;; for tests
+       ("perl-file-which" ,perl-file-which)
+       ("perl-test-more" ,perl-test-most) ; FIXME: "more" would be sufficient
+       ("perl-test-differences" ,perl-test-differences)))
+    (home-page "http://biblatex-biber.sourceforge.net/")
+    (synopsis "Backend for the BibLaTeX citation management tool")
+    (description "Biber is a BibTeX replacement for users of biblatex.  Among
+other things it comes with full Unicode support.")
+    (license license:artistic2.0)))
+
+(define-public rubber
+  (package
+    (name "rubber")
+    (version "1.1")
+    (source (origin
+             (method url-fetch)
+             (uri (list (string-append "https://launchpad.net/rubber/trunk/"
+                                       version "/+download/rubber-"
+                                       version ".tar.gz")
+                        (string-append "http://ebeffara.free.fr/pub/rubber-"
+                                       version ".tar.gz")))
+             (sha256
+              (base32
+               "1xbkv8ll889933gyi2a5hj7hhh216k04gn8fwz5lfv5iz8s34gbq"))))
+    (build-system gnu-build-system)
+    (arguments '(#:tests? #f))                    ; no `check' target
+    (inputs `(("texinfo" ,texinfo)
+              ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+              ("which" ,which)))
+    (home-page "https://launchpad.net/rubber")
+    (synopsis "Wrapper for LaTeX and friends")
+    (description
+     "Rubber is a program whose purpose is to handle all tasks related to the
+compilation of LaTeX documents.  This includes compiling the document itself,
+of course, enough times so that all references are defined, and running BibTeX
+to manage bibliographic references.  Automatic execution of dvips to produce
+PostScript documents is also included, as well as usage of pdfLaTeX to produce
+PDF documents.")
+    (license license:gpl2+)))
+
+(define-public texmaker
+  (package
+    (name "texmaker")
+    (version "5.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.xm1math.net/texmaker/texmaker-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "0vrj9w5lk3vf6138n5bz8phmy3xp5kv4dq1rgirghcf4hbxdyx30"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Qt has its own configuration utility.
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "qmake"
+                       (string-append "PREFIX=" out)
+                       (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)
+       ("qtbase" ,qtbase)
+       ("qtscript" ,qtscript)
+       ("qtwebkit" ,qtwebkit)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://www.xm1math.net/texmaker/")
+    (synopsis "LaTeX editor")
+    (description "Texmaker is a program that integrates many tools needed to
+develop documents with LaTeX, in a single application.")
+    (license license:gpl2+)))
+
+(define-public teximpatient
+  (package
+    (name "teximpatient")
+    (version "2.4")
+    (source (origin
+              (method url-fetch/tarbomb)
+              (uri (string-append "mirror://gnu/" name "/" name "-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0h56w22d99dh4fgld4ssik8ggnmhmrrbnrn1lnxi1zr0miphn1sd"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there are none
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-packaging-error
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This file should have been part of the tarball.
+             (install-file (car
+                            (find-files
+                             (assoc-ref inputs "automake")
+                             "^install-sh$"))
+                           ".")
+             ;; Remove generated file.
+             (delete-file "book.pdf")
+             #t)))))
+    (native-inputs
+     `(("texlive" ,(texlive-union (list texlive-latex-amsfonts
+                                        texlive-fonts-amsfonts
+                                        texlive-fonts-adobe-palatino
+                                        texlive-fonts-adobe-zapfding
+                                        texlive-fonts-knuth-lib
+                                        texlive-fonts-mflogo-font
+                                        texlive-generic-pdftex)))
+       ("automake" ,automake)))
+    (home-page "https://www.gnu.org/software/teximpatient/")
+    (synopsis "Book on TeX, plain TeX and Eplain")
+    (description "@i{TeX for the Impatient} is a ~350 page book on TeX,
+plain TeX, and Eplain, originally written by Paul Abrahams, Kathryn Hargreaves,
+and Karl Berry.")
+    (license license:fdl1.3+)))
+
+(define-public lyx
+  (package
+    (name "lyx")
+    (version "2.3.2-2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://ftp.lyx.org/pub/lyx/stable/"
+                                  (version-major+minor version) ".x/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0vr0qwis6rhind6azfa270hqxci7rj8qb1kk5x6lm80mc34nvrqi"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "3rdparty")
+                  #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags `("-DLYX_USE_QT=QT5"
+                           "-DLYX_EXTERNAL_BOOST=1"
+                           "-DLYX_INSTALL=1"
+                           "-DLYX_RELEASE=1"
+                           ,(string-append "-DLYX_INSTALL_PREFIX="
+                                           (assoc-ref %outputs "out")
+                                           ;; Exact name and level is necessary.
+                                           "/lyx" ,(version-major+minor version)))
+       #:phases
+       (modify-phases %standard-phases
+         ;; See ;; https://www.lyx.org/trac/changeset/3a123b90af838b08680471d87170c38e56787df9/lyxgit
+         (add-after 'unpack 'fix-compilation-with-boost-1.69
+           (lambda _
+             (substitute* "src/support/FileName.cpp"
+               (("^template struct boost::detail::crc_table_t.*") ""))
+             #t))
+         (add-after 'unpack 'patch-python
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* '("src/support/os.cpp")
+               (("\"python ")
+                (string-append "\""
+                               (assoc-ref inputs "python")
+                               "/bin/python ")))
+             #t))
+         (add-after 'patch-python 'patch-desktop-file
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "lib/lyx.desktop.in"
+               (("Exec=")
+                (string-append "Exec="
+                               (assoc-ref outputs "out")
+                               "/")))
+             #t))
+         (add-before 'check 'setenv-check
+           (lambda _
+             ;; Create missing file that would cause tests to fail.
+             (with-output-to-file (string-append "../lyx-"
+                                                 ,version
+                                                 "/src/tests/check_layout.cmake")
+               (const #t))
+             (setenv (string-append "LYX_DIR_"
+                                    (string-join
+                                      (string-split
+                                        ,(version-major+minor version) #\-)) "x")
+                     (string-append (getcwd) "/../lyx-" ,version "/lib"))
+             #t))
+         (add-after 'install 'install-symlinks
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               (symlink (string-append "../lyx" ,(version-major+minor version)
+                                       "/bin/lyx" ,(version-major+minor version))
+                        (string-append out "/bin/lyx" ,(version-major+minor version)))
+               #t))))))
+    (inputs
+     `(("boost" ,boost)
+       ("hunspell" ,hunspell)           ; Note: Could also use aspell instead.
+       ("libx11" ,libx11)
+       ("mythes" ,mythes)
+       ("python" ,python-2)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("texlive" ,(texlive-union (list texlive-fonts-ec)))))
+    ;; FIXME: Python 3.7.0 cannot be used because the test infrastructure
+    ;; "requires a bytes-like object, not 'str'".  This may be fixed with
+    ;; upgrades to Python.
+    (native-inputs
+     `(("python" ,python-2)
+       ("pkg-config" ,pkg-config)
+       ("bc" ,bc)))
+    (home-page "https://www.lyx.org/")
+    (synopsis "Document preparation system with GUI")
+    (description "LyX is a document preparation system.  It excels at letting
+you create complex technical and scientific articles with mathematics,
+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:
 
-(define-public texlive
+@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")
-   (version "20180414")
-   (source #f)
-   (build-system trivial-build-system)
-   (inputs `(("bash" ,bash) ; for wrap-program
-             ("texlive-bin" ,texlive-bin)
-             ("texlive-texmf" ,texlive-texmf)))
-   (native-search-paths
-    (list (search-path-specification
-           (variable "TEXMFLOCAL")
-           (files '("share/texmf-local")))))
-   (arguments
-    `(#:modules ((guix build utils))
-      #:builder
-        ;; Build the union of texlive-bin and texlive-texmf, but take the
-        ;; conflicting subdirectory share/texmf-dist from texlive-texmf.
-        (begin
-          (use-modules (guix build utils))
-          (let ((out (assoc-ref %outputs "out"))
-                (bin (assoc-ref %build-inputs "texlive-bin"))
-                (texmf (assoc-ref %build-inputs "texlive-texmf"))
-                (bash (assoc-ref %build-inputs "bash")))
-               (mkdir out)
-               (with-directory-excursion out
-                 (for-each
-                   (lambda (name)
-                     (symlink (string-append bin "/" name) name))
-                   '("include" "lib"))
-                 (mkdir "bin")
-                 (with-directory-excursion "bin"
-                   (setenv "PATH" (string-append bash "/bin"))
-                   (for-each
-                     (lambda (name)
-                       (symlink name (basename name))
-                       (wrap-program
-                         (basename name)
-                         `("TEXMFCNF" =
-                           (,(string-append texmf "/share/texmf-dist/web2c")))))
-                     (find-files (string-append bin "/bin/") "")))
-                 (mkdir "share")
-                 (with-directory-excursion "share"
-                   (for-each
-                     (lambda (name)
-                       (symlink (string-append bin "/share/" name) name))
-                     '("info" "man" "tlpkg"))
-                   (for-each
-                     (lambda (name)
-                       (symlink (string-append texmf "/share/" name) name))
-                     '("texmf-dist" "texmf-var"))))
-               #t))))
-   (synopsis "TeX Live, a package of the TeX typesetting system")
-   (description
-    "TeX Live provides a comprehensive TeX document production system.
-It includes all the major TeX-related programs, macro packages, and fonts
-that are free software, including support for many languages around the
-world.
+    (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"))))))
+    (propagated-inputs
+     `(("texlive-latex-xcolor" ,texlive-latex-xcolor)))
+    (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 separation 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)))
 
-This package contains the complete TeX Live distribution.")
-   (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
-   (home-page "https://www.tug.org/texlive/")))
+(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 perl-text-bibtex
+(define-public texlive-latex-examplep
   (package
-    (name "perl-text-bibtex")
-    (version "0.85")
+    (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 url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/A/AM/AMBS/Text-BibTeX-"
-                           version ".tar.gz"))
+       (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
-         "036kxgbn1jf70pfm2lmjlzjwnhbkd888fp5lyvmkjpdd15gla18h"))))
-    (build-system perl-build-system)
+         "1g5cyxwdfznq4lk9zl6fkjkapmhmwd2cm4m5aibxj20qgwnaggfz"))))
+    (build-system trivial-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'add-output-directory-to-rpath
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "inc/MyBuilder.pm"
-               (("-Lbtparse" line)
-                (string-append "-Wl,-rpath="
-                               (assoc-ref outputs "out") "/lib " line)))
-             #t))
-         (add-after 'unpack 'install-libraries-to-/lib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "Build.PL"
-               (("lib64") "lib"))
-             #t)))))
-    (native-inputs
-     `(("perl-capture-tiny" ,perl-capture-tiny)
-       ("perl-config-autoconf" ,perl-config-autoconf)
-       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
-       ("perl-module-build" ,perl-module-build)))
-    (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
-at many different levels: you may work with BibTeX entries as simple field to
-string mappings, or get at the original form of the data as a list of simple
-values (strings, macros, or numbers) pasted together.")
-    (license license:perl-license)))
+     `(#: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 biber
+(define-public texlive-fonts-xypic
   (package
-    (name "biber")
-    (version "2.7")
+    (name "texlive-fonts-xypic")
+    (version (number->string %texlive-revision))
     (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 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
-                "17wd80jg98qyddhvz4cin8779ycvppaf2va77r1lyvymjz6w9bx0"))))
-    (build-system perl-build-system)
+                "0p20v1257kwsqnrk98cdhhiz2viv8l3ly4xay4by0an3j37m9xs3"))))
+    (build-system trivial-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-programs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (perl5lib (getenv "PERL5LIB")))
-               (wrap-program (string-append out "/bin/biber")
-                 `("PERL5LIB" ":" prefix
-                   (,(string-append perl5lib ":" out
-                                    "/lib/perl5/site_perl")))))
-             #t)))))
-    (inputs
-     `(("perl-autovivification" ,perl-autovivification)
-       ("perl-class-accessor" ,perl-class-accessor)
-       ("perl-data-dump" ,perl-data-dump)
-       ("perl-data-compare" ,perl-data-compare)
-       ("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-ipc-cmd" ,perl-ipc-cmd)
-       ("perl-ipc-run3" ,perl-ipc-run3)
-       ("perl-list-allutils" ,perl-list-allutils)
-       ("perl-list-moreutils" ,perl-list-moreutils)
-       ("perl-mozilla-ca" ,perl-mozilla-ca)
-       ("perl-regexp-common" ,perl-regexp-common)
-       ("perl-log-log4perl" ,perl-log-log4perl)
-       ;; We cannot use perl-unicode-collate here, because otherwise the
-       ;; hardcoded hashes in the tests would differ.  See
-       ;; https://mail-archive.com/debian-bugs-dist@lists.debian.org/msg1469249.html
-       ;;("perl-unicode-collate" ,perl-unicode-collate)
-       ("perl-unicode-normalize" ,perl-unicode-normalize)
-       ("perl-unicode-linebreak" ,perl-unicode-linebreak)
-       ("perl-encode-eucjpascii" ,perl-encode-eucjpascii)
-       ("perl-encode-jis2k" ,perl-encode-jis2k)
-       ("perl-encode-hanextra" ,perl-encode-hanextra)
-       ("perl-xml-libxml" ,perl-xml-libxml)
-       ("perl-xml-libxml-simple" ,perl-xml-libxml-simple)
-       ("perl-xml-libxslt" ,perl-xml-libxslt)
-       ("perl-xml-writer" ,perl-xml-writer)
-       ("perl-sort-key" ,perl-sort-key)
-       ("perl-text-csv" ,perl-text-csv)
-       ("perl-text-csv-xs" ,perl-text-csv-xs)
-       ("perl-text-roman" ,perl-text-roman)
-       ("perl-uri" ,perl-uri)
-       ("perl-text-bibtex" ,perl-text-bibtex)
-       ("perl-libwww" ,perl-libwww)
-       ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
-       ("perl-business-isbn" ,perl-business-isbn)
-       ("perl-business-issn" ,perl-business-issn)
-       ("perl-business-ismn" ,perl-business-ismn)
-       ("perl-lingua-translit" ,perl-lingua-translit)))
+     `(#: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
-     `(("perl-config-autoconf" ,perl-config-autoconf)
-       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
-       ("perl-module-build" ,perl-module-build)
-       ;; for tests
-       ("perl-file-which" ,perl-file-which)
-       ("perl-test-more" ,perl-test-most) ; FIXME: "more" would be sufficient
-       ("perl-test-differences" ,perl-test-differences)))
-    (home-page "http://biblatex-biber.sourceforge.net/")
-    (synopsis "Backend for the BibLaTeX citation management tool")
-    (description "Biber is a BibTeX replacement for users of biblatex.  Among
-other things it comes with full Unicode support.")
-    (license license:artistic2.0)))
-
-(define-public rubber
-  (package
-    (name "rubber")
-    (version "1.1")
-    (source (origin
-             (method url-fetch)
-             (uri (list (string-append "https://launchpad.net/rubber/trunk/"
-                                       version "/+download/rubber-"
-                                       version ".tar.gz")
-                        (string-append "http://ebeffara.free.fr/pub/rubber-"
-                                       version ".tar.gz")))
-             (sha256
-              (base32
-               "1xbkv8ll889933gyi2a5hj7hhh216k04gn8fwz5lfv5iz8s34gbq"))))
-    (build-system gnu-build-system)
-    (arguments '(#:tests? #f))                    ; no `check' target
-    (inputs `(("texinfo" ,texinfo)
-              ("python" ,python-2) ; incompatible with Python 3 (print syntax)
-              ("which" ,which)))
-    (home-page "https://launchpad.net/rubber")
-    (synopsis "Wrapper for LaTeX and friends")
-    (description
-     "Rubber is a program whose purpose is to handle all tasks related to the
-compilation of LaTeX documents.  This includes compiling the document itself,
-of course, enough times so that all references are defined, and running BibTeX
-to manage bibliographic references.  Automatic execution of dvips to produce
-PostScript documents is also included, as well as usage of pdfLaTeX to produce
-PDF documents.")
-    (license license:gpl2+)))
+     `(("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 texmaker
+(define-public texlive-bibtex
   (package
-    (name "texmaker")
-    (version "5.0.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://www.xm1math.net/texmaker/texmaker-"
-                                  version ".tar.bz2"))
-              (sha256
-               (base32
-                "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9"))))
-    (build-system gnu-build-system)
+    (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
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; Qt has its own configuration utility.
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "qmake"
-                       (string-append "PREFIX=" out)
-                       (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)
-       ("qtbase" ,qtbase)
-       ("qtscript" ,qtscript)
-       ("qtwebkit" ,qtwebkit)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.xm1math.net/texmaker/")
-    (synopsis "LaTeX editor")
-    (description "Texmaker is a program that integrates many tools needed to
-develop documents with LaTeX, in a single application.")
-    (license license:gpl2+)))
-
+     `(#: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 teximpatient
+(define-public texlive-fonts-charter
   (package
-    (name "teximpatient")
-    (version "2.4")
+    (name "texlive-fonts-charter")
+    (version (number->string %texlive-revision))
     (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/" name "/" name "-"
-                                  version ".tar.gz"))
+              (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
-                "0h56w22d99dh4fgld4ssik8ggnmhmrrbnrn1lnxi1zr0miphn1sd"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'check)
-         ;; Unfortunately some mistakes have been made in packaging.
-         ;; Work around them here ...
-         (replace 'unpack
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((srcdir "teximpatient-2.4"))
-               (system* "tar" "-xzf" (assoc-ref inputs "source")
-                        (string-append "--one-top-level=" srcdir))
-               (delete-file (string-append srcdir "/book.pdf"))
-               (install-file (car
-                              (find-files
-                               (assoc-ref inputs "automake")
-                               "^install-sh$"))
-                             srcdir)
-               (chdir srcdir)))))))
-    (native-inputs
-     `(("texlive" ,texlive)
-       ("automake" ,automake)))
-    (home-page "https://www.gnu.org/software/teximpatient/")
-    (synopsis "Book on TeX, plain TeX and Eplain")
-    (description "@i{TeX for the Impatient} is a ~350 page book on TeX,
-plain TeX, and Eplain, originally written by Paul Abrahams, Kathryn Hargreaves,
-and Karl Berry.")
-    (license license:fdl1.3+)))
-
-(define-public lyx
-  (package
-    (name "lyx")
-    (version "2.2.3")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://ftp.lyx.org/pub/lyx/stable/2.2.x/"
-                                 name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0xvaz0i371nn2ndinc0d3ywj76ivb62649a4sdgwbivisiahd2fj"))
-             (patches (search-patches "lyx-2.2.3-fix-test.patch"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                (delete-file-recursively "3rdparty")
-                #t))))
-    (build-system cmake-build-system)
+                "0yvib45xxff3jm5270zij4q888pivbc18cqs7lz4pqfhn1am4wnv"))))
+    (build-system trivial-build-system)
     (arguments
-     `(#:configure-flags `("-DLYX_USE_QT=QT5"
-                           "-DLYX_EXTERNAL_BOOST=1"
-                           "-DLYX_INSTALL=1"
-                           "-DLYX_RELEASE=1"
-                           ,(string-append "-DLYX_INSTALL_PREFIX="
-                                           (assoc-ref %outputs "out")
-                                           ;; Exact name and level is necessary.
-                                           "/lyx2.2"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-python
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* '("src/support/os.cpp")
-              (("\"python ")
-               (string-append "\""
-                              (assoc-ref inputs "python-2")
-                              "/bin/python ")))
-             #t))
-         (add-after 'patch-python 'patch-installer
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "CMakeLists.txt"
-              (("/usr/local/man/man1")
-               (string-append (assoc-ref outputs "out")
-                              "/share/man/man1")))
-             #t))
-         (add-after 'patch-python 'patch-desktop-file
-           (lambda* (#:key outputs #:allow-other-keys)
-             (substitute* "lib/lyx.desktop.in"
-              (("Exec=")
-               (string-append "Exec="
-                              (assoc-ref outputs "out")
-                              "/")))
-             #t))
-         (add-before 'check 'setenv-check
-           (lambda _
-             (setenv "LYX_DIR_22x" (string-append (getcwd) "/../lyx-"
-                                                  ,version "/lib"))
-             #t))
-         (add-after 'install 'install-symlinks
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (mkdir-p (string-append out "/bin"))
-               (symlink "../lyx2.2/bin/lyx2.2"
-                (string-append out "/bin/lyx2.2"))
-               #t))))))
-    (inputs
-     `(("boost" ,boost)
-       ("hunspell" ,hunspell) ; Note: Could also use aspell instead.
-       ("libx11" ,libx11)
-       ("python-2" ,python-2)
-       ("qtbase" ,qtbase)
-       ("qtsvg" ,qtsvg)
-       ("zlib" ,zlib)))
-    (propagated-inputs
-     `(("texlive" ,texlive))) ; article.cls is in texmf-dist.
+     `(#: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
-     `(("python-2" ,python-2)
-       ("pkg-config" ,pkg-config)
-       ("bc" ,bc)))
-    (home-page "https://www.lyx.org/")
-    (synopsis "Document preparation system with GUI")
-    (description "LyX is a document preparation system.  It excels at letting
-you create complex technical and scientific articles with mathematics,
-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
+     `(("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-latex-media9")
+    (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/latex/media9"))
+                                        "/tex/context/base"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "01ysky8h8s6q12dxfahkzwhbkc9j5wl50xzcczy0cbjx9f6aj9kv"))))
+                "0rlx4qqijms1n64gjx475kvip8l322fh7v17zkmwp1l1g0w3vlyz"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -4444,65 +6387,152 @@ required: automatic sectioning and pagination, spell checking and so forth.")
        (begin
          (use-modules (guix build utils))
          (let ((target (string-append (assoc-ref %outputs "out")
-                                      "/share/texmf-dist/tex/latex/media9")))
+                                      "/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/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)))
+    (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-ocgx2
+(define-public texlive-latex-beamer
   (package
-    (name "texlive-latex-ocgx2")
+    (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/ocgx2"))
+                                        "/tex/latex/beamer"))
                     (revision %texlive-revision)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "12kkl7n534j0p4frwyrlw22dc3ik50kxv97cxp4xpmji13m0hxpf"))))
+                "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/ogcx2")))
+                                      "/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))))
-    (home-page "https://www.ctan.org/pkg/ocgx2")
-    (synopsis "Provide OCG (Optional Content Groups) support within a PDF document")
+    (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+))))
+
+(define-public texlive-latex-xmpincl
+  (package
+    (name "texlive-latex-xmpincl")
+    (version (number->string %texlive-revision))
+    (source
+     (origin
+       (method svn-fetch)
+       (uri (texlive-ref "latex" "xmpincl"))
+       (sha256
+        (base32
+         "0lq3dfb4fsw955gjwllnk7cg00ciq5mva64mlpbva6g2jz117734"))))
+    (build-system texlive-build-system)
+    (arguments '(#:tex-directory "latex/xmpincl"))
+    (home-page "http://www.ctan.org/pkg/xmpincl")
+    (synopsis "Include eXtensible Metadata Platform data in pdfLaTeX")
     (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
+     "The XMP (eXtensible Metadata platform) is a framework to add metadata to
+digital material to enhance the workflow in publication.  The essence is that
+the metadata is stored in an XML file, and this XML stream is then embedded in
+the file to which it applies.")
+    (license license:gpl3+)))
 
-It also ensures compatibility with the @code{media9} and @code{animate} packages.")
-    (license license:lppl)))
+(define-public texlive-latex-pdfx
+  (package
+    (name "texlive-latex-pdfx")
+    (version (number->string %texlive-revision))
+    (source
+     (origin
+       (method svn-fetch)
+       (uri (texlive-ref "latex" "pdfx"))
+       (sha256
+        (base32
+         "0ikxg8yzq78hy5b9x13d4nah46d0yvmwlqmdri06pygbx116dcac"))))
+    (build-system texlive-build-system)
+    (arguments
+     '(#:tex-directory "latex/pdfx"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-encoding
+           (lambda _
+             (substitute* "pdfx.dtx"
+               (("    .+umaczy") "umaczy"))
+             #t))
+         (add-before 'install 'install-tex-files
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out")
+                                          "/share/texmf-dist/tex/latex/pdfx")))
+               (mkdir-p target)
+               (copy-recursively (assoc-ref inputs "texlive-tex-pdfx") target)
+               ;; Install the generated version in the "install" phase.
+               (delete-file (string-append target "/pdfx.sty"))
+               #t))))))
+    (propagated-inputs
+     `(("texlive-generic-pdftex" ,texlive-generic-pdftex)))
+    (native-inputs
+     `(("texlive-tex-pdfx"
+        ,(origin
+           (method svn-fetch)
+           (uri (svn-reference
+                 (url (string-append "svn://www.tug.org/texlive/tags/"
+                                     %texlive-tag "/Master/texmf-dist/"
+                                     "/tex/latex/pdfx"))
+                 (revision %texlive-revision)))
+           (file-name (string-append "texlive-tex-latex-pdfx-" version "-checkout"))
+           (sha256
+            (base32
+             "14j1zsvqc59ims3sk34v6km8db6cimks28y5fcxcr5mi2ykvj4vf"))))))
+    (home-page "https://www.ctan.org/pkg/pdfx")
+    (synopsis "PDF/X and PDF/A support for pdfTeX, LuaTeX and XeTeX")
+    (description
+     "This package helps LaTeX users to create PDF/X, PFD/A and other
+standards-compliant PDF documents with pdfTeX, LuaTeX and XeTeX.")
+    (license license:lppl1.2+)))