20

General understanding

I know that several people have asked about how to include plots and graphics (created by tikz and pstricks) into a latex document.

Now it seems evident to ask how to handle a big number of figures. At first it seems crucial to pre-compile graphics that should enter the document to reduce the final document's compilation time.

But there are many different ways to perform that issue and actually the package standalone seems the most auspicious. By trying it, I recognized that all standalone tex-files have to be in the same folder to be compiled if changes were performed. Otherwise it would result in errors (Including pictures in subdirectories with standalone package).

Question

How do I now include graphics like the following MWE (adapted from matlab2tikz for including my macros), in order to have the same common formatting (e.g. font size and shape) for all text in my document including the figure labels?

MWE

\documentclass{article}
\input{Style/macros.tex}
\usepackage{standalone}
\standaloneconfig{mode=buildnew}

\usepackage{filecontents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File Style/macros.tex
\begin{filecontents*}{Style/macros.tex}
  \fontsize{10}{12}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File Documents/test_standalone_slave.tex
\begin{filecontents*}{Documents/test_standalone_slave.tex}
  \documentclass{standalone}
  \input{../Style/macros.tex}
  \usepackage{tikz,pgfplots}
  \pgfplotsset{compat=newest}

  \begin{document}
  \begin{tikzpicture}
  \draw (0,0) circle (2);
  \end{tikzpicture}
  \end{document}
  \endinput
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{tikz,pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
This is my MWE!
\includestandalone{Documents/test_standalone_slave}
\end{document}
5
  • 2
    I found this: tex.stackexchange.com/a/142479/412 workflow very useful.
    – Dror
    Commented Jan 5, 2014 at 5:37
  • If the files are precompiled, they will contain whatever font(s) specified during the initial compilation. Therefore you will have to make sure that the precompiled graphics and the master document are configured equally. If not, you will have to recompile the precompiled graphics in order to make the font(s) match.
    – eiterorm
    Commented May 17, 2014 at 19:16
  • @eiterorm: Could you therefore say what commands and packages have to be in the common style to ensure this? I could include the common style via \input or write a document-specific package?
    – strpeter
    Commented May 17, 2014 at 19:21
  • @strpeter, unfortunately I don't know any automated way to do this. The font size is specified in the documentclass command, and you would need different document classes for the graphics (standalone) and for the master (article, report, book, etc.). If not, you could make a preamble file with the document class and the appropriate packages to be loaded by both the master document and the graphics documents. You would still have to recompile everything if you made any changes to the preamble definitions, though. Alas, I don't know how to externally specify the font size.
    – eiterorm
    Commented May 17, 2014 at 19:29
  • Yes, that's exactly what I intended! So I just have to know how to write the font size (and what else should be loaded as certain packages like fontenc) into such a preamble file preamble_file.tex.
    – strpeter
    Commented May 19, 2014 at 7:32

1 Answer 1

9

If I were you, I would do the following:

  1. In order to make your common settings accessible for all figures, diagrams, documents, etc, put the settings into a single package, namely, mycommon.sty. Register this package globally so you can use it throughout your projects. If you don't know how to do this, see my answer here (click).

  2. If you want your diagram or figures to be accessible for other projects, put them in a separate directory that is higher than the project directories. For example,

    <any directory>\Diagrams\
    <any directory>\Diagrams\Projects\Project-01\
    <any directory>\Diagrams\Projects\Project-02\
    
  3. To get a tight drawing for each diagram, use standalone document class as follows

    \documentclass[pstricks,border=12pt,12pt]{standalone}
    \usepackage{mycommon}
    \begin{document}
    % your drawing code goes here...
    \end{document}
    

    Also load your package for common settings.

  4. Compile each diagram with the appropriate compilers to get a PDF version. It will save a lot of your time when compiling the main input file of your projects.

  5. Import the PDF diagrams from within the main input file of your projects. And compile the main input file with pdflatex (recommended because it is fully supported by microtype package). You may also load the mycommon package if necessary.

    \includegraphics from graphicx will do the job of importing diagrams. You can set \graphicspath{{../../Diagrams/}} to shorten your path when invoking \includegraphics.

4
  • Could you please be more precise in step 1 on how to register a package globally. It is not obvious to me how to do this. I guess for linux it is according to wiki.archlinux.org/index.php/TeX_Live#Using_PKGBUILDs
    – strpeter
    Commented Dec 28, 2014 at 9:43
  • The points 4 and 5 explain very well a good procedure. Each of my previous trials to work around seems ugly compared to this!
    – strpeter
    Commented Dec 28, 2014 at 9:54
  • @strpeter: See my update in step 1. Commented Dec 28, 2014 at 10:06
  • This will work well, I guess, if you use the same fonts and the same fontsizes etc. throughout all documents which have diagrams in common. Otherwise, things will get messier as you will need multiple PDFs for the different configurations...
    – cfr
    Commented Dec 28, 2014 at 23:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .