Project: Mechanism to append documents to and augment the PDF generated by GNU TeXmacs

Project Info

  • Name: Mechanism to append documents to and augment the PDF generated by GNU TeXmacs
  • Mentor: @mgubi
  • Difficulty: Medium/Advanced

Project Description

  • In some circumstances it is useful to transmit both a PDF version of a document and the associated TeXmacs file (eventually with all the needed support files like custom styles and images). This allow usual PDF viewers to open the file and at the same time allows users of TeXmacs to be able to retrieve an editable version of the document for modification.

  • It is useful to augment PDF with additional information to improve the user experience on a variety of platforms which do not allow to access the original TeXmacs documents

Project Notes

As example of the possible embedding mechanisms, the implementor can consider the following existing projects:

Project Output Requirements

  • Develop a protocol to include whole TeXmacs documents within its PDF export and also mechanisms to retrieve the document by opening the PDF via TeXmacs. Implement it.

    • it should have code to include a copy of the document and the associated information in the generated PDF. Investigate possible protocols to allow this in a transparent way wrt. standard PDF viewers.
    • it should have code which allows TeXmacs to probe the presence of a TeXmacs document attached to a PDF file and eventually open and modify it.
  • in the case that a TeXmacs document is composed of multiple files, allow embedding of all the required files (images, parts, user-defined styles).

  • High-quality code with efficient performance and minimal external dependance.

  • (Optionally) Develop an interface to include external documents within a TeXmacs file, e.g. source code, images, bibtex files, in such a way that they can be referenced via hyperlinks (e.g. to a virtual file system) and extracted or edited.

Project Technical Requirements

  • Familiarity with the TeXmacs document format and the codebase, both the C++ and Scheme parts.

  • Familiarity with the PDF format specification and with the parsing and programmatic modification of PDF document.

  • Familiarity with the PDF Hummus library (the library used in TeXmacs to handle PDF files).

Project repository