Miscellaneous
Some (maybe) useful tools
#Create booklet from PDF
Use pdfbook2:
pdfbook2 --paper=a4paper --inner-margin=100 file.pdf
You can use options for the --out-margin as well as for top and bottom.
Note: if you preview the output pdf, odd pages will be upside-down.
That’s what you want if your print settings are
Two sided: Long Edge (Standard), Pages per side: 1.
#Increase contrast in a PDF
Convert PDF pages to individual images
convert -density 600 your_pdf_filename.pdf output-%02d.jpg
Adjust image quality
convert output*.jpg -normalize -threshold 80% final-%02d.jpg
If you want a pdf back:
convert final*.jpg my_new_highcontrast.pdf
See superuser.com for more links and comments.
#Compress (multiple) images
To compress one image:
convert image.jpg -quality 50% image-compressed.jpg
To compress all images in the folder where you are (output of pwd)
for i in *; do convert $i -quality 50% $i-out.jpg ; done;
See askubuntu.
#Compress PDF
Assuming that these are PDF containing only large images, this works well:
ps2pdf -dPDFSETTINGS=/ebook input.pdf output.pdf
The other options for dPDFSETTINGS are:
/screen lower quality, smaller size. (72 dpi)
/ebook for better quality, but slightly larger pdfs (150 dpi)
/prepress output similar to Acrobat Distiller “Prepress Optimized” setting (300 dpi)
/printer selects output similar to the Acrobat Distiller “Print Optimized” setting (300 dpi)
/default selects output intended to be useful across a wide variety of uses (possibly larger output)
#Grayscale output
To generate a PDF in grayscale (useful for printing) in $\LaTeX$
\usepackage{xcolor} % for output
\selectcolormodel{gray} % in grayscale
Note: external figures will stay in their original colour. See TeXstackexchange and latex.org.
#Break display equations on multiple pages
Use the command \allowdisplaybreaks, see this
for more options.
The environments split and aligned should prevent a block from page breaks.
#biblatex/biber
You can keep your bibliography in a single .bib file in a separated repository,
and include it via git submodule in each of your project. Here are some reasons for which you may wish to do so.
biber supports multiple keys: they are called IDS, see this question.
#latexdiff-git
Generate a PDF to view diff on LaTeX source between commits. For example:
latexdiff-git --revision e26bbec file.tex
where you want to replace e26bbec with your commit hash.
Use --flatten if you are including other sources with \input or \include in your TeX.
#git
#git: tags
Use git tag -l to list all tags. To add the tag v0.7 on the last commit:
git tag v0.7 -m "This is an odd version"
#git: compare two commits
Run git show to see the difference between HEAD and the last commit.
Run
git diff HEAD~3 (diff between working tree and the last 3 commits)
git diff HEAD~3 HEAD (diff between HEAD and the last 3 commits)
Note: git show = last commit log + git diff HEAD~1 HEAD.
Use
git show HEAD file.tex
to show the difference for a single file. See stackoverflow
#git: compare two files in different branches
git diff branch1 branch2 myfile.cs
As suggested in stackoverflow.
#git: history of a file
git log -p -- file.tex
#git: history around a line
For the chunk of lines: 313 – 316 for example:
git log --topo-order --graph -u -L313,316:file.tex
#git: rebasing
To rebase a branch onto master, first checkout the branch
git checkout brach_to_rebase
from there, tell git where to rebase it, for example:
git rebase master
To rebase interactively the last 2 commits (from HEAD), or to squash the last commit
git rebase -i HEAD~2
#git: pull & rebase
To pull and rebase your recents commits on top:
git pull origin --rebase
Set this by default via: git config --global pull.rebase true.
There are several merging strategies, the most common are: resolve, recursive and octopus.🐙
#git: worktree
Add a new worktree tracking an existing remote branch:
git worktree add <path> <remote>/<branch>
Use -b <new_branch> to track the worktree in a local branch.
See my answer on stackexchange.
#git: delete remote branch
Simply git push with a -d flag, then specify the name of the remote branch:
git push -d origin branch
#TableMode
Tables in Emacs
Run:
M-x table-insert and fill the table.
When you are done, use
M-x table-generate-source
to generate code in HTML, LaTeX, Wiki and Mediawiki, and more.
#Magit
Use git inside Emacs.
Run:
M-x magit-status to see git status. From the status buffer you can:
- stage files with
s, or withM-x magit-stage-file - commit your changes with
c c(type the message thenC-c C-cto actually commit), - do a git push
P uor a git pullF u.
Rebase commits marked with !squash automatically with M-x magit-rebase-autosquash.
You can use F – (“Instant Fixup”) to performs a rebase after creating the !fixup commit.
See emacs.stackexchage
#Emerge
Merge two file in Emacs.
Run:
M-x emerge-files and choose the two files. Then use the following shortcuts:
- Next difference with
n, - Previous difference with
p
For a difference, you can choose:
the A version (left) with a and the B version (right) with b.
Use q to quit and then save the merge (buffer) in a file.
#Convert
#Pandoc
Convert epub in PDF.
pandoc -f epub -t latex --latex-engine=xelatex file.epub -o file.pdf
Other format and options in the manual.
#Convert multiple files
for f in /path/*.jpg /path/*.JPG; do
convert "$f" "${f%.*}.gif"
done#Convert doc to pdf
lowriter --convert-to pdf file.doc
See askubuntu
#Convert SVG to PDF
Use Inkscape in a shell:
inkscape file.svg --export-area-drawing --batch-process --export-type=pdf --export-filename=output.pdf
See graphicdesign.stackexchange.
#Convert SVG to TeX
Include it directly as explained here or use Inkscape in a shell:
inkscape -D -z --file=image.svg --export-pdf=image.pdf --export-latex
See tex.stackexchange.
#String to QR code
Install qrencode, then (for a vectorial output):
echo "https://arxiv.org/abs/2404.09580" | qrencode -t SVG > QR.svg
See superuser.com.
#rsync
Sync a local folder with a remote one. ( See unix.stackexchange )
rsync -auv "source_folder/" "user@<source>:<dest_dir>/"
Copy files for backup.
rsync -gloptrunc $srcdir $dstdir
A brief guide, from serverfault.com:
g- preserve group ownership infol- copy symlinks as symlinkso- preserve owner infop- preserve permissionst- preserve timestampsr- recurse thru directoriesu- update, skip any newer files- [
n] - no, dont do this, do a dry run instead c- checksum, attempt checksums on file blocks when possible (*) note: on local filesystems, this get overridden and entire files are copied instead.v- verbose
#Change PDF metadata
From command line:
exiftool -Title="This is the Title" -Author="Happy Man" -overwrite_original file.pdf
See askubuntu.
My friend Andrea developed a user friendly GUI for this task.
You can see metadata with pdfinfo.
#Roughly count words in a PDF
pdftotext myfile.pdf - | wc -w
See this question on superuser for more options.
#Count words in a $\TeX$ or $\LaTeX$ file
Use texcount:
texcount -1 -sum -inc file.tex
-incto parse files called with\includeand\input,-sumto show the total-1: Same as specifying-briefand-total, to ensure only one output line. Used with-sumto print the total number only.
See the texcount manual.
#Include SVG into TeX
Use the svg package and compile with the option --shell-escape to run Inkscape during compilation.
\usepackage{svg}
[...]
\begin{figure}[tbh]
\centering
\includesvg[scale=1.2]{test-svg}
\caption{Included SVG file}\label{fig:testsvg}
\end{figure}#Placement options with LaTeX figures
The order does not matter.
hmeans here (if there is enough room left on the page)tmeans top: Place it at the top of a page.bmeans bottom: Place it at the bottom of a page.pmeans page: Place it on a page containing only floats, such as figures and tables.!allows to ignore certain parameters of LaTeX for float placement.
See more on TeX.stackexhange.
#Maths symbols in unicode in table of content (toc)
To render maths symbols in section titles, you can use \texorpdfstring :
\texorpdfstring{TeX command}{PDF string you want}
For example: \section{The \texorpdfstring{$(\mu, W)$}{(μ,W)} manifold $M$}.
#Icelandic and accented characters in $\LaTeX$
Reykjavík -> Reykjav\'{\i}k
Tæknigarður -> T{\ae}knigar{\dh}ur
Göteborg -> G\"{o}teborg
See also Pavel Zorin-Kranich page about $\LaTeX$ tools and best practice
Suggestions on How to write maths.
Other useful tools
- arxiv-collector: collect files to upload on the arXiv.
#reMarkable
Scripts for the reMarkable are here
This website is powered by HUGO with the minimal-bootstrap-hugo-theme.