TITLE: Miscellaneous LaTeX snippets
DATE: 2019-09-30
AUTHOR: John L. Godlee
====================================================================
I spent Sunday afternoon researching a short list of things I
wanted to fix in LaTeX to streamline my experience.
Define macros for formatted blocks
Sometimes I have to write a document like a CV or a set of handout
notes which require reuse of a complex formatted block of text. For
example, below, where I want to create a timeline of events with
the date of the event on the left of the page, with a description
of the event on the right. I can define a macro for this instead of
writing the same boilerplate code every time. I stole this from a
Luke Smith youtube video.
[Luke Smith youtube video]:
https://www.youtube.com/watch?v=rvgP7IMeUn8
\newcommand{\entry}[4]{
\begin{minipage}[t]{0.15\textwidth}
\hfill{} \textsc{#1}
\end{minipage}
\vline\hfill{}
\begin{minipage}[t]{0.8\textwidth}
#2
\textit{#3}
\footnotesize{#4}
\end{minipage}\\ \vspace{0.25cm}
}
This macro has four insertion points for user input, defined in the
square brackets and called with #n arguments. The macro places a
small area to the left of the vertical line, then a larger one to
the right.
To call the macro and give the user input:
\entry{2014--2016}{Web dev}{More text}{This is a description}
![Formatted block for
CV](
https://johngodlee.xyz/img_full/tips_latex/format_block.png)
Globally set image size
\documentclass{article}
\usepackage{graphicx}
\setkeys{Gin}{width=\linewidth, height=10cm, keepaspectratio}
\begin{document}
\begin{figure}
\includegraphics{test.png}
\end{figure}
\end{document}
Globally center images
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\g@addto@macro\@floatboxreset{\centering}
\makeatother
\begin{document}
\begin{figure}
\includegraphics{test.png}
\end{figure}
Figures in wrapped text
This uses the wrapfig package to make a right-aligned figure. The
figure itself is 5 cm width and the image inside the figure is also
5 cm.
\documentclass{article}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{wrapfigure}{r}{5cm}
\centering{}
\includegraphics[width=5cm]{img}
\caption{This is a caption}
\label{right_img}
\end{wrapfigure}
\blindtext
\end{document}
Custom directory for .bst files
bst files are used to hold custom BibTeX reference styles. I have
one that is based on the agsm style, but I've set it to not include
URLs in the reference list, it's called agsmnourl.bst. In my LaTeX
document I can use this style file with:
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{agsmnourl} % Use custom template
\usepackage{cite}
\begin{document}
\citep{test}
\bibliography{test}
\end{document}
Previously I had kept agsmnourl.bst in the same directory as the
project, but my laptop was quickly filling up with duplicates of
the style file. I found out that latexmk which I use to compile
LaTeX documents, can take a ~/latexmkrc file where certain
variables can be defined. I can define a custom directory which
holds these custom .bst files:
$ENV{'TEXINPUTS'}='~/.texmf//:' . $ENV{'TEXINPUTS'};
In this case the directory is ~/.texmf.
Then, the next time I run latexmk it will source latexmkrc.