This is version 1.6 of the open-source latex2edx compiler for generating interactive MITx / edX courses from LaTeX
This system is particularly useful for producing interactive course content where the expressive power of LaTeX is helpful, e.g. with math, physics, CS content. latex2edx provides interactivity via the introduction of a basic new macro, the "answer box" \edXabox, which defines a mechanism for student input, as well as how that input is to be graded. Also introduced are structural macros for defining course structure.
Version 1.2 provides, in addition, structured access to the adaptive hint
system built into the edX platform, via a generalized hints system.
This system allows hints to be provided for custom, multiple-choice,
option, and numerical response problems, based on student responses.
The hint system provided by latex2edx allows authors to specify hints
via pattern matching, based on matching strings, numerical value ranges,
mathematical symbols and functions, and arbitrary boolean combinations of
patterns.
Version 1.3 adds documentation, and the edXvideo and edXdiscussion macros.
See project homepage:
https://people.csail.mit.edu/ichuang/edx/latex2edx
and detailed documentation:
http://mitocw.github.io/latex2edx/html/index.html
Version 1.4 adds the edXlti macro, provides better edXshowhide operation, adds the coderesponse answer box type, adds wrapclass functionality for abox.
Version 1.5 adds unit tests for courses. With the --output-course-unit-tests option, an output filename can be specified, where answer box unit tests are written in YAML format. This "course unit test" set can then be used with the edxcut package, to execute unit tests on a running edx course instance.
Version 1.6 works under python3.7, and PlasTex 2.1
Install using this command:
pip install -e git+https://github.com/mitocw/latex2edx.git#egg=latex2edx
Note that xmllint and lxml are required; for ubuntu, this may work:
apt-get install libxml2-utils python-lxml
PlasTeX (http://plastex.sourceforge.net/) is also required, but should be installed automatically by the pip install.
Usage: latex2edx [options] filename.tex
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-v, --verbose verbose error messages
-o OUTPUT_FN, --output-xbundle=OUTPUT_FN
Filename for output xbundle file
-d OUTPUT_DIR, --output-directory=OUTPUT_DIR
Directory name for output course XML files
-c CONFIG_FILE, --config-file=CONFIG_FILE
configuration file to load
-m, --merge-chapters merge chapters into existing course directory
-P, --update-policy-file
update policy.json from settings in latex file
--suppress-policy-settings
suppress policy settings from XML files
--suppress-verticals do not automatically add extra verticals needed for Studio compatibility
-S, --section-only export only edXsections (sequentials) -- no course or chapters
-x, --xml-only export only xbundle xml file -- no separate course content
--units-only export only units, including problem, html -- no course, chapter, section
--timestamp add timestamps at the bottom of each HTML page
--timestamp-revision=TIMESTAMP_REVISION
additional revision number to add to the timestamp
--timestamp-threshold=TIMESTAMP_THRESHOLD
minimum number of elements in HTML, for a timestamp to be added
--popups enable equation and figure popup windows on clicking their references
--add-wrap add a standard latex wrapper, with documentclass and begin{document}...end{document}
--allow-directories allow subdirectory structure in the xml output
--output-course-unit-tests=OUTPUT_CUTSET
filename in which to output answer box unit test set (YAML format) for the course, made for testing with edxcut
See live demo course: https://edge.edx.org/courses/MITx/MIT.latex2edx/2014_Spring/about
The source code for the demo course is here: https://github.com/mitocw/content-mit-latex2edx-demo
Here is an annotated input tex file which generates the source for an edX course:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[12pt]{article}
\usepackage{edXpsl} % edX "problem specification language"
\begin{document}
% edXcourse: {course_number}{course display_name}[optional arguments like semester]
\begin{edXcourse}{MIT.latex2edx}{latex2edx demo course}[semester="2014 Spring"]
% edXchapter: {chapter display_name}[optional arguments like url_name]
\begin{edXchapter}{Basic examples}
% edXsection: {section display_name}[optional arguments like url_name]
% this turns into a <sequential> in the XML
\begin{edXsection}{Basic example problems}
% edXvertical: {vertical display_name}[optional arguments like url_name]
\begin{edXvertical}
% edXproblem: {problem display_name}{attributes: url_name, weight, attempts}
\begin{edXproblem}{Numerical response}{attempts=10}
What is the numerical value of $\pi$?
% \edXabox: answer box, specifying question type and expected response
\edXabox{expect="3.14159" type="numerical" tolerance='0.01' }
\end{edXproblem}
\end{edXvertical}
\end{edXsection}
\end{edXchapter}
\end{edXcourse}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%