%% PGFPlots settings %% ----------------- % %% PGFPLOTS is a package in (La)TeX for making plots internally. It fits %% nicely with the purpose of a reproducible project. 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 %% project. 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. % %% Copyright (C) 2018-2020 Mohammad Akhlaghi % %% This file is part of Maneage (https://maneage.org). % %% This file is free software: you can redistribute it and/or modify it %% under the terms of the GNU General Public License as published by the %% Free Software Foundation, either version 3 of the License, or (at your %% option) any later version. % %% This file is distributed in the hope that it will be useful, but WITHOUT %% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or %% FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License %% for more details. % %% You should have received a copy of the GNU General Public License along %% with this file. If not, see . %% 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} }