Rationale for creating separate binary package katex and libjs-katex
--------------------------------------------------------------------

We usually use Provides instead of splitting to multiple binary packages when
we can remove the Depends on the interpreter. For example node-clipboard
provides libjs-clipboard.js. This works when the node package does not ship a
user facing significant executable.  User facing executable as separate binary
was recognized as a valid reason by CTTE guideline in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=934948#54 (relevant section
quoted below).

"User-facing executable programs associated with a library should usually be
packaged in a non-library binary package whose name reflects the program (for
example tappy, flatpak, parted) or collection of related programs (for example
kmod, libsecret-tools, libglib2.0-bin), rather than being bundled in the same
binary package as the runtime library."

In case of this particular package, katex binary also provide a command line
interface via katex command. So we cannot drop the depends on nodejs (rc bug,
nodejs is not an optional component but the interpreter needed to run the katex
program). Avoiding unnecessary dependency on interpreters was achieved in all
previous instances by removing the dependency on the interpreter for pure
libraries. We expect whichever user facing program depending on the library to
set Depends on the interpreter. For example gitlab depending on nodejs is
enough for node-clipboard to satisfy dependency on nodejs. In this case katex
itself is a user facing program not tied to nodejs development (it is used for
maths typesetting). So we cannot reasonably expect a user wanting to use katex
will have nodejs installed already.

Would someone want to use libjs-katex without nodejs installed?

Yes: Pandoc can produce output which uses katex rendered with the Javascript
runtime of web browsers, not on server side Javascript runtime like Node.js.
