Documentation
¶
Overview ¶
Package latex converts between a practical subset of LaTeX and the neutral github.com/go-richdoc/richdoc document model.
Parse reads LaTeX source (only the body of the document environment, when present) into a richdoc.Document; Write emits a minimal, compilable article from a richdoc.Document. The two are designed as a faithful round-trip: Parse(Write(Parse(src))) is semantically equal to Parse(src) for the supported subset.
Constructs the model has no native node for are preserved verbatim through richdoc.RawInline / richdoc.RawBlock with Format "latex", so nothing in the source is silently lost.
The package is pure Go and builds with CGO disabled, including for GOOS=js/GOARCH=wasm.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Parse ¶
Parse converts a practical subset of LaTeX into a richdoc.Document.
When the source contains a document environment, only its body is parsed and the preamble is mined for metadata (\documentclass, \title, \author, \date), which is dropped from the body and recorded in Document.Meta. When there is no document environment the whole source is treated as the body, so bare fragments parse too.
Unknown commands and environments are preserved as richdoc.RawInline / richdoc.RawBlock with Format "latex" rather than discarded. Malformed input (an unterminated group, environment or math span) returns an error.
func Write ¶
Write renders a richdoc.Document as a minimal, self-contained and compilable LaTeX article. It loads only the packages the document actually needs (graphicx, hyperref, amsmath, ulem, listings), maps Meta title/author/ date onto \title/\author/\date + \maketitle, and escapes LaTeX specials in text. RawBlock/RawInline with Format "latex" are emitted verbatim; raw nodes for other formats are dropped.
Write is the inverse of Parse over the supported subset: parsing Write's output reproduces the input tree.
Types ¶
This section is empty.