Skip to main content

A document object model and related tools for Latex

Project description

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

Project details


Release history Release notifications | RSS feed

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

latextree-0.2.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

latextree-0.2-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

Details for the file latextree-0.2.tar.gz.

File metadata

  • Download URL: latextree-0.2.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for latextree-0.2.tar.gz
Algorithm Hash digest
SHA256 a33738f469e5759730526291050a9e2f45b658be64850262c1fd236ed82f3de3
MD5 9d28d939921dc5cfef63988a0f11278f
BLAKE2b-256 1918f9b118866e38e3829f96dab632f2e6b8eac5db74ace0ce8e59492e3426d8

See more details on using hashes here.

File details

Details for the file latextree-0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for latextree-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b5e084fac37421f2513bf93a56336855bc55bcef5553609af01bc9d411d08bc3
MD5 311430e157e1bc65ea52d3ed70eff4b9
BLAKE2b-256 6a07379c8363d9b6926147e947ebd97dbdfa8cb55b76b66b2ca7b2d8da7e314c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page