{ "info": { "author": "Th\u00e9o (Lattay) Cavignac", "author_email": "theo.cavignac@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Goal\nProtex aims at providing a flexible, extensible and interfaced way to remove\nTeX macros from a TeX/LaTeX document while keeping the mapping of position from\ncleaned text to source. This should make it easier to apply different language\ncheckers to the plain text and convert the plain text position to source\npositions.\nWhen possible the resulting file should also be a reasonably readable text file\n(no big blanks, no strange holes...).\n\n# Non-goal\n\nThis project won't try to parse TeX in a complex way. The cleaning has to be\nextensible, but nor recursive, neither Turing complete as TeX is itself.\n\n# Principle\n\nA command prototype set is first built from the default *commands.json*,\nupdated by the user *~/.commands.json* (if it exists) and then all the\n*commands.json* files found in the file tree from root to the current\ndirectory.\n\nA command prototype tell the parser how many arguments at maximum take the\ncommand and how to use them. There are four sections in *commands.json* files.\nThe three below consist in a list of special prototype:\n* `print_name`: the command take no argument and is replace by its name (ex: `\\phi`, `\\sum`)\n* `print_one`: the command take one argument and print it unchanged\n* `discard`: the command take up to 100 arguments and print nothing\nThe fourth section is `other` and have a mapping as value. The\nmapping is of the form `{: [<# max args>,