CONTRIBUTING
How to Contribute
We'd love to accept your patches and contributions to this project. There are
just a few small guidelines you need to follow.
Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.
Code reviews
All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
GitHub Help for more
information on using pull requests.
Community Guidelines
This project follows
Google's Open Source Community Guidelines.
---
README
arxiv_latex_cleaner
This tool allows you to easily clean the LaTeX code of your paper to submit to
arXiv. From a folder containing all your code, e.g. /path/to/latex/, it
creates a new folder /path/to/latex_arXiv/, that is ready to ZIP and upload to
arXiv.
Example call:
arxiv_latex_cleaner /path/to/latex --resize_images --im_size 500 --images_allowlist='{"images/im.png":2000}'Or simply from a config file
arxiv_latex_cleaner /path/to/latex --config cleaner_config.yamlInstallation:
pip install arxiv-latex-cleaner| :exclamation: arxiv_latex_cleaner is only compatible with Python >=3.9 :exclamation: |
| ---------------------------------------------------------------------------------- |
If using MacOS, you can install using Homebrew:
brew install arxiv_latex_cleanerAlternatively, you can download the source code:
git clone https://github.com/google-research/arxiv-latex-cleaner
cd arxiv-latex-cleaner/
python -m arxiv_latex_cleaner --helpAnd install as a command-line program directly from the source code:
python setup.py installMain features:
#### Privacy-oriented
* Removes all auxiliary files (.aux, .log, .out, etc.).
* Removes all comments from your code (yes, those are visible on arXiv and you
do not want them to be). These also include \begin{comment}\end{comment},
\iffalse\fi, and \if0\fi environments.
* Optionally removes user-defined commands entered with commands_to_delete
(such as \todo{} that you redefine as the empty string at the end).
* Optionally allows you to define custom regex replacement rules through a
cleaner_config.yaml file.
#### Size-oriented
There is a 50MB limit on arXiv submissions, so to make it fit:
* Removes all unused .tex files (those that are not in the root and not
included in any other .tex file).
* Removes all unused images that take up space (those that are not actually
included in any used .tex file).
* Optionally resizes all images to im_size pixels, to reduce the size of the
submission. You can allowlist some images to skip the global size using
images_allowlist.
* Optionally compresses .pdf files using ghostscript (Linux and Mac only).
You can allowlist some PDFs to skip the global size using
images_allowlist.
* Optionally converts PNG images to JPG format to reduce file size.
#### TikZ picture source code concealment
To prevent the upload of tikzpicture source code or raw simulation data, this
feature:
* Replaces the tikzpicture environment \begin{tikzpicture} ... with the respective
\end{tikzpicture}
\includegraphics{EXTERNAL_TIKZ_FOLDER/picture_name.pdf}.
* Requires externally compiled TikZ pictures as .pdf files in folder
EXTERNAL_TIKZ_FOLDER. See section 52 (Externalization Library) in the
PGF/TikZ manual on TikZ picture
externalization.
* Only replaces environments with preceding
\tikzsetnextfilename{picture_name} command (as in
\tikzsetnextfilename{picture_name}\begin{tikzpicture} ...) where the externalized
\end{tikzpicture}picture_name.pdf filename
matches picture_name.
#### More sophisticated pattern replacement based on regex group captures
Sometimes it is useful to work with a set of custom LaTeX commands when writing
a paper. To get rid of them upon arXiv submission, one can simply revert them to
plain LaTeX with a regular expression insertion.
{
"pattern" : '(?:\\figcomp{\s)(?P<first>.?)\s}\s{\s(?P<second>.?)\s}\s{\s(?P<third>.?)\s*}',
"insertion" : '\parbox[c]{{ {second} \linewidth}} {{ \includegraphics[width= {third} \linewidth]{{figures/{first} }} }}',
"description" : "Replace figcomp"
}The pattern above will find all \figcomp{path}{w1}{w2} commands and replace
them with\parbox[c]{w1\linewidth}{\includegraphics[width=w2\linewidth]{figures/path}}.
Note that the insertion template is filled with the
named groups captures
from the pattern. Note that the replacement is processed before all\includegraphics commands are processed and corresponding file paths are
copied, making sure all figure files are copied to the cleaned version. See also
cleaner_config.yaml for details on how to specify the
patterns.
Usage:
/ Detailed source-code truncated for AI context efficiency. /Testing:
python -m unittest arxiv_latex_cleaner.tests.arxiv_latex_cleaner_testNote
This is not an officially supported Google product.
---