gnu: Add texlive-generic-ulem.
[jackhill/guix/guix.git] / gnu / packages / tex.scm
index 0112f88..81c0feb 100644 (file)
@@ -9,7 +9,9 @@
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +32,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system trivial)
   #:use-module (guix git-download)
   #:use-module (guix svn-download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gd)
@@ -47,6 +52,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages pdf)
                            (string-prefix? "mips64" s))))
       #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'configure-ghostscript-executable
+           ;; ps2eps.pl uses the "gswin32c" ghostscript executable on Windows,
+           ;; and the "gs" ghostscript executable on Unix. It detects Unix by
+           ;; checking for the existence of the /usr/bin directory. Since
+           ;; GuixSD does not have /usr/bin, it is also detected as Windows.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "utils/ps2eps/ps2eps-src/bin/ps2eps.pl"
+               (("gswin32c") "gs"))
+             (substitute* "texk/texlive/linked_scripts/epstopdf/epstopdf.pl"
+               (("\"gs\"")
+                (string-append "\"" (assoc-ref inputs "ghostscript") "/bin/gs\"")))
+             #t))
          (add-after 'install 'postint
            (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
              (let* ((out (assoc-ref outputs "out"))
                (with-directory-excursion "texlive-extra"
                  (apply unpack (list #:source texlive-extra))
                  (apply patch-source-shebangs (list #:source texlive-extra))
-                 (invoke "mv" "tlpkg" share))))))))
+                 (invoke "mv" "tlpkg" share))
+               ;; texlua shebangs are not patched by the patch-source-shebangs
+               ;; phase because the texlua executable does not exist at that
+               ;; time.
+               (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))
+               (with-directory-excursion out
+                 (patch-source-shebangs))))))))
    (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
@@ -762,6 +786,8 @@ symbol fonts.")
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((mf (assoc-ref inputs "texlive-metafont-base"))
                    (cwd (getcwd)))
+               ;; 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
@@ -979,12 +1005,13 @@ book).")
                          '("dviluatex" "dvilualatex" "luatex" "lualatex"))
                #t))
            (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
+             (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (target (string-append
                                out "/share/texmf-dist/tex/latex/base"))
                       (web2c (string-append
-                              out "/share/texmf-dist/web2c")))
+                              out "/share/texmf-dist/web2c"))
+                      (support-files (assoc-ref inputs "texlive-latex-base-support-files")))
                  (mkdir-p target)
                  (mkdir-p web2c)
                  (for-each delete-file (find-files "." "\\.(log|aux)$"))
@@ -996,6 +1023,14 @@ book).")
                  ;; doesn't have its own format file, we need to copy it.
                  (copy-file "web2c/pdfetex.fmt"
                             (string-append web2c "/pdftex.fmt"))
+                 ;; "source" is missing the support files as per doc/latex/base/manifest.txt.
+                 ;; FIXME: We are probably not packaging this right.
+                 (for-each (lambda (file)
+                             (install-file
+                              (string-append support-files "/" file)
+                              target))
+                           '("ltxguide.cls" "ltnews.cls" "minimal.cls" "idx.tex"
+                             "lablst.tex" "testpage.tex" "ltxcheck.tex"))
                  #t))))))
       (native-inputs
        `(("texlive-bin" ,texlive-bin)
@@ -1018,6 +1053,18 @@ book).")
          ("texlive-generic-config"
           ,(texlive-dir "tex/generic/config/"
                         "19vj088p4kkp6xll0141m4kl6ssgdzhs3g10i232khb07aqiag8s"))
+         ("texlive-latex-base-support-files"
+          ,(origin
+             (method svn-fetch)
+             (uri (svn-reference
+                   (url (string-append "svn://www.tug.org/texlive/tags/"
+                                       %texlive-tag "/Master/texmf-dist/"
+                                       "/tex/latex/base"))
+                   (revision %texlive-revision)))
+             (file-name (string-append name "-" version "-checkout"))
+             (sha256
+              (base32
+               "16bs9pi3nq407xhg59glklqv43v102cg3yim6k3zcri5d9nkbv3a"))))
          ("texlive-tex-plain" ,texlive-tex-plain)
          ("texlive-fonts-cm" ,texlive-fonts-cm)
          ("texlive-fonts-latex" ,texlive-fonts-latex)
@@ -1406,6 +1453,9 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.")
     (build-system texlive-build-system)
     (arguments
      '(#:tex-directory "latex/l3packages"
+       ;; build-targets must be specified manually since they are in
+       ;; sub-directories.
+       #:build-targets '("l3keys2e.ins" "xparse.ins" "xfrac.ins" "xfp.ins" "xtemplate.ins")
        #:phases
        (modify-phases %standard-phases
          ;; All package sources are in sub-directories, so we need to add them
@@ -1418,8 +1468,12 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.")
                                       cwd "/xparse:"
                                       cwd "/xfrac:"
                                       cwd "/xfp:"
-                                      cwd "/xtemplate")))
-             #t)))))
+                                      cwd "/xtemplate"
+                                      ;; The terminating ":" is required to include the
+                                      ;; l3kernel input as well.
+                                      ":")))
+             #t)))
+       ))
     (inputs
      `(("texlive-latex-l3kernel" ,texlive-latex-l3kernel)))
     (home-page "https://www.ctan.org/pkg/l3packages")
@@ -3519,9 +3573,10 @@ TeX metrics (VF and TFM files) and macros for use with LaTeX.")
                                       "/share/texmf-dist/"))
                (unzip  (string-append (assoc-ref %build-inputs "unzip")
                                       "/bin/unzip")))
-           (system* unzip (assoc-ref %build-inputs "source"))
+           (invoke unzip (assoc-ref %build-inputs "source"))
            (mkdir-p target)
-           (copy-recursively "iwona" target)))))
+           (copy-recursively "iwona" target)
+           #t))))
     (native-inputs
      `(("unzip" ,unzip)))
     (home-page "http://jmn.pl/en/kurier-i-iwona/")
@@ -3928,7 +3983,7 @@ directly generate PDF documents instead of DVI.")
             (lambda* (#:key outputs #:allow-other-keys)
               (let ((share (string-append (assoc-ref outputs "out") "/share")))
                 (mkdir-p share)
-                (system* "mv" "texmf-dist" share))))
+                (invoke "mv" "texmf-dist" share))))
           (add-after 'install 'texmf-config
             (lambda* (#:key inputs outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
@@ -3956,9 +4011,9 @@ directly generate PDF documents instead of DVI.")
                 ;; http://slackbuilds.org/repository/13.37/office/texlive/
                 (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
                 (setenv "TEXMFCNF" texmfroot)
-                (system* "updmap-sys" "--nohash" "--syncwithtrees")
-                (system* "mktexlsr")
-                (system* "fmtutil-sys" "--all")))))))
+                (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
@@ -4021,7 +4076,8 @@ This package contains the complete tree of texmf-dist data.")
                    (for-each
                      (lambda (name)
                        (symlink (string-append texmf "/share/" name) name))
-                     '("texmf-dist" "texmf-var"))))))))
+                     '("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.
@@ -4066,7 +4122,7 @@ This package contains the complete TeX Live distribution.")
        ("perl-config-autoconf" ,perl-config-autoconf)
        ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
        ("perl-module-build" ,perl-module-build)))
-    (home-page "http://search.cpan.org/dist/Text-BibTeX")
+    (home-page "https://metacpan.org/release/Text-BibTeX")
     (synopsis "Interface to read and parse BibTeX files")
     (description "@code{Text::BibTeX} is a Perl library for reading, parsing,
 and processing BibTeX files.  @code{Text::BibTeX} gives you access to the data
@@ -4188,14 +4244,14 @@ PDF documents.")
 (define-public texmaker
   (package
     (name "texmaker")
-    (version "4.5")
+    (version "5.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.xm1math.net/texmaker/texmaker-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c"))))
+                "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -4204,12 +4260,12 @@ PDF documents.")
          (replace 'configure
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (zero? (system* "qmake"
-                               (string-append "PREFIX=" out)
-                               (string-append "DESKTOPDIR=" out
-                                              "/share/applications")
-                               (string-append "ICONDIR=" out "/share/pixmaps")
-                               "texmaker.pro"))))))))
+               (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)
@@ -4264,3 +4320,303 @@ develop documents with LaTeX, in a single application.")
 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)
+    (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.
+    (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
+  (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
+                "01ysky8h8s6q12dxfahkzwhbkc9j5wl50xzcczy0cbjx9f6aj9kv"))))
+    (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
+                "12kkl7n534j0p4frwyrlw22dc3ik50kxv97cxp4xpmji13m0hxpf"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((target (string-append (assoc-ref %outputs "out")
+                                      "/share/texmf-dist/tex/latex/ogcx2")))
+           (mkdir-p target)
+           (copy-recursively (assoc-ref %build-inputs "source") target)
+           #t))))
+    (home-page "https://www.ctan.org/pkg/ocgx2")
+    (synopsis "Provide OCG (Optional Content Groups) support within a PDF document")
+    (description
+     "This package provides OCG (Optional Content Groups) support within a PDF
+document.
+
+It re-implements the functionality of the @code{ocg}, @code{ocgx}, and
+@code{ocg-p} packages and adds support for all known engines and back-ends
+including:
+
+@itemize
+@item LaTeX → dvips → @code{ps2pdf}/Distiller
+@item (Xe)LaTeX(x) → @code{dvipdfmx}
+@item pdfLaTeX and LuaLaTeX .
+@end itemize
+
+It also ensures compatibility with the @code{media9} and @code{animate} packages.")
+    (license license:lppl)))
+
+(define-public texlive-latex-ms
+  (package
+    (name "texlive-latex-ms")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "ms"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0m4wx3yjb5al1qsv995z8fii8xxy96mcfihbnlx43lpgayiwz35s"))))
+    (build-system texlive-build-system)
+    (arguments
+     '(#:tex-directory "latex/ms"
+       #:tex-format "latex"))
+    (home-page "https://ctan.org/pkg/ms")
+    (synopsis "Various LATEX packages by Martin Schröder")
+    (description
+     "A bundle of LATEX packages by Martin Schröder; the collection comprises:
+
+@itemize
+@item @command{count1to}, make use of fixed TEX counters;
+@item @command{everysel}, set commands to execute every time a font is selected;
+@item @command{everyshi}, set commands to execute whenever a page is shipped out;
+@item @command{multitoc}, typeset the table of contents in multiple columns;
+@item @command{prelim2e}, mark typeset pages as preliminary; and
+@item @command{ragged2e}, typeset ragged text and allow hyphenation.
+@end itemize\n")
+    (license license:lppl1.3c+)))
+
+(define-public texlive-latex-needspace
+  (package
+    (name "texlive-latex-needspace")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (texlive-ref "latex" "needspace"))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0kw80f5jh4gdpa2ka815abza3gr5z8b929w0745vrlc59pl0017y"))))
+    (build-system texlive-build-system)
+    (arguments
+     '(#:tex-directory "latex/needspace"
+       #:tex-format "latex"))
+    (inputs
+     `(("texlive-latex-filecontents" ,texlive-latex-filecontents)))
+    (home-page "https://www.ctan.org/pkg/needspace")
+    (synopsis "Insert pagebreak if not enough space")
+    (description
+     "Provides commands to disable pagebreaking within a given vertical
+space.  If there is not enough space between the command and the bottom of the
+page, a new page will be started.")
+    (license license:lppl)))
+
+(define-public texlive-latex-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+)))