diverse-project / varylatex

Varying LaTeX for fitting your requirements
7 stars 2 forks source link

VaryLaTeX

How to submit a research paper, a technical report, a grant proposal , or a curriculum vitae that respect imposed constraints such as formatting instructions and page limits? It is a challenging task, especially when coping with time pressure, isn't it? With VaryLaTeX, simply drop your archive into your Web browser! VaryLaTeX makes automatically vary your PDF to fit the pages limit... and if you're unhappy, you can still control different aspects of your document with a configurator.

Alt Text http://phdcomics.com/comics.php?f=1971

VaryLaTeX is a solution based on variability, constraint programming , and machine learning techniques for documents written in LaTeX to meet constraints and deliver on time. VaryLaTeX allows users annotating LaTeX source files with variability information, e.g., (de)activating portions of text, tuning figures' sizes, or tweaking line spacing. Then, a fully automated procedure learns constraints among Boolean and numerical values for avoiding non-acceptable paper variants, and finally, users can further configure their papers (e.g., aesthetic considerations) or pick a (random) paper variant that meets constraints, e.g., page limits.

Feel free to contribute, suggest features, provide feedbacks, use cases

There is a short demonstration: https://www.youtube.com/watch?v=u1ralqbHCyM&list=PLcDsXHkK7hJ3n9v7VAMbZCIV6egreI8OL and some technical explanations in this Youtube playlist

How to run VaryLaTeX?

To run it, you need have texlive and python (3) installed, then

pip install -r requirements.txt
python main_server.py

If it does not work, you may want to use python3 and pip3 instead of python and pip.

The app can then be accessed in a browser at 0.0.0.0:5000.

You can also run the app within a Docker container : to do this, install docker then, in the project folder

# Create the image
sudo docker build -t varylatex .
# Create the container
sudo docker run -it --rm -p 5000:5000 varylatex

And inside the container you can run

python main_server.py

To learn about the implementation and the choices that were made for the project, see about.md.

Contributors

It's a complete rewrite/extension of https://github.com/FAMILIAR-project/varylatex (originally written in Java, Bash scripts, and some R code). To re-initiate the work, we build upon the implementation described on this blog post LaTeX writing as a constrained non-convex optimization problem and available on gitlab: https://gitlab.com/martisak/latex-optimizer/ (note: "fork" of gitlab as described here: http://ruby.zigzo.com/2015/03/23/moving-from-gitlab-to-github/)

Corentin Ollivier realized the whole implementation during an internship at DiverSE

Publications

More details can be found in the following paper, published/presented at 12th International Workshop on Variability Modelling of Software-Intensive Systems https://vamos2018.wordpress.com/: "VaryLaTeX: Learning Paper Variants That Meet Constraints" by Mathieu Acher, Paul Temple, Jean-Marc Jézéquel, José A. Galindo, Jabier Martinez, Tewfik Ziadi: https://hal.inria.fr/hal-01659161/