What is offered by this crate
The crate provides include_display_mode_tex! macro that allows to embed tex formulae
in documentation generated by rustdoc via cargo doc.
Requirements
- Nightly compiler because the code requires
#![feature(proc_macro_span)]
What include_display_mode_tex! can do now VS what can be done theoretically
In its current implementation, include_display_mode_tex! macro merely turns
the contents of .tex files into Markdown with raw LaTeX formulae. For the formulae to be displayed
as such and not LaTeX syntax, Markdown with raw LaTeX must be rendered with some library, such as
KaTeX or
MathJax. Such approach burdens the crate
with extra complexity of .cargo config and the requirement to build the documentation via
cargo doc --no-deps instead of cargo doc but it works.
There is also katex crate that theoretically can allow
to render HTML when the documentation is generated. A PR with such functionality will be very
welcome (though feature-gated for backward compatibility).
Setting up the crate (for using include_display_mode_tex! with KaTeX renderer)
- Create
.cargodirectory in the crate root (the directory containingCargo.toml) - In
.cargo, addconfig.tomlwith the following contents:
[]
= [ "--html-in-header", "./src/html/docs-header.html" ]
- Add these two line to your
Cargo.toml
[]
= [ "--html-in-header", "./src/html/docs-header.html" ]
- Create
./src/htmldirectory (where./src/htmlis a relative path from the crate root) - In
./src/htmladddocs-header.htmlwith the following contents:
Example
use include_display_mode_tex::include_display_mode_tex;
#[doc = include_display_mode_tex!("./tex/example.tex")]
# let s = 0;
Notice that the path is relative not to the crate root but to the call site and that the documentation must be built with
cargo doc --no-deps
Sources of inspiration
Other include* macros:
Special thanks to victe for providing
rust-latex-doc-minimal-example