%% 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-2022 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 '\includetikz' can be used to either build the figures using %% PGFPlots (when '\makepdf' is defined), or use an existing file (when %% '\makepdf' isn't defined). When making the PDF, it will set the output %% figure name to be the same as the 'tex/src/XXXX.tex' file that contains %% the PGFPlots source of the figure. In this way, when using the PDF, it %% will also have the same name, thus allowing the figures to easily change %% their place relative to others: figure ordering won't be a problem. This %% is a problem by default because if an explicit name isn't set at the %% start, tikz will make images based on their order in the paper. % %% This function takes two arguments: %% 1) The base-name of the LaTeX file with the 'tikzpicture' %% environment. As mentioned above, this will also be the name of %% the produced figure. %% 2) The settings to use with 'includegraphics' when an already-built %% file should be used. \newcommand{\includetikz}[2]{% \ifdefined\makepdf% \tikzsetnextfilename{#1}% \input{tex/src/#1.tex}% \else \includegraphics[#2]{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} }