我如何创建与我的 tikz 图片大小完全相同的 pdf 文档?

我如何创建与我的 tikz 图片大小完全相同的 pdf 文档?

我经常用 tikz 创建图片,然后发送给别人或者包含在电子邮件中。但问题是,图片周围(尤其是图片下方)有一大片空白。

为了解决这个问题,我通常会截屏打印我的图片,然后裁剪以获得我想要的大小。另一个解决方案是使用投影仪,然后缩放以使图片与幻灯片大小一样大。不过,这两种解决方案都不是那么好。我真正想要的是让 pdf 文件和我的图片一样大,就像从一开始就被裁剪一样。

有没有什么包可以实现这个功能?

答案1

TikZ 可以自己做到这一点。请查看 TikZ 文档的第 63 节:“外部化图形”。

这描述了如何预处理给定文档中的所有 TikZ 图形以加快文档的实际处理速度。这会导致每个 TikZ 图形生成一个 PDF 文件。

这是(缩短的)示例文档:

% This is the file survey.tex
\documentclass{article}
\usepackage{graphics}
\usepackage{tikz}
\pgfrealjobname{survey}
\begin{document}

In the following figure, we see a circle:
\beginpgfgraphicnamed{survey-f1}%  <<< Note that `%` here, otherwise a space will be inserted before the picture, refer to https://tex.stackexchange.com/q/7453/250119
  \begin{tikzpicture}
    \fill (0,0) circle (10pt);
  \end{tikzpicture}
\endpgfgraphicnamed

\end{document}

以下命令survey-f1.pdf从上述文档生成图像文件,并裁剪为 TikZ 图片:

pdflatex --jobname=survey-f1 survey.tex

答案2

包裹standalone就是这样。这是一个新软件包(我想是今年发布的),它将生成与你的图形大小完全相同的文档(你也可以用它来制作文本或其他东西)。以下是设置文档的方法

\documentclass{standalone}
\usepackage{tikz} 
%include other needed packages here   
\begin{document}

\begin{tikzpicture}
% include your tikz code here
\end{tikzpicture}

\end{document}

如果您这样做,那么您将能够直接编译它以获得与图形大小完全相同的 .pdf 文档,然后可以将其包含在电子邮件、word 文档中,甚至可以使用该命令将其作为另一个 .tex 文档中的图片包含在内\includegraphics{}

最好的一点是,它还可以作为 .tex 文件包含在 .tex 文档中(例如articlebeamer等),使用\input{}中,而无需更改上述 .tex 文档中的任何内容。最主要的是将独立包包含在您的序言中(即 之前\begin{document}),以及您在上述代码中使用的任何包,在我的示例中将是:

\usepackage{standalone}
\usepackage{tikz}

然后将图片放到您想要的位置,例如:

\begin{figure}[!h]
\input{mytikzfig.tex}
\caption{  }
\end{figure}

其中 mytikzfig.tex 是使用独立包的包含 tikz 图片的 .tex 文档。

你可以在 StackOverflow 的答案中看到这个解决方案问题

答案3

对于单个 TikZ 图片,你也可以使用preview

\documentclass{article}

\usepackage{tikz}
\usepackage[active,pdftex,tightpage]{preview}
\PreviewEnvironment[{[]}]{tikzpicture}

\begin{document}

\begin{tikzpicture}[options]
...
\end{tikzpicture}

\end{document}

答案4

由于 Konrad 的答案对我和我的 pgf 版本不起作用,我查看了手册并从手册中得出了以下解决方案:

\documentclass{article}
%  main document, called main.tex
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/] %  activate

\begin{document}
\tikzsetnextfilename{trees}
\begin{tikzpicture} %  will be written to ’figures/trees.pdf’
  \node {root}
    child {node {left}}
    child {node {right}};
\end{tikzpicture}

\begin{tikzpicture} %  will be written to ’figures/main-figure0.pdf’
   \draw[help lines] (0,0) grid (5,5);
\end{tikzpicture}
\end{document}

以下命令将生成图形:

pdflatex -shell-escape main

相关内容