aboutsummaryrefslogtreecommitdiff
path: root/tex/preamble-pgfplots.tex
blob: 17ca7b54522d52daa7391f8fe003005de807dd69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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 it will simply assume a `XXXX.pdf' file
%%    exists in the `\bdir/tex/build/tikz' directory 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/XXXX.tex' hasn't changed since the las
%%    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/#1.tex}%
  \else
    \includegraphics[width=\linewidth]{\bdir/tex/build/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}
  }