+# Copyright © 2020 Nick Bowler
+# License GPLv3+: GNU General Public License version 3 or any later version.
+# This is free software: you are free to change and redistribute it.
+# There is NO WARRANTY, to the extent permitted by law.
+
+EAPI=7
+
+inherit sgml-catalog-r1
+
+DTDVER=${PV/_rc/CR}
+MY_PN=dbmathml
+MY_P=$MY_PN-$PV
+
+DESCRIPTION="DocBook MathML Module"
+HOMEPAGE="https://docbook.org/xml/mathml/"
+SRC_URI="https://docbook.org/xml/mathml/$DTDVER/$MY_PN.dtd -> $MY_P.dtd"
+
+LICENSE="docbook"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+S=$WORKDIR
+
+RDEPEND="dev-libs/libxml2
+ app-text/docbook-xml-dtd:4.3
+ app-text/mathml-xml-dtd"
+
+src_unpack () {
+ cp "$DISTDIR/$A" "$S" || die
+}
+
+src_install () {
+ local insdir="/usr/share/sgml/docbook/${P#docbook-}"
+
+ insinto "$insdir"
+ newins $MY_P.dtd $MY_PN.dtd
+
+ newins - catalog <<-EOF
+ PUBLIC "-//OASIS//DTD DocBook MathML Module V$DTDVER//EN" "$MY_PN.dtd"
+ SYSTEM "http://www.oasis-open.org/docbook/xml/mathml/$DTDVER/dbmathml.dtd" "dbmathml.dtd"
+ EOF
+
+ insinto /etc/sgml
+ newins - mathml-docbook-$PV.cat <<-EOF
+ CATALOG "${EPREFIX#/}$insdir/catalog"
+ EOF
+}
+
+update_catalog () {
+ local insdir="file://${EPREFIX#/}/usr/share/sgml/docbook/${P#docbook-}"
+ local xmlcatalog="${BROOT%/}/usr/bin/xmlcatalog"
+
+ local dtdpublic="-//OASIS//DTD DocBook MathML Module V$DTDVER//EN"
+ local dtduri="http://www.oasis-open.org/docbook/xml/mathml/$DTDVER"
+ local args=()
+
+ command -v "$xmlcatalog" >/dev/null || die
+
+ case $1 in
+ --add)
+ args=( --add public "$dtdpublic" "$insdir/$MY_PN.dtd"
+ --add rewriteSystem "$dtduri" "$insdir"
+ --add rewriteURI "$dtduri" "$insdir" )
+ ;;
+ --del)
+ args=( --del "$dtdpublic" --del "$dtduri" )
+ ;;
+ esac
+
+ xmlcatalog --noout "${args[@]}" "${EROOT%/}/etc/xml/docbook"
+}
+
+pkg_postinst () {
+ sgml-catalog-r1_pkg_postinst
+
+ einfo "Adding $P to docbook XML catalog"
+ update_catalog --add
+}
+
+pkg_postrm () {
+ sgml-catalog-r1_pkg_postinst
+
+ einfo "Removing $P from docbook XML catalog"
+ update_catalog --del
+}