Skip to main content

The latextree Package

Creates a document object model for LaTeX and provides some useful functions. The parser understands the syntax of most common macros but is NOT a replacement for a full LaTeX engine. The parser should only be invoked only after the input has been successfully compiled under LaTeX.

Example:

>>> from latextree.parser import LatexParser
>>> pa = LatexParser()
>>> filename = "/path/to/main.tex""
>>> doc = pa.parse_latex_file(filename)
>>> doc.make_website()			# create website
>>> bbqs = doc.bbq()			# extract mc/ma questions in Blackboard format (plain text)
>>> docx = doc.root.get_xml()	# create xml document
>>> from lxml import etree
>>> print(etree.tostring(docx, pretty_print=True))

If latextree is installed as a package:

>>> import latextree
>>> filename = "/path/to/main.tex""
>>> doc = load(filename)
>>> doc.make_website()	# create website
>>> bbqs = doc.bbq()	# extract mc/ma questions in Blackboard format (plain text)
>>> exit()

Standards

The following are yet to be implemented properly.

  • Exception handling
  • Testing
  • Logging
  • Documentation

make_website

>>> doc.make_website(copy_static=True, copy_figures=True, WEB_ROOT=None)

By default, the website is created in a folder called web-latexmainfilename in the directory containing the main latex source file. . The output directory can be changed by setting the WEB_ROOT variable.

  • html files are written to WEB_ROOT
  • style files are copied to WEB_ROOT/static/css. These can be modified post-production.
  • figures are copied to WEB_ROOT/static/img
  • urls are constructed from chapter and/or section numbers (if any)

Templates

The LatexDocument.make_website() function uses jinja2 templates.

  • scripts.html loads the MathJax and jquery CDNs from cloudflare.
  • node.html does most of the work. This needs to be broken up.

Static files

  • css/: The stylesheets are rough-and-ready and need a lot of work (especially for phones and tablets).
  • img/: Image files are copied into here.
  • js/: Currently contains only a simple show/hide function.

Modules

  • bibliography: wrapper for bibtexparser
  • content: content nodes
  • document: LatexDocument class and output functions
  • factory: creates node classes and objects
  • ltree: command line tools
  • macrosdef: macro definitions for pylatexenc.latexwalker
  • node: base class for LatexTreeNode objects.
  • parser: LatexParser class. Creates LatexDocument objects.
  • preprocessor: prepare latex source for pylatexenc.latexwalker(replace $$...$$ etc.)
  • reader: input functions and utilities
  • settings: website settings (e.g. mathjax cdn)
  • tabular: parse tabular environments.
  • taxonomy: register of species (e.g. list) and genera (e.g. itemize).
  • walker: wrapper for pylatexenc.latexwalker.

Dependencies

  • bibtexparser
  • jinja2
  • lxml
  • pylatexenc

Test files

The tex directory contains:

  • LatexTreeTestBook for testing the book document class
  • LatexTreeTestArticle for testing the article document class
  • LatexTreeTestExam for testing the exam document class

Existing software for Latex processing

  • pylatexenc

    • LaTeX -> Unicode
    • python package
  • plasTeX

    • LaTeX -> XML and XHTML
    • python package
  • tex4ht

    • LaTeX -> XML, HTML and Braille!
    • java and c libraries
    • provides a htlatex cmd to replace latex.
  • pandoc

    • LaTeX -> HTML
    • haskell library
  • tralics (INRIA)

    • LaTeX -> XML

Metadata

Release files for latextree 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for latextree 0.2
File Size Uploaded
latextree-0.2.tar.gz 35.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for latextree 0.2
File Interpreter ABI Platform
latextree-0.2-py3-none-any.whl Python 3 none any Details

Total release size: 76.8 kB

Release files / latextree-0.2.tar.gz

Download URL latextree-0.2.tar.gz
Size 35.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a33738f469e5759730526291050a9e2f45b658be64850262c1fd236ed82f3de3
BLAKE2b-256 checksum
How to use checksums
1918f9b118866e38e3829f96dab632f2e6b8eac5db74ace0ce8e59492e3426d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / latextree-0.2-py3-none-any.whl

Download URL latextree-0.2-py3-none-any.whl
Size 41.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5e084fac37421f2513bf93a56336855bc55bcef5553609af01bc9d411d08bc3
BLAKE2b-256 checksum
How to use checksums
6a07379c8363d9b6926147e947ebd97dbdfa8cb55b76b66b2ca7b2d8da7e314c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page