summary refs log tree commit diff
path: root/gnu/packages/tex.scm
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2021-05-09 21:29:46 +0200
committerMarius Bakke <marius@gnu.org>2021-05-09 21:29:46 +0200
commitf03426420497cd9839f5fb3cb547dbecd8d6053b (patch)
tree220cdbab5b58b27c63d2df3ee711ad4bfdda074b /gnu/packages/tex.scm
parent3cf1afb7e7249992b2db2f4f00899fd22237e89a (diff)
parent069399ee9dbf75b7c89583f03346a63b2cfe4ac6 (diff)
downloadguix-f03426420497cd9839f5fb3cb547dbecd8d6053b.tar.gz
Merge branch 'master' into core-updates
 Conflicts:
	gnu/local.mk
	gnu/packages/bioinformatics.scm
	gnu/packages/django.scm
	gnu/packages/gtk.scm
	gnu/packages/llvm.scm
	gnu/packages/python-web.scm
	gnu/packages/python.scm
	gnu/packages/tex.scm
	guix/build-system/asdf.scm
	guix/build/emacs-build-system.scm
	guix/profiles.scm
Diffstat (limited to 'gnu/packages/tex.scm')
-rw-r--r--gnu/packages/tex.scm515
1 files changed, 514 insertions, 1 deletions
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index cdb0218acf..dbc9def842 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -1356,6 +1356,156 @@ Modern family of fonts.  The Euler fonts are supported by separate packages;
 details can be found in the documentation.")
       (license license:silofl1.1))))
 
+;; XXX: we can only change texlive-amsfonts on the core-updates branch.  This
+;; patched version generates only tfm files for fonts provided by the source
+;; files of this package, not variants of the fonts provided by texlive-cm.
+(define-public texlive-amsfonts/patched
+  (let ((template (simple-texlive-package
+                   "texlive-amsfonts"
+                   (list "/source/latex/amsfonts/"
+                         "/fonts/source/public/amsfonts/"
+                         "/fonts/type1/public/amsfonts/"
+                         "/fonts/afm/public/amsfonts/"
+                         "/fonts/map/dvips/amsfonts/"
+                         "/tex/plain/amsfonts/"
+                         "/doc/fonts/amsfonts/")
+                   (base32
+                    "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:build-targets _ #t)
+          '(list "amsfonts.ins"))
+         ((#:tex-directory _ #t)
+          "latex/amsfonts")
+         ((#:modules modules '())
+          `((guix build texlive-build-system)
+            (guix build utils)
+            (ice-9 match)
+            (srfi srfi-1)
+            (srfi srfi-26)))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-before 'build 'build-fonts
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (let ((mf  (assoc-ref inputs "texlive-union"))
+                       (src (string-append (getcwd) "/fonts/source/public/amsfonts/")))
+                   ;; Make METAFONT reproducible
+                   (setenv "SOURCE_DATE_EPOCH" "1")
+                   ;; 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 src ":"
+                                          src "/cmextra:"
+                                          src "/cyrillic:"
+                                          src "/dummy:"
+                                          src "/symbols:"
+                                          mf "/share/texmf-dist/metafont/base:"
+                                          (assoc-ref inputs "texlive-cm")
+                                          "/share/texmf-dist/fonts/source/public/cm")))
+                 (let ((build (string-append (getcwd) "/build-fonts")))
+                   (mkdir-p build)
+                   (with-directory-excursion "fonts/source/public/amsfonts"
+                     (for-each (lambda (font)
+                                 (format #t "building font ~a\n" (basename font ".mf"))
+                                 (with-directory-excursion (dirname font)
+                                   (invoke "mf" "-progname=mf"
+                                           (string-append "-output-directory=" build)
+                                           (string-append "\\"
+                                                          "mode:=ljfour; "
+                                                          "mag:=1; "
+                                                          "nonstopmode; "
+                                                          "input "
+                                                          (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.
+                 (let ((build (string-append (getcwd) "/build-fonts/euler")))
+                   (mkdir build)
+                   (with-directory-excursion "fonts/afm/public/amsfonts/"
+                     (for-each (lambda (font)
+                                 (format #t "converting afm font ~a\n" (basename font ".afm"))
+                                 (invoke "afm2tfm" font
+                                         (string-append build "/"
+                                                        (basename font ".tfm"))))
+                               (find-files "(cmextra|cyrillic|dummy|euler|symbols)"
+                                           "\\.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.
+                   (setenv "TEXINPUTS"
+                           (string-append build "//:"
+                                          (getcwd) "/fonts/afm/public/amsfonts//:"
+                                          (getcwd) "/source/latex/amsfonts//:"
+                                          (assoc-ref inputs "texlive-union") "//"))
+                   (with-directory-excursion build
+                     (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))
+             (add-after 'install 'install-generated-fonts
+               (lambda* (#:key inputs outputs #:allow-other-keys)
+                 (copy-recursively "build-fonts"
+                                   (string-append
+                                    (assoc-ref outputs "out")
+                                    "/share/texmf-dist/fonts/tfm/public/amsfonts"))
+                 #t))))))
+      (native-inputs
+       `(("texlive-union" ,(texlive-union (list texlive-tex-fontinst-base
+                                                texlive-cm
+                                                texlive-metafont-base)))))
+      (home-page "https://www.ctan.org/pkg/amsfonts")
+      (synopsis "TeX fonts from the American Mathematical Society")
+      (description
+       "This package provides an extended set of fonts for use in mathematics,
+including: extra mathematical symbols; blackboard bold letters (uppercase
+only); fraktur letters; subscript sizes of bold math italic and bold Greek
+letters; subscript sizes of large symbols such as sum and product; added sizes
+of the Computer Modern small caps font; cyrillic fonts (from the University of
+Washington); Euler mathematical fonts.  All fonts are provided as Adobe Type 1
+files, and all except the Euler fonts are provided as Metafont source.  The
+distribution also includes the canonical Type 1 versions of the Computer
+Modern family of fonts.  The Euler fonts are supported by separate packages;
+details can be found in the documentation.")
+      (license license:silofl1.1))))
+
 (define-public texlive-fonts-amsfonts
   (deprecated-package "texlive-fonts-amsfonts" texlive-amsfonts))
 
@@ -3581,6 +3731,31 @@ traditional and reformed German orthography as well as for the Austrian and
 Swiss varieties of German.")
     (license license:lppl1.3+)))
 
+(define-public texlive-babel-swedish
+  (let ((template (simple-texlive-package
+                   "texlive-babel-swedish"
+                   (list "/source/generic/babel-swedish/")
+                   (base32
+                    "0swdg2l5i7cbcvy4q4xgsnwwnbxiyvs6f5b72kiw7mjn24v27g8f"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "generic/babel-swedish")
+         ((#:build-targets _ '())
+          ''("swedish.ins")) ; TODO: use dtx and build documentation
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/generic/babel-swedish")))))))
+      (home-page "https://www.ctan.org/pkg/babel-swedish")
+      (synopsis "Babel support for Swedish")
+      (description "This package provides the language definition file for
+support of Swedish in @code{babel}.  It provides all the necessary macros,
+definitions and settings to typeset Swedish documents.")
+      (license license:lppl1.3c+))))
+
 (define-public texlive-latex-cyrillic
   (package
     (name "texlive-latex-cyrillic")
@@ -3778,6 +3953,18 @@ It includes little more than the required set of LaTeX packages.")
                      '()
                      default-packages)))))
 
+(define-public texlive-default-updmap.cfg
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://tug.org/svn/texlive/tags/"
+                        %texlive-tag "/Master/texmf-dist/web2c/updmap.cfg"
+                        "?revision=" (number->string %texlive-revision)))
+    (file-name (string-append "updmap.cfg-"
+                              (number->string %texlive-revision)))
+    (sha256
+     (base32
+      "0faqknqxs80qp9ywk0by5k85s0yalg97c4lja4q56lsyblrr4j7i"))))
+
 ;;; TODO: Add a TeX Live profile hook computing fonts maps (and others?)
 ;;; configuration from the packages in the profile, similar to what's done
 ;;; below.
@@ -8435,6 +8622,332 @@ basic Adobe Type 1 fonts (Times, Helvetica and Courier) in LaTeX using
 LY1 encoding.")
     (license license:lppl1.0+)))
 
+(define-public texlive-sectsty
+  (let ((template (simple-texlive-package
+                   "texlive-sectsty"
+                   (list "/doc/latex/sectsty/"
+                         "/source/latex/sectsty/")
+                   (base32
+                    "08m90j7cg6w46vnwgsp10clpj4l6c9a6l8dad20q3mnd32l84hbl"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/sectsty")
+         ((#:build-targets _ '())
+          ''("sectsty.ins"))
+         ((#:tex-format _ "latex") "latex")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/sectsty")))))))
+      (home-page "https://www.ctan.org/pkg/sectsty")
+      (synopsis "Control sectional headers")
+      (description "This is a LaTeX2ε package to help change the style of any or
+all of LaTeX's sectional headers in the article, book, or report classes.
+Examples include the addition of rules above or below a section title. ")
+      (license license:lppl1.2+))))
+
+(define-public texlive-morefloats
+  (let ((template (simple-texlive-package
+                   "texlive-morefloats"
+                   (list "/doc/latex/morefloats/"
+                         "/source/latex/morefloats/")
+                   (base32
+                    "0n0405fjxyjlbjspzfvhl0wjkwiqicj3hk8fa0g7agw72wlxscpl"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/morefloats")
+         ((#:build-targets _ '())
+          ''("morefloats.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/morefloats")))))))
+      (home-page "https://www.ctan.org/pkg/morefloats")
+      (synopsis "Increase the number of simultaneous LaTeX floats")
+      (description "LaTeX can, by default, only cope with 18 outstanding floats;
+any more, and you get the error “too many unprocessed floats”.  This package
+releases the limit; TeX itself imposes limits (which are independent of the
+help offered by e-TeX).
+
+However, if your floats can’t be placed anywhere, extending the number of
+floats merely delays the arrival of the inevitable error message.")
+      (license license:lppl1.3c+))))
+
+(define-public texlive-ifmtarg
+  (let ((template (simple-texlive-package
+                   "texlive-ifmtarg"
+                   (list "/doc/latex/ifmtarg/"
+                         "/source/latex/ifmtarg/")
+                   (base32
+                    "0cwjn4bhq9zyfxr1595hgyc1d7rcsf9lva55x98q81xy5xrrmrb2"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/ifmtarg")
+         ((#:build-targets _ '())
+          ''("ifmtarg.ins"))
+         ((#:tex-format _ "latex") "latex")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/ifmtarg")))))))
+      (inputs
+       `(("texlive-latex-filecontents" ,texlive-latex-filecontents)))
+      (home-page "https://www.ctan.org/pkg/ifmtarg")
+      (synopsis "If-then-else command for processing potentially empty arguments")
+      (description "This package provides a command for the LaTeX programmer for
+testing whether an argument is empty.")
+      (license license:lppl1.3c+))))
+
+(define-public texlive-pagenote
+  (let ((template (simple-texlive-package
+                   "texlive-pagenote"
+                   (list "/doc/latex/pagenote/"
+                         "/source/latex/pagenote/")
+                   (base32
+                    "0cqfqrfvnzq7ldaf255hcvi8xsfx8h7iha3hs8p9gdi3cfzbcmjm"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/pagenote")
+         ((#:build-targets _ '())
+          ''("pagenote.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/pagenote")))))))
+      (propagated-inputs
+       `(("texlive-ifmtarg" ,texlive-ifmtarg)))
+      (home-page "https://www.ctan.org/pkg/pagenote")
+      (synopsis "Notes at end of document")
+      (description "The pagenote package provides tagged notes on a separate
+page (also known as ‘end notes’).")
+      (license license:lppl1.3c+))))
+
+(define-public texlive-titling
+  (let ((template (simple-texlive-package
+                   "texlive-titling"
+                   (list "/doc/latex/titling/"
+                         "/source/latex/titling/")
+                   (base32
+                    "0pc3806kc9p2dizdghis0p0b00xs0gmlh2nmf94f5wasz5mkw6bk"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/titling")
+         ((#:build-targets _ '())
+          ''("titling.ins"))
+         ((#:tex-format _ "latex") "latex")
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/titling")))))))
+      (native-inputs
+       `(("texlive-cm" ,texlive-cm)))
+      (home-page "https://www.ctan.org/pkg/titling")
+      (synopsis "Control typesetting of the \\maketitle command")
+      (description "The @code{titling} package provides control over the
+typesetting of the @code{\\maketitle} command and @code{\\thanks} commands,
+and makes the \title, @code{\\author} and @code{\\date} information
+permanently available.  Multiple titles are allowed in a single document.  New
+titling elements can be added and a @code{titlepage} title can be centered on
+a physical page.")
+      (license license:lppl))))
+
+(define-public texlive-ifoddpage
+  (let ((template (simple-texlive-package
+                   "texlive-ifoddpage"
+                   (list "/source/latex/ifoddpage/")
+                   (base32
+                    "14x0haj3xjsk9dn2djg117sl7x5nbwgbivhjj3ichnxlgrlf1bis"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/ifoddpage")
+         ((#:build-targets _ '())
+          ''("ifoddpage.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/ifoddpage")))))))
+      (native-inputs
+       `(("texlive-ydoc" ,texlive-ydoc)))
+      (home-page "https://www.ctan.org/pkg/ifoddpage")
+      (synopsis "Determine if the current page is odd or even")
+      (description "This package provides an @code{\\ifoddpage} conditional to
+determine if the current page is odd or even.  The macro @code{\\checkoddpage}
+must be used directly before to check the page number using a label.  Two
+compiler runs are therefore required to achieve correct results.  In addition,
+the conditional @code{\\ifoddpageoronside} is provided which is also true in
+@code{oneside} mode where all pages use the odd page layout.")
+      (license license:lppl1.3))))
+
+(define-public texlive-storebox
+  (let ((template (simple-texlive-package
+                   "texlive-storebox"
+                   (list "/source/latex/storebox/")
+                   (base32
+                    "1ybpjfrria57fwvr9kriiw6y76ivwvsyb6ayp0bi750smsv8k5n1"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/storebox")
+         ((#:build-targets _ '())
+          ''("storebox.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/storebox")))))))
+      (native-inputs
+       `(("texlive-ydoc" ,texlive-ydoc)))
+      (home-page "https://www.ctan.org/pkg/storebox")
+      (synopsis "Storing information for reuse")
+      (description "The package provides \"store boxes\" whose user interface
+matches that of normal LaTeX \"save boxes\", except that the content of a
+store box appears at most once in the output PDF file, however often it is
+used.  The present version of the package supports pdfLaTeX and LuaLaTeX; when
+DVI is output, store boxes behave the same as save boxes.")
+      (license license:lppl1.3))))
+
+(define-public texlive-collectbox
+  (let ((template (simple-texlive-package
+                   "texlive-collectbox"
+                   (list "/source/latex/collectbox/")
+                   (base32
+                    "1k0bbphvr20k9hgpr3dv869h9ygxx3g8vjapkc63nq8i13crpsvz"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/collectbox")
+         ((#:build-targets _ '())
+          ''("collectbox.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/collectbox")))))))
+      (native-inputs
+       `(("texlive-ydoc" ,texlive-ydoc)))
+      (home-page "https://www.ctan.org/pkg/collectbox")
+      (synopsis "Collect and process macro arguments as boxes")
+      (description "The package provides macros to collect and process a macro
+argument (i.e., something which looks like a macro argument) as a horizontal
+box rather than as a real macro argument.  The \"arguments\" are stored as if
+they had been saved by @code{\\savebox} or by the @code{lrbox} environment.
+Grouping tokens @code{\\bgroup} and @code{\\egroup} may be used, which allows
+the user to have the beginning and end of a group in different macro
+invocations, or to place them in the begin and end code of an environment.
+Arguments may contain verbatim material or other special use of characters.
+The macros were designed for use within other macros.")
+      (license license:lppl1.3))))
+
+(define-public texlive-adjustbox
+  (let ((template (simple-texlive-package
+                   "texlive-adjustbox"
+                   (list "/doc/latex/adjustbox/"
+                         "/source/latex/adjustbox/")
+                   (base32
+                    "14vd0yd50bky2pbbjkn59q1aglnqpdhh8vwjdyan0jkzljsr2ch8"))))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:tex-directory _ '())
+          "latex/adjustbox")
+         ((#:build-targets _ '())
+          ''("adjustbox.ins"))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'chdir
+               (lambda _ (chdir "source/latex/adjustbox")))))))
+      (native-inputs
+       `(("texlive-ydoc" ,texlive-ydoc)))
+      (propagated-inputs
+       `(("texlive-latex-pgf" ,texlive-latex-pgf)
+         ("texlive-latex-varwidth" ,texlive-latex-varwidth)
+         ("texlive-latex-xkeyval" ,texlive-latex-xkeyval)
+         ("texlive-collectbox" ,texlive-collectbox)
+         ("texlive-ifoddpage" ,texlive-ifoddpage)
+         ("texlive-storebox" ,texlive-storebox)))
+      (home-page "https://www.ctan.org/pkg/adjustbox")
+      (synopsis "Graphics package-alike macros for “general” boxes")
+      (description "The package provides several macros to adjust boxed
+content.  One purpose is to supplement the standard @code{graphics} package,
+which defines the macros @code{\\resizebox}, @code{\\scalebox} and
+@code{\\rotatebox} , with the macros @code{\\trimbox} and @code{\\clipbox}.
+The main feature is the general @code{\\adjustbox} macro which extends the
+@code{key=value} interface of @code{\\includegraphics} from the
+@code{graphics} package and applies it to general text content.  Additional
+provided box macros are @code{\\lapbox}, @code{\\marginbox},
+@code{\\minsizebox}, @code{\\maxsizebox} and @code{\\phantombox}.")
+      (license license:lppl1.3))))
+
+(define-public texlive-tcolorbox
+  (let ((template (simple-texlive-package
+                   "texlive-tcolorbox"
+                   (list "/doc/latex/tcolorbox/"
+                         "/tex/latex/tcolorbox/")
+                   (base32
+                    "172lcnk6964alsga5w6kcvjhpjjcw1g9df73k8pyhl5lf4fmxa29")
+                   #:trivial? #true)))
+    (package
+      (inherit template)
+      (propagated-inputs
+       `(("texlive-etoolbox" ,texlive-etoolbox)
+         ("texlive-latex-environ" ,texlive-latex-environ)
+         ("texlive-latex-pgf" ,texlive-latex-pgf)
+         ("texlive-latex-tools" ,texlive-latex-tools)))
+      (home-page "https://www.ctan.org/pkg/tcolorbox")
+      (synopsis "Colored boxes, for LaTeX examples and theorems, etc")
+      (description "This package provides an environment for colored and
+framed text boxes with a heading line.  Optionally, such a box may be split in
+an upper and a lower part; thus the package may be used for the setting of
+LaTeX examples where one part of the box displays the source code and the
+other part shows the output.  Another common use case is the setting of
+theorems.  The package supports saving and reuse of source code and text
+parts.")
+      (license license:lppl1.3c+))))
+
+(define-public texlive-eurosym
+  (let ((template (simple-texlive-package
+                   "texlive-eurosym"
+                   (list "/doc/fonts/eurosym/"
+                         "/fonts/map/dvips/eurosym/"
+                         "/fonts/source/public/eurosym/"
+                         "/fonts/tfm/public/eurosym/"
+                         "/fonts/type1/public/eurosym/"
+                         "/tex/latex/eurosym/eurosym.sty")
+                   (base32
+                    "0ml24rxbl1yir4s3fjjxm0z7axklc3p33syg41b76zc7hck9mk8s")
+                   #:trivial? #true)))
+    (package
+      (inherit template)
+      (home-page "https://www.ctan.org/pkg/eurosym")
+      (synopsis "METAFONT and macros for Euro sign")
+      (description "This package provides the European currency symbol for the
+Euro implemented in METAFONT, using the official European Commission
+dimensions, and providing several shapes (normal, slanted, bold, outline).
+The package also includes a LaTeX package which defines the macro,
+pre-compiled font files, and documentation.")
+      (license (license:non-copyleft "file:///doc/fonts/eurosym/COPYING")))))
+
 (define-public texlive-kastrup
   (package
     (name "texlive-kastrup")