Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

A graphing program I use has support for TikZ output. It generates a \begin{tikzpicture} ... \end{tikzpicture} which I can include in my document. The problem, however, is that it appears to insert a large amount of whitespace around the actual drawing.

Currently, my approach has been to include the plot in an 'empty' LaTeX file, run pdflatex on it and then unleash pdfcrop. The resulting PDF can then be included in place of the TikZ image.

However, this is not at all clean, and quite a bit of work on my part. Therefore, I am wondering if I can instruct TikZ to do the cropping for me.

Update Here is a minimal document that shows the issue; sorry for the length, machine generated TikZ is (unfortunately) never that concise. I've added a chunk at the end to show the bounding box for the figure.

\documentclass[11pt]{article}
\pagestyle{empty}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}{0pt}{0pt}{518pt}{403pt}
    \clip(0pt,403pt) -- (389.957pt,403pt) -- (389.957pt,99.6166pt) -- (0pt,99.6166pt) -- (0pt,403pt);
    \color[rgb]{1,1,1}
    \fill(3.76406pt,399.236pt) -- (380.923pt,399.236pt) -- (380.923pt,253.19pt) -- (3.76406pt,253.19pt) -- (3.76406pt,399.236pt);
    \fill(53.4497pt,394.719pt) -- (374.901pt,394.719pt) -- (374.901pt,289.325pt) -- (53.4497pt,289.325pt) -- (53.4497pt,394.719pt);
\begin{scope}
    \color[rgb]{0,0,0}
    \pgftext[center, base, at={\pgfpoint{13.5506pt}{343.151pt}},rotate=90]{\sffamily\fontsize{9}{0}\selectfont{$\mathsf{\theta}$ / rad}}
    \color[rgb]{0.0784314,0.0745098,0.0705882}
    \pgftext[center, base, at={\pgfpoint{30.1125pt}{285.561pt}}]{\sffamily\fontsize{9}{0}\selectfont{-0.10}}
    \pgftext[center, base, at={\pgfpoint{30.1125pt}{311.91pt}}]{\sffamily\fontsize{9}{0}\selectfont{-0.05}}
    \pgftext[center, base, at={\pgfpoint{31.9945pt}{338.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.00}}
    \pgftext[center, base, at={\pgfpoint{31.9945pt}{365.359pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.05}}
    \pgftext[center, base, at={\pgfpoint{31.9945pt}{391.708pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.10}}
    \color[rgb]{0,0,0}
    \draw[line join=bevel, line cap=rect](52.6969pt,294.595pt) -- (48.9328pt,294.595pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,299.865pt) -- (48.9328pt,299.865pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,305.134pt) -- (48.9328pt,305.134pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,310.404pt) -- (48.9328pt,310.404pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,320.943pt) -- (48.9328pt,320.943pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,326.213pt) -- (48.9328pt,326.213pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,331.483pt) -- (48.9328pt,331.483pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,336.752pt) -- (48.9328pt,336.752pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,348.045pt) -- (48.9328pt,348.045pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,353.314pt) -- (48.9328pt,353.314pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,358.584pt) -- (48.9328pt,358.584pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,363.854pt) -- (48.9328pt,363.854pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,374.393pt) -- (48.9328pt,374.393pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,379.663pt) -- (48.9328pt,379.663pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,384.933pt) -- (48.9328pt,384.933pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,390.202pt) -- (48.9328pt,390.202pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,289.325pt) -- (45.9216pt,289.325pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,315.674pt) -- (45.9216pt,315.674pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,342.022pt) -- (45.9216pt,342.022pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,369.123pt) -- (45.9216pt,369.123pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,395.472pt) -- (45.9216pt,395.472pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,395.472pt) -- (52.6969pt,289.325pt);
    \pgftext[center, base, at={\pgfpoint{215.304pt}{256.202pt}}]{\sffamily\fontsize{9}{0}\selectfont{\textit{t}}}
    \color[rgb]{0.0784314,0.0745098,0.0705882}
    \pgftext[center, base, at={\pgfpoint{52.6969pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{0}}
    \pgftext[center, base, at={\pgfpoint{93.3487pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{5}}
    \pgftext[center, base, at={\pgfpoint{133.248pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{10}}
    \pgftext[center, base, at={\pgfpoint{173.9pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{15}}
    \pgftext[center, base, at={\pgfpoint{213.799pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{20}}
    \pgftext[center, base, at={\pgfpoint{254.451pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{25}}
    \pgftext[center, base, at={\pgfpoint{294.35pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{30}}
    \pgftext[center, base, at={\pgfpoint{335.002pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{35}}
    \pgftext[center, base, at={\pgfpoint{374.901pt}{271.258pt}}]{\sffamily\fontsize{9}{0}\selectfont{40}}
    \color[rgb]{0,0,0}
    \draw[line join=bevel, line cap=rect](60.9778pt,289.325pt) -- (60.9778pt,285.561pt);
    \draw[line join=bevel, line cap=rect](68.5059pt,289.325pt) -- (68.5059pt,285.561pt);
    \draw[line join=bevel, line cap=rect](76.7869pt,289.325pt) -- (76.7869pt,285.561pt);
    \draw[line join=bevel, line cap=rect](85.0678pt,289.325pt) -- (85.0678pt,285.561pt);
    \draw[line join=bevel, line cap=rect](100.877pt,289.325pt) -- (100.877pt,285.561pt);
    \draw[line join=bevel, line cap=rect](109.158pt,289.325pt) -- (109.158pt,285.561pt);
    \draw[line join=bevel, line cap=rect](117.439pt,289.325pt) -- (117.439pt,285.561pt);
    \draw[line join=bevel, line cap=rect](124.967pt,289.325pt) -- (124.967pt,285.561pt);
    \draw[line join=bevel, line cap=rect](141.529pt,289.325pt) -- (141.529pt,285.561pt);
    \draw[line join=bevel, line cap=rect](149.057pt,289.325pt) -- (149.057pt,285.561pt);
    \draw[line join=bevel, line cap=rect](157.338pt,289.325pt) -- (157.338pt,285.561pt);
    \draw[line join=bevel, line cap=rect](165.619pt,289.325pt) -- (165.619pt,285.561pt);
    \draw[line join=bevel, line cap=rect](181.428pt,289.325pt) -- (181.428pt,285.561pt);
    \draw[line join=bevel, line cap=rect](189.709pt,289.325pt) -- (189.709pt,285.561pt);
    \draw[line join=bevel, line cap=rect](197.99pt,289.325pt) -- (197.99pt,285.561pt);
    \draw[line join=bevel, line cap=rect](205.518pt,289.325pt) -- (205.518pt,285.561pt);
    \draw[line join=bevel, line cap=rect](222.08pt,289.325pt) -- (222.08pt,285.561pt);
    \draw[line join=bevel, line cap=rect](229.608pt,289.325pt) -- (229.608pt,285.561pt);
    \draw[line join=bevel, line cap=rect](237.889pt,289.325pt) -- (237.889pt,285.561pt);
    \draw[line join=bevel, line cap=rect](246.17pt,289.325pt) -- (246.17pt,285.561pt);
    \draw[line join=bevel, line cap=rect](261.979pt,289.325pt) -- (261.979pt,285.561pt);
    \draw[line join=bevel, line cap=rect](270.26pt,289.325pt) -- (270.26pt,285.561pt);
    \draw[line join=bevel, line cap=rect](278.541pt,289.325pt) -- (278.541pt,285.561pt);
    \draw[line join=bevel, line cap=rect](286.069pt,289.325pt) -- (286.069pt,285.561pt);
    \draw[line join=bevel, line cap=rect](302.631pt,289.325pt) -- (302.631pt,285.561pt);
    \draw[line join=bevel, line cap=rect](310.159pt,289.325pt) -- (310.159pt,285.561pt);
    \draw[line join=bevel, line cap=rect](318.44pt,289.325pt) -- (318.44pt,285.561pt);
    \draw[line join=bevel, line cap=rect](326.721pt,289.325pt) -- (326.721pt,285.561pt);
    \draw[line join=bevel, line cap=rect](342.53pt,289.325pt) -- (342.53pt,285.561pt);
    \draw[line join=bevel, line cap=rect](350.811pt,289.325pt) -- (350.811pt,285.561pt);
    \draw[line join=bevel, line cap=rect](359.092pt,289.325pt) -- (359.092pt,285.561pt);
    \draw[line join=bevel, line cap=rect](366.62pt,289.325pt) -- (366.62pt,285.561pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,289.325pt) -- (52.6969pt,282.55pt);
    \draw[line join=bevel, line cap=rect](93.3487pt,289.325pt) -- (93.3487pt,282.55pt);
    \draw[line join=bevel, line cap=rect](133.248pt,289.325pt) -- (133.248pt,282.55pt);
    \draw[line join=bevel, line cap=rect](173.9pt,289.325pt) -- (173.9pt,282.55pt);
    \draw[line join=bevel, line cap=rect](213.799pt,289.325pt) -- (213.799pt,282.55pt);
    \draw[line join=bevel, line cap=rect](254.451pt,289.325pt) -- (254.451pt,282.55pt);
    \draw[line join=bevel, line cap=rect](294.35pt,289.325pt) -- (294.35pt,282.55pt);
    \draw[line join=bevel, line cap=rect](335.002pt,289.325pt) -- (335.002pt,282.55pt);
    \draw[line join=bevel, line cap=rect](374.901pt,289.325pt) -- (374.901pt,282.55pt);
    \draw[line join=bevel, line cap=rect](52.6969pt,289.325pt) -- (374.901pt,289.325pt);
    \color[rgb]{1,1,0}
    \fill[opacity=0.392157](271.012pt,348.045pt) -- (362.103pt,348.045pt) -- (362.103pt,337.505pt) -- (271.012pt,337.505pt) -- (271.012pt,348.045pt);
    \color[rgb]{0,0,0}
    \draw[line join=miter, line cap=rect](271.012pt,348.045pt) -- (362.103pt,348.045pt) -- (362.103pt,337.505pt) -- (271.012pt,337.505pt) -- (271.012pt,348.045pt);
    %\color[rgb]{1,1,1}
    %\fill[opacity=0.607843](278.541pt,396.225pt) -- (361.35pt,396.225pt) -- (361.35pt,351.809pt) -- (278.541pt,351.809pt) -- (278.541pt,396.225pt);
    \color[rgb]{1,0,0}
    \draw[line width=1pt, line join=miter, line cap=rect](287.574pt,385.685pt) -- (302.631pt,385.685pt);
    \color[rgb]{0,0,0}
    \pgftext[left, base, at={\pgfpoint{310.159pt}{381.921pt}}]{\sffamily\fontsize{9}{0}\selectfont{Euler}}
    \color[rgb]{0,0.501961,0}
    \draw[line width=1pt, line join=miter, line cap=rect](287.574pt,374.393pt) -- (302.631pt,374.393pt);
    \color[rgb]{0,0,0}
    \pgftext[left, base, at={\pgfpoint{310.159pt}{370.629pt}}]{\sffamily\fontsize{9}{0}\selectfont{Leapfrog}}
    \draw[line width=1pt, line join=miter, line cap=rect](287.574pt,363.101pt) -- (302.631pt,363.101pt);
    \pgftext[left, base, at={\pgfpoint{310.159pt}{359.337pt}}]{\sffamily\fontsize{9}{0}\selectfont{Analytic}}
    \color[rgb]{1,1,1}
    \fill(3.76406pt,249.426pt) -- (386.193pt,249.426pt) -- (386.193pt,103.381pt) -- (3.76406pt,103.381pt) -- (3.76406pt,249.426pt);
    \color[rgb]{1,1,0}
    \fill[opacity=0.392157](57.2137pt,246.415pt) -- (386.193pt,246.415pt) -- (386.193pt,133.493pt) -- (57.2137pt,133.493pt) -- (57.2137pt,246.415pt);
\end{scope}
\begin{scope}
    \color[rgb]{0,0,0}
    \draw[line join=miter, line cap=rect](56.4609pt,247.168pt) -- (385.44pt,247.168pt) -- (385.44pt,134.246pt) -- (56.4609pt,134.246pt) -- (56.4609pt,247.168pt);
    \color[rgb]{0,0,0}
    \pgftext[center, base, at={\pgfpoint{13.5506pt}{191.46pt}},rotate=90]{\sffamily\fontsize{9}{0}\selectfont{\textbf{ }}}
    \color[rgb]{0.0784314,0.0745098,0.0705882}
    \pgftext[center, base, at={\pgfpoint{30.8653pt}{131.988pt}}]{\sffamily\fontsize{9}{0}\selectfont{-0.010}}
    \pgftext[center, base, at={\pgfpoint{30.8653pt}{159.842pt}}]{\sffamily\fontsize{9}{0}\selectfont{-0.005}}
    \pgftext[center, base, at={\pgfpoint{32.7473pt}{186.943pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.000}}
    \pgftext[center, base, at={\pgfpoint{32.7473pt}{214.044pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.005}}
    \pgftext[center, base, at={\pgfpoint{32.7473pt}{241.898pt}}]{\sffamily\fontsize{9}{0}\selectfont{0.010}}
    \color[rgb]{0,0,0}
    \draw[line join=bevel, line cap=rect](56.4609pt,141.774pt) -- (52.6969pt,141.774pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,147.044pt) -- (52.6969pt,147.044pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,152.313pt) -- (52.6969pt,152.313pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,157.583pt) -- (52.6969pt,157.583pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,168.875pt) -- (52.6969pt,168.875pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,174.145pt) -- (52.6969pt,174.145pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,179.415pt) -- (52.6969pt,179.415pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,185.437pt) -- (52.6969pt,185.437pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,195.977pt) -- (52.6969pt,195.977pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,201.999pt) -- (52.6969pt,201.999pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,207.269pt) -- (52.6969pt,207.269pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,212.538pt) -- (52.6969pt,212.538pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,223.831pt) -- (52.6969pt,223.831pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,229.1pt) -- (52.6969pt,229.1pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,234.37pt) -- (52.6969pt,234.37pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,239.64pt) -- (52.6969pt,239.64pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,135.752pt) -- (49.6856pt,135.752pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,163.606pt) -- (49.6856pt,163.606pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,190.707pt) -- (49.6856pt,190.707pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,217.808pt) -- (49.6856pt,217.808pt);
    \draw[line join=bevel, line cap=rect](56.4609pt,245.662pt) -- (49.6856pt,245.662pt);
    \pgftext[center, base, at={\pgfpoint{220.95pt}{106.392pt}}]{\sffamily\fontsize{9}{0}\selectfont{\textbf{ }}}
    \color[rgb]{0.0784314,0.0745098,0.0705882}
    \pgftext[center, base, at={\pgfpoint{83.5622pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{28}}
    \pgftext[center, base, at={\pgfpoint{112.169pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{29}}
    \pgftext[center, base, at={\pgfpoint{140.776pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{30}}
    \pgftext[center, base, at={\pgfpoint{169.383pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{31}}
    \pgftext[center, base, at={\pgfpoint{197.99pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{32}}
    \pgftext[center, base, at={\pgfpoint{226.597pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{33}}
    \pgftext[center, base, at={\pgfpoint{255.58pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{34}}
    \pgftext[center, base, at={\pgfpoint{283.81pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{35}}
    \pgftext[center, base, at={\pgfpoint{313.17pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{36}}
    \pgftext[center, base, at={\pgfpoint{341.777pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{37}}
    \pgftext[center, base, at={\pgfpoint{370.384pt}{116.178pt}}]{\sffamily\fontsize{9}{0}\selectfont{38}}
\end{scope}

% My stuff -- show the bb
\path[draw=black] (current bounding box.north west) rectangle (current bounding box.south east);
\end{tikzpicture}
\end{document}
share|improve this question
2  
Could you post an example of the output of the graphing program (one that's got the extra whitespace) please? That would help us figure out what's putting the space there. –  Andrew Stacey Dec 1 '10 at 19:23
    
It renders correctly for me (using TikZ v2.10): imgur.com/huCTz.png. Which version of TikZ/PGF are you using? –  Caramdir Dec 2 '10 at 3:19
    
@Caramdir That is the same rendering I get. The bounding box is not tight (there is whitespace, especially at the bottom of the image). –  Freddie Witherden Dec 2 '10 at 18:03
add comment

2 Answers

up vote 4 down vote accepted

The code adds some completely useless invisible (or rather white) stuff. The lines

\clip(0pt,403pt) -- (389.957pt,403pt) -- (389.957pt,99.6166pt) -- (0pt,99.6166pt) -- (0pt,403pt);
\color[rgb]{1,1,1}
\fill(3.76406pt,399.236pt) -- (380.923pt,399.236pt) -- (380.923pt,253.19pt) -- (3.76406pt,253.19pt) -- (3.76406pt,399.236pt);
\fill(53.4497pt,394.719pt) -- (374.901pt,394.719pt) -- (374.901pt,289.325pt) -- (53.4497pt,289.325pt) -- (53.4497pt,394.719pt);

draw a white background that is larger than the actual picture. TikZ sees that and thinks it is part of the picture. Simply removing/uncommenting these lines removes most of the whitespace.

Near the end of the first scope,

\color[rgb]{1,1,1}
\fill(3.76406pt,249.426pt) -- (386.193pt,249.426pt) -- (386.193pt,103.381pt) -- (3.76406pt,103.381pt) -- (3.76406pt,249.426pt);

does the same. Additionally (near the end of the second scope),

\pgftext[center, base, at={\pgfpoint{220.95pt}{106.392pt}}]{\sffamily\fontsize{9}{0}\selectfont{\textbf{ }}}

adds a blank node below the picture, again enlarging the bounding box.

Removing all those lines gives a tight bounding box.

As far as I know, TikZ cannot do the cropping for you, as it can't know whether the white stuff is intentional or not (there might for example be a dark background behind the image so that white is visible).

share|improve this answer
add comment

Sure, just insert \useasboundingbox <some rectangle> after \begin{tikzpicture}. That can make the bounding box surround only what you want. Look in the PGF manual for that command and you can see it in action.

share|improve this answer
    
I want everything. My problem is that there is whitespace around the graphic, 'inserted' by the program that generated the image. It is this whitespace that I want to crop. Hence I am wondering if TikZ can, like pdfcrop, figure out what is this and remove it. –  Freddie Witherden Dec 1 '10 at 16:47
3  
Without seeing the generated code I can't tell what is causing the bounding box to grow. TikZ usually makes the bounding box "just" big enough to enclose all visible things. Here is a nice exception, but it's just a stab in the dark. –  Matthew Leingang Dec 1 '10 at 16:55
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.