https://github.com/benmaier/submitex
Tools and CLIs to make your tex-files submission-ready.
https://github.com/benmaier/submitex
Last synced: 3 months ago
JSON representation
Tools and CLIs to make your tex-files submission-ready.
- Host: GitHub
- URL: https://github.com/benmaier/submitex
- Owner: benmaier
- License: mit
- Created: 2022-11-21T21:27:08.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-11-23T12:36:03.000Z (over 2 years ago)
- Last Synced: 2024-10-11T11:08:03.704Z (8 months ago)
- Language: Python
- Size: 478 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# submitex
Python tools and CLIs to automatically convert your LaTeX-project into a
structure in which it can be easily submitted to a journal.For instance for `manuscript.tex` with bibtex-generated `manuscript.bbl`:
replacebib manuscript | replacefigs | collectfloats | resolveinputs | resolvepipes > newmanuscript.tex
## Install
pip install submitex
## Examples
Check out the [cookbook section](https://github.com/benmaier/submitex/tree/main/cookbook) or further below.
## Modules/CLIs
Functionality is given by functions in the respective `submitex.modulename`, e.g. `submitex.replacefigs`.
The same modulename can be used to evoke the functionality from the command line.
| module/CLI | description |
|------------|-------------|
| replacefigs | Rename all figure files in the `\includegraphics`-environment to generic enumerated names and copy the respective files with the new names to top-level. |
| collectfloats | Remove all figure- and table-environments from their respective place in the document body and put them on their own page at the end of the document, first figures, then tables. |
| replacebib | Put the content of the bbl-file into the section where previously laid `\bibliographystyle{...}\bibliography{filename}` |
| resolveinputs | Replace `\input{filename}` with the content of `filename` |
| resolvepipes | Replace `\input{\|command}` with the output of the process `command` |### Python examples
#### replacefigs
```python
import submitex.replacefigs as rftex = r"""
\begin{figure} \includegraphics[width=1in]{foo/bar} \includegraphics{result.png} \end{figure}\begin{figure} \includegraphics[width=1in]{foo/bong.jpg} \end{figure}
"""newtex, figpaths = rf.convert_and_get_figure_paths(tex, figure_prefix='figure_')
print(newtex)
for src, trg in figpaths:
print(src, trg)
```Output:
\begin{figure} \includegraphics[width=1in]{figure_01a} % original file: foo/bar
\includegraphics{figure_01b.png} % original file: result.png
\end{figure}
\begin{figure} \includegraphics[width=1in]{figure_02.jpg} % original file: foo/bong.jpg
\end{figure}
foo/bar figure_01a
result.png figure_01b.png
foo/bong.jpg figure_02.jpg#### collectfloats
```python
import submitex.collectfloats as cftex = r"""\begin{document}
\begin{figure} \end{figure}
Test
\begin{figure} \end{figure} \begin{ table} \end{table }
This is another paragraph
\end{document}
"""print(cf.convert(tex))
```Output:
\begin{document}
Test
This is another paragraph
\afterpage{%
\begin{figure} \end{figure}
\clearpage}
\afterpage{%
\begin{figure} \end{figure}
\clearpage}
\afterpage{%
\begin{ table} \end{table }
\clearpage}
\end{document}#### replacebib
```python
import submitex.replacebib as rbtex = r"""
\bibliographystyle{vancouver}
%\bibliographystyle{chicago}
%\bibliography{main.bib}
\bibliography {main.bib}
"""
bib = r"""
\begin{thebibliography}
\end{thebibliography}
"""
print(rb.convert(tex,bib))
```Output:
%\bibliographystyle{chicago}
%\bibliography{main.bib}
\begin{thebibliography}
\end{thebibliography}#### resolveinputs
File `section1.tex`:
```latex
\section{Section 1}
This is Section 1.
``````python
import submitex.resolveinputs as ritex = r"""
\input{ section01.tex}
%\input{ section01.tex}
"""print(ri.convert(tex))
```Output:
\section{Section 1}
This is Section 1.
%\input{ section01.tex}#### resolvepipes
```python
import submitex.resolvepipes as rptex = "There's \inp{|python -c 'print(int(24*60*60*365.25))'} seconds in a year."
print("source:", tex)
print("out :", rp.convert(tex), '\n')tex = "There's $\input { | ls -al ~ | wc -l }$ files/directories in your user directory."
print("source:", tex)
print("out :", rp.convert(tex))```
Output:
source: There's \inp{|python -c 'print(int(24*60*60*365.25))'} seconds in a year.
out : There's 31557600 seconds in a year.source: There's $\input { | ls -al ~ | wc -l }$ files/directories in your user directory.
out : There's $ 62$ files/directories in your user directory.### CLI usage
Almost all of the CLIs work like this:
resolvepipes oldmanuscript.tex > newmanuscript.tex
cat oldmanuscript.tex | resolvepipes > newmanuscript.texAn exception is `replacebib` which needs another file to work. Typically, the file is called the same as the input file, so for
replacebib oldmanuscript > newmanuscript.tex
the procedure assumes that both `oldmanuscript.tex` and `oldmanuscript.bbl` exist in the cwd. Alternatively, provided it explicitly with the `--bib` flag. Then you can pipe. For instance
cat oldmanuscript.tex | replacebib -b otherbibfile.bbl > newmanuscript.tex
Note that that means you can pipe several or all of the commands together, for instance like so:
replacebib manuscript | replacefigs | collectfloats | resolveinputs | resolvepipes > newmanuscript.tex
#### replacefigs
usage: replacefigs [-h] [-e ENC] [-d] [-F FIGPREFIX] [filename]
Rename all figure files in the `\includegraphics`-environment to generic
enumerated names and copy the respective files with the new names to top-
level.
positional arguments:
filename Files to convert
options:
-h, --help show this help message and exit
-e ENC, --enc ENC encoding
-d, --dontcopyfigs Per default, the figures that are found will be copied
to the current working directory, but you can turn
that off with this flag.
-F FIGPREFIX, --figprefix FIGPREFIX
The prefix for the renamed figures (default: "Fig",
such that Fig01, Fig02, ...)#### collectfloats
usage: collectfloats [-h] [-e ENC] [filename]
Remove all figure- and table-environments from their respective place in the
document body and put them on their own page at the end of the document, first
figures, then tables.
positional arguments:
filename Files to convert
options:
-h, --help show this help message and exit
-e ENC, --enc ENC encoding#### replacebib
usage: replacebib [-h] [-e ENC] [-b BIB] [filename]
Put the content of the bbl-file into the section where previouly laid
`\biblipgraphystyle{...}\bibliography{filename}`
positional arguments:
filename Files to convert
options:
-h, --help show this help message and exit
-e ENC, --enc ENC encoding
-b BIB, --bib BIB We'll try to deduce a bib-file from the passed filename
of the TeX-source, but in case the bib-file is named
differently, you can provided it here#### resolveinputs
usage: resolveinputs [-h] [-e ENC] [filename]
Replace `\input{filename}` with the content of `filename`
positional arguments:
filename Files to convert
options:
-h, --help show this help message and exit
-e ENC, --enc ENC encoding#### resolvepipes
usage: resolvepipes [-h] [-e ENC] [filename]
Convert \input{|command} to the output of `command`.
positional arguments:
filename Files to convertoptions:
-h, --help show this help message and exit
-e ENC, --enc ENC encodingExample:
resolvepipes manuscript.tex > manuscript_with_executed_commands.tex
cat manuscript.tex | resolvepipes > manuscript_cmds.tex## Dependencies
`submitex` only uses the Python standard library.
## License
This project is licensed under the [MIT License](https://github.com/benmaier/submitex/blob/main/LICENSE).