diff mbox series

[bug#65479,core-updates,v2,17/62] gnu: Add docbook-mathml-1.0.

Message ID 885da30c1e3c238c75530544ff713ea7133ce7a7.1695478390.git.mirai@makinata.eu
State New
Headers show
Series Docbook & XML/SGML improvements. | expand

Commit Message

Bruno Victal Sept. 23, 2023, 2:19 p.m. UTC
* gnu/packages/docbook.scm (docbook-mathml-1.0): New variable.
---
 gnu/packages/docbook.scm | 59 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
diff mbox series

Patch

diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 91b3eeeccb..8cabaa780d 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -278,6 +278,65 @@  (define-public docbook-xml-4.1.2
        (modify-inputs (package-native-inputs template)
          (prepend libxml2))))))
 
+(define-public docbook-mathml-1.0
+  (package
+    (name "docbook-mathml")
+    (version "1.0")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://www.oasis-open.org/docbook/xml/mathml/"
+                              version "/dbmathml.dtd"))
+              (sha256
+               (base32
+                "10vmyl29j829w4xn928rznh163pf47gyzbbjjwqrbg2bidfnk7vp"))))
+    (build-system copy-build-system)
+    (arguments
+     (let ((target (format #f "xml/docbook/mathml/~a/" version)))
+       (list
+        #:modules '((guix build copy-build-system)
+                    (guix build utils)
+                    (sxml simple)
+                    (srfi srfi-1))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'install 'generate-catalog.xml
+              (lambda _
+                (let ((store-uri (string-append "file://"
+                                                #$output "/"
+                                                #$target "dbmathml.dtd")))
+                  (call-with-output-file "catalog.xml"
+                    (lambda (port)
+                      (sxml->xml
+                       `(*TOP*
+                         (*PI* xml "version='1.0'")
+                         (catalog (@ (xmlns "urn:oasis:names:tc:entity:xmlns:xml:catalog"))
+                           (public (@ (publicId "-//OASIS//DTD DocBook MathML Module V1.0//EN")
+                                      (uri ,store-uri)))
+                           ,@(map
+                              (lambda (scheme)
+                                `(system
+                                  (@ (systemId
+                                      ,(string-append scheme
+                                                      "://www.oasis-open.org/docbook/xml/"
+                                                      "mathml/1.0/dbmathml.dtd"))
+                                     (uri ,store-uri))))
+                              '("http" "https"))))
+                       port)))))))
+        #:install-plan
+        #~`(("catalog.xml" #$target)
+            ("dbmathml.dtd" #$target)))))
+    (propagated-inputs
+     ;; These must be propagated for the package to make sense.
+     ;; TODO: Package MathML2 DTD and propagate it as well.
+     (list docbook-xml-4.1.2))
+    (home-page
+     "https://www.oasis-open.org/docbook/xml/mathml/1.0/index.1.shtml")
+    (synopsis "MathML support for DocBook XML V4.1.2.")
+    (description "The DocBook MathML Module is an extension to DocBook XML
+V4.1.2 that adds support for MathML in equation markup.")
+    (license (license:non-copyleft "" "See file headers."))))
+
 (define-public docbook-xml docbook-xml-5.1)
 
 ;;; There's an issue in docbook-xsl 1.79.2 that causes manpages to be