diff options
Diffstat (limited to 'tex/src/preamble-pgfplots.tex')
-rw-r--r-- | tex/src/preamble-pgfplots.tex | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/tex/src/preamble-pgfplots.tex b/tex/src/preamble-pgfplots.tex new file mode 100644 index 0000000..4999656 --- /dev/null +++ b/tex/src/preamble-pgfplots.tex @@ -0,0 +1,107 @@ +%% PGFPlots settings +%% ----------------- +%% +%% PGFPLOTS is a package in (La)TeX for making plots internally. It fits +%% nicely with the purpose of a reproduction pipeline. But it isn't +%% mandatory. Therefore if you don't need it, just comment/delete the line +%% that includes this file in the top LaTeX source (`paper.tex'). +%% +%% However, TiKZ and PGFPlots are the recommended way to include figures +%% and plots in your paper. There are two main reasons: 1) it follows the +%% same LaTeX settings as the text of the paper, so the figures will be in +%% the exact same settings (for example font or lines) as the main body of +%% the papers. 2) It doesn't require any extra dependency (it is +%% distributed as part of TeX-live). Adding specific programs/libraries for +%% plots can greatly increase the number of dependencies for the +%% pipeline. For example Python's Matplotlib library is indeed very good, +%% but it requires Python and Numpy. The latter is not easy to build from +%% source, so after a few years, installing the required version can be +%% very frustrating. +%% +%% Keeping all BibLaTeX settings in a separate preamble was done in the +%% spirit of modularity to 1) easily managable, 2) If a similar BibLaTeX +%% configuration is necessary in another LaTeX compilation, this file can +%% just be copied there and used. +%% +%% PGFPlots uses the (La)TeX TiKZ package to build plots. So we will first +%% do the settings that are necessary in TiKZ, and then go onto the actual +%% PGFPlots package. +%% +%% USAGE: +%% +%% - All plots are made within a `tikz' directory (that must already be +%% present in the location LaTeX is run). +%% +%% - Use `\includetikz{XXXX}' to make/use the figure. If a `makepdf' LaTeX +%% macro is not defined, then \includetikz will assume a `XXXX.pdf' file +%% exists in `tex/tikz' and simply import it. If `makepdf' is defined, +%% then TiKZ/PGFPlot will be called to (possibly) build the plot based +%% on `tex/XXXX.tex'. Note that if the contents of `tex/src/XXXX.tex' +%% hasn't changed since the last build. TiKZ/PGFPlots won't rebuild the +%% plot. + + + + + +%% Very general TiKZ settings. In particular, to allow faster processing +%% (not having to re-build the plots on every run), we are using the +%% externalization feature of TiKZ. With this option, TiKZ will build every +%% figure independently in a special directory afterwards it will include +%% the built figure in the final file. This has many advantages: 1) if the +%% code for the plot hasn't changed, then the plot won't be re-made (can be +%% slow with detailed plots). 2) You can use the PDFs of the individual +%% plots for other purposes (for example to include in slides) cleanly. +\usepackage{tikz} +\usetikzlibrary{external} +\tikzexternalize +\tikzsetexternalprefix{tikz/} + + + + + +%% The following rule will cause the name of the files keeping a figure's +%% external PDF to be set based on the file that the TiKZ commands are +%% from. Without this, TiKZ will use numbers based on the order of +%% figures. These numbers can be hard to manage and they will also depend +%% on order in the final PDF, so it will be very buggy to manage them. +\newcommand{\includetikz}[1]{% + \ifdefined\makepdf% + \tikzsetnextfilename{#1}% + \input{tex/src/#1.tex}% + \else + \includegraphics[width=\linewidth]{tex/tikz/#1.pdf} + \fi +} + + + + + +%% Uncomment the following lines for EPS and PS images. Note that you still +%% have to use the `pdflatex' executable and also add a `[dvips]' option to +%% graphicx. + +%% \tikzset{external/system call={rm -f "\image".eps "\image".ps +%% "\image".dvi; latex \tikzexternalcheckshellescape -halt-on-error +%% -interaction=batchmode -jobname "\image" "\texsource"; +%% dvips -o "\image".ps "\image".dvi; +%% ps2eps "\image.ps"}} + + + + + +%% Inport and configure PGFPlots. +\usepackage{pgfplots} +\pgfplotsset{compat=newest} +\usepgfplotslibrary{groupplots} +\pgfplotsset{ + axis line style={thick}, + tick style={semithick}, + tick label style = {font=\footnotesize}, + every axis label = {font=\footnotesize}, + legend style = {font=\footnotesize}, + label style = {font=\footnotesize} + } |