调整页面大小以适合 tikz 图形

调整页面大小以适合 tikz 图形

有时我会将其用作tikz绘图工具,而不将图形嵌入文档中。在这种情况下,我通常希望将生成的 PDF 包含在不同的 TeX 文件中(是​​的,我知道我可以直接包含 TikZ 代码,但在这种情况下它没有帮助)。因此,我希望图片完全适合页面,这样它周围就不会有空白。为此,我使用了TikZ 的geometry包和clip。例如,这里:

\documentclass{minimal}
\usepackage{tikz}
\usepackage[paperwidth=1cm,paperheight=1cm,hmargin=0cm,vmargin=0cm]{geometry}

\begin{document}
\begin{center}
\begin{tikzpicture}
\clip (0,0) rectangle (1,1);
\draw[red] (0,0) -- (1,1);
\draw[red] (1,0) -- (0,1);
\draw[blue] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{center}
\end{document}

有没有更好/更好/更优雅的方法来做到这一点?

编辑1: 为了澄清,我之所以使用,clip是因为我认为它会让事情变得更简单。如果没有它,事情实际上会更简单。

编辑2:

不幸的是,只能接受一个答案。在这种情况下,我可以接受所有答案。对我来说,我了解了三种新工具,它们都略有不同,可以实现我的目标。我选择 Martin 的答案是因为它的独立性;不需要外部工具或后处理。其他两个选项产生的结果大致相同。

答案1

使用带选项preview的包仅将您想要的元素显示为单个页面。您需要在环境中tightpage,active包装或将其声明为。tikzpicturepreview\PreviewEnvironment{tikzpicture}

该类standalone以非常简短的形式为您提供了此功能:

\documentclass[class=minimal,border=0pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\clip (0,0) rectangle (1,1);
\draw[red] (0,0) -- (1,1);
\draw[red] (1,0) -- (0,1);
\draw[blue] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{document}

结果

(深色边框是 PDF 查看器的背景,而不是 PDF 的一部分)

然后您可以加载standalone 包裹(!) 在文档中,只需\input此文件即可。序言和document环境将自动被条纹化。

笔记:

您目前正在剪辑中心蓝色矩形并将其切成两半。您需要在剪切路径的每一侧添加一半的线:

\clip (-.5\pgflinewidth,-.5\pgflinewidth) rectangle ([shift={(.5\pgflinewidth,.5\pgflinewidth)}]1,1);

答案2

我建议使用 Tikzexternal库。它将文档中的所有 TikZ 图形保存在单独的裁剪 PDF 中(并在后续运行中包含它们,而不是重新生成图形)。这些文件将被称为<jobname>-figure<number>.pdf

\documentclass{article}
\usepackage{tikz}

% Load the library
\usetikzlibrary{external}

% Activate it
\tikzexternalize

% You can uncomment the following to force a remake of all figures
% \tikzset{external/force remake=true} 

\begin{document}
\begin{center}
\begin{tikzpicture}
\clip (0,0) rectangle (1,1);
\draw[red] (0,0) -- (1,1);
\draw[red] (1,0) -- (0,1);
\draw[blue] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{center}
\end{document}

答案3

你可以使用pdfcrop自动删除空白。这样您就会得到一个小的 pdf 图像,稍后您可以将其包含在内。

相关内容