;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018 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.
;;;
#: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)
#: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))
- (system* "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.
cwd "/config")))
(mkdir "build")
(with-directory-excursion "build"
- (zero? (system* "inimf" "mf.mf")))))
+ (invoke "inimf" "mf.mf"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(string-append (getcwd) ":"
mf "/share/texmf-dist/metafont/base")))
(mkdir "build")
- (every (lambda (font)
- (format #t "building font ~a\n" font)
- (zero? (system* "mf" "-progname=mf"
- "-output-directory=build"
- (string-append "\\"
- "mode:=ljfour; "
- "mag:=1; "
- "batchmode; "
- "input "
- (basename font ".mf")))))
- (find-files "." "cm(.*[0-9]+.*|inch)\\.mf$"))))
+ (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 "." "cm(.*[0-9]+.*|inch)\\.mf$"))
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(string-append (getcwd) ":"
mf "/share/texmf-dist/metafont/base")))
(mkdir "build")
- (zero? (system* "mf" "-progname=mf"
- "-output-directory=build"
- (string-append "\\"
- "mode:=ljfour; "
- "mag:=1; "
- "batchmode; "
- "input manfnt")))))
+ (invoke "mf" "-progname=mf"
+ "-output-directory=build"
+ (string-append "\\"
+ "mode:=ljfour; "
+ "mag:=1; "
+ "batchmode; "
+ "input manfnt"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(assoc-ref inputs "texlive-fonts-cm")
"/share/texmf-dist/fonts/source/public/cm")))
(mkdir "build")
- (every (lambda (font)
- (format #t "building font ~a\n" font)
- (zero? (system* "mf" "-progname=mf"
- "-output-directory=build"
- (string-append "\\"
- "mode:=ljfour; "
- "mag:=1; "
- "batchmode; "
- "input " font))))
- '("icmcsc10" "icmex10" "icmmi8" "icmsy8" "icmtt8"
- "ilasy8" "ilcmss8" "ilcmssb8" "ilcmssi8"
- "lasy5" "lasy6" "lasy7" "lasy8" "lasy9" "lasy10" "lasyb10"
- "lcircle10" "lcirclew10" "lcmss8" "lcmssb8" "lcmssi8"
- "line10" "linew10"))))
+ (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)))
+ '("icmcsc10" "icmex10" "icmmi8" "icmsy8" "icmtt8"
+ "ilasy8" "ilcmss8" "ilcmssb8" "ilcmssi8"
+ "lasy5" "lasy6" "lasy7" "lasy8" "lasy9" "lasy10" "lasyb10"
+ "lcircle10" "lcirclew10" "lcmss8" "lcmssb8" "lcmssi8"
+ "line10" "linew10"))
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(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
(assoc-ref inputs "texlive-fonts-cm")
"/share/texmf-dist/fonts/source/public/cm")))
(mkdir "build")
- (every (lambda (font)
- (format #t "building font ~a\n" (basename font ".mf"))
- (with-directory-excursion (dirname font)
- (zero? (system* "mf" "-progname=mf"
- "-output-directory=../build"
- (string-append "\\"
- "mode:=ljfour; "
- "mag:=1; "
- "nonstopmode; "
- "input "
- (getcwd) "/"
- (basename font ".mf"))))))
- (find-files "." "[0-9]+\\.mf$"))))
+ (for-each (lambda (font)
+ (format #t "building font ~a\n" (basename font ".mf"))
+ (with-directory-excursion (dirname font)
+ (invoke "mf" "-progname=mf"
+ "-output-directory=../build"
+ (string-append "\\"
+ "mode:=ljfour; "
+ "mag:=1; "
+ "nonstopmode; "
+ "input "
+ (getcwd) "/"
+ (basename font ".mf")))))
+ (find-files "." "[0-9]+\\.mf$"))
+ #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(mkdir "build")
(mkdir "web2c")
- (and (invoke "luatex" "-ini" "-interaction=batchmode"
- "-output-directory=build" "unpack.ins")
- (invoke "tex" "-ini" "-interaction=batchmode"
- "-output-directory=web2c" "tex.ini")
- ;; LaTeX, pdfetex/pdftex, and XeTeX require e-TeX, which
- ;; is enabled only in extended mode (activated with a
- ;; leading asterisk). We should not use luatex here,
- ;; because that would make the generated format files
- ;; incompatible with any other TeX engine.
- (every
- (lambda (format)
- (invoke "latex" "-ini" "-interaction=batchmode"
- "-output-directory=web2c"
- "-translate-file=cp227.tcx"
- (string-append "*" format ".ini")))
- '("latex"
- "pdflatex"
- "pdfetex"))
- (every
- (lambda (format)
- (invoke format "-ini" "-interaction=batchmode"
- "-output-directory=web2c"
- (string-append "*" format ".ini")))
- '("xetex"
- "xelatex"))
- (every
- (lambda (format)
- (invoke "luatex" "-ini" "-interaction=batchmode"
- "-output-directory=web2c"
- (string-append format ".ini")))
- '("dviluatex" "dvilualatex" "luatex" "lualatex")))))
+ (invoke "luatex" "-ini" "-interaction=batchmode"
+ "-output-directory=build" "unpack.ins")
+ (invoke "tex" "-ini" "-interaction=batchmode"
+ "-output-directory=web2c" "tex.ini")
+ ;; LaTeX, pdfetex/pdftex, and XeTeX require e-TeX, which
+ ;; is enabled only in extended mode (activated with a
+ ;; leading asterisk). We should not use luatex here,
+ ;; because that would make the generated format files
+ ;; incompatible with any other TeX engine.
+ (for-each (lambda (format)
+ (invoke "latex" "-ini" "-interaction=batchmode"
+ "-output-directory=web2c"
+ "-translate-file=cp227.tcx"
+ (string-append "*" format ".ini")))
+ '("latex"
+ "pdflatex"
+ "pdfetex"))
+ (for-each (lambda (format)
+ (invoke format "-ini" "-interaction=batchmode"
+ "-output-directory=web2c"
+ (string-append "*" format ".ini")))
+ '("xetex"
+ "xelatex"))
+ (for-each (lambda (format)
+ (invoke "luatex" "-ini" "-interaction=batchmode"
+ "-output-directory=web2c"
+ (string-append format ".ini")))
+ '("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)$"))
;; 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)
("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)
(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
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")
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")
(assoc-ref inputs "texlive-fonts-cm")
"/share/texmf-dist/fonts/source/public/cm")))
(mkdir "build")
- (every (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$"))))
+ (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"))
(assoc-ref inputs "texlive-fonts-cm")
"/share/texmf-dist/fonts/source/public/cm")))
(mkdir "build")
- (every (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$"))))
+ (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"))
"/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/")
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 scaleable versions of the fonts. Note that the LaTeX distribution
+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.")
(source (origin
(method svn-fetch)
(uri (texlive-ref "latex" "wasysym"))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1sgwbfwjjf70g54hh93gsd9jp9nm67w6n74x9d72a56n07jbk5hv"))))
%texlive-tag "/Master/texmf-dist/"
"/tex/generic/pdftex"))
(revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0k68zmqzs4qvrqxdwsrawbjb14hxqjfamq649azvai0jjxdpkljd"))))
(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"))
;; 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
(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.
("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
(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
(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)
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+)))
+
+(define-public texlive-latex-pgf
+ (package
+ (name "texlive-latex-pgf")
+ (version (number->string %texlive-revision))
+ (source
+ (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/latex/pgf"))
+ (revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1dq8p10pz8wn0vx412m7d7d5gj1syxly3yqdqvf7lv2xl8zndn5h"))))
+ (build-system trivial-build-system)
+ (native-inputs
+ `(("texlive-latex-pgf-generic"
+ ,(origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/generic/pgf"))
+ (revision %texlive-revision)))
+ (file-name (string-append "texlive-latex-pgf-generic" version "-checkout"))
+ (sha256
+ (base32
+ "0xkxw26sjzr5npjpzpr28yygwdbhzpdd0hsk80gjpidhcxmz393i"))))))
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target-generic (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/generic/pgf"))
+ (target-latex (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/latex/pgf")))
+ (mkdir-p target-generic)
+ (mkdir-p target-latex)
+ (copy-recursively (assoc-ref %build-inputs "texlive-latex-pgf-generic") target-generic)
+ (copy-recursively (assoc-ref %build-inputs "source") target-latex)
+ #t))))
+ (home-page "https://www.ctan.org/pkg/tikz")
+ (synopsis "Create PostScript and PDF graphics in TeX")
+ (description
+ "PGF is a macro package for creating graphics. It is platform- and
+format-independent and works together with the most important TeX backend
+drivers, including pdfTeX and dvips. It comes with a user-friendly syntax layer
+called TikZ.
+
+Its usage is similar to pstricks and the standard picture environment. PGF
+works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt. Unlike pstricks, it can
+produce either PostScript or PDF output.")
+ (license license:lppl1.3c+)))
+
+(define-public texlive-latex-koma-script
+ (package
+ (name "texlive-latex-koma-script")
+ (version (number->string %texlive-revision))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/latex/koma-script"))
+ (revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1g8qg796hc6s092islnybaxs115ldsqwp2vxkk3gpy6vh7wc9r50"))))
+ (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
+ "1k50z6ixgwwzy84mi0dr5vcjah5p7wvgq66y45bilm91a4m8sgla"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/generic/listofitems")))
+ (mkdir-p target)
+ (copy-recursively (assoc-ref %build-inputs "source") target)
+ #t))))
+ (home-page "https://www.ctan.org/pkg/listofitems")
+ (synopsis "Grab items in lists using user-specified seperation character")
+ (description
+ "This package allows one to capture all the items of a list, for which
+the parsing character has been selected by the user, and to access any of
+these items with a simple syntax.")
+ (license license:lppl1.3c+)))
+
+(define-public texlive-latex-readarray
+ (package
+ (name "texlive-latex-readarray")
+ (version (number->string %texlive-revision))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/latex/readarray"))
+ (revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0c53k180ivn1n7fz3ngvd2w1i5dw3kxml0n64vhki88xsylz7lxp"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/latex/readarray")))
+ (mkdir-p target)
+ (copy-recursively (assoc-ref %build-inputs "source") target)
+ #t))))
+ (propagated-inputs
+ `(("texlive-generic-listofitems" ,texlive-generic-listofitems)))
+ (home-page "https://www.ctan.org/pkg/readarray")
+ (synopsis "Read, store and recall array-formatted data")
+ (description
+ "This package allows the user to input formatted data into elements of a
+2-D or 3-D array and to recall that data at will by individual cell number.
+The data can be but need not be numerical in nature. It can be, for example,
+formatted text.")
+ (license license:lppl1.3)))
+
+(define-public texlive-latex-verbatimbox
+ (package
+ (name "texlive-latex-verbatimbox")
+ (version (number->string %texlive-revision))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/latex/verbatimbox"))
+ (revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0qh1cgvfs463zsi2pjg490gj0mkjfdpfc381j10cbb5la304psna"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/latex/verbatimbox")))
+ (mkdir-p target)
+ (copy-recursively (assoc-ref %build-inputs "source") target)
+ #t))))
+ (propagated-inputs
+ `(("texlive-latex-readarray" ,texlive-latex-readarray)))
+ (home-page "https://www.ctan.org/pkg/verbatimbox")
+ (synopsis "Deposit verbatim text in a box")
+ (description
+ "The package provides a @code{verbbox} environment to place its contents
+into a globally available box, or into a box specified by the user. The
+global box may then be used in a variety of situations (for example, providing
+a replica of the @code{boxedverbatim} environment itself). A valuable use is
+in places where the standard @code{verbatim} environment (which is based on a
+@code{trivlist}) may not appear.")
+ (license license:lppl1.3+)))
+
+(define-public texlive-latex-examplep
+ (package
+ (name "texlive-latex-examplep")
+ (version (number->string %texlive-revision))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url (string-append "svn://www.tug.org/texlive/tags/"
+ %texlive-tag "/Master/texmf-dist/"
+ "/tex/latex/examplep"))
+ (revision %texlive-revision)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0fsvvmz68ij0zwfzrny6x13d92grxr4ap59lxgah4smbkccd6s27"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let ((target (string-append (assoc-ref %outputs "out")
+ "/share/texmf-dist/tex/latex/examplep")))
+ (mkdir-p target)
+ (copy-recursively (assoc-ref %build-inputs "source") target)
+ #t))))
+ (home-page "https://www.ctan.org/pkg/examplep")
+ (synopsis "Verbatim phrases and listings in LaTeX")
+ (description
+ "Examplep provides sophisticated features for typesetting verbatim source
+code listings, including the display of the source code and its compiled LaTeX
+or METAPOST output side-by-side, with automatic width detection and enabled
+page breaks (in the source), without the need for specifying the source twice.
+Special care is taken that section, page and footnote numbers do not interfere
+with the main document. For typesetting short verbatim phrases, a replacement
+for the @code{\\verb} command is also provided in the package, which can be
+used inside tables and moving arguments such as footnotes and section
+titles.")
+ ;; No version of the GPL is specified.
+ (license license:gpl3+)))