有时我会将其用作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
包装或将其声明为。tikzpicture
preview
\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 图像,稍后您可以将其包含在内。