我经常用 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 文档中(例如article
,beamer
等),使用\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