文件中保存了以下 LaTeX 代码~\test.tex
:
\documentclass{article}
\usepackage{lipsum,tikz}
\begin{document}
\lipsum[1-1][1-2]
\tikz\draw (0,0) rectangle (1,1);
\lipsum[1-1][3-4]
\end{document}
当在终端中执行以下命令时:
cd ~
pdflatex 测试
在路径 处生成一个 PDF 文件~\test.tex
。在 PDF 查看器中打开时,文件显示如下:
我想在图片周围添加空间。我尝试通过在 之后添加[inner sep=1cm]
或来实现这一点,但这两种方法都没有对结果产生任何明显的影响。[outer sep=1cm]
\tikz
请注意,上面的示例是我真正感兴趣的 TikZ 图片的简化的最小工作版本,因此解决方案必须是通用的。
答案1
inner
并outer sep
适用于节点。
有多种方法可以做到这一点,即绘制相对于图表边界框的(不可见)路径。TikZ 定义了一个名为的节点,current bounding box
该节点在任何给定点都围绕绘制到该点的图表内容,因此您可以使用它。这里有两个示例,第一个不使用库,第二个使用库fit
。
显然附加代码必须是最后的图表中的东西,\end{tikzpicture}
在 的右括号之前\tikz{}
。
\documentclass{article}
\usepackage{lipsum,tikz}
\usetikzlibrary{fit}
\begin{document}
\lipsum*[1]
\tikz{\draw (0,0) rectangle (1,1); \draw (2,0) rectangle (3,1);\path (current bounding box.south west) +(-1,-1) (current bounding box.north east) +(1,1);}
\lipsum*[1]
\tikz{\draw (0,0) rectangle (1,1); \draw (2,0) rectangle (3,1);\node[fit=(current bounding box), inner sep=1cm]{};}
\lipsum[1]
\end{document}
附录:
您可以将其应用于全部 tikzpicture
every picture
在具有和 样式的文档中execute at end picture
,如下所示:
\documentclass{article}
\usepackage{lipsum,tikz}
\tikzset{
every picture/.style={
execute at end picture={
\path (current bounding box.south west) +(-1,-1) (current bounding box.north east) +(1,1);
}
}
}
\begin{document}
\lipsum*[1]
\tikz{\draw (0,0) rectangle (1,1); \draw (2,0) rectangle (3,1);}
\lipsum*[1]
\tikz{\draw (0,0) rectangle (1,1); \draw (2,0) rectangle (3,1);}
\lipsum[1]
\end{document}
答案2
作为改变的替代方法current bounding box
,您可以使用backgrounds
库并修复background
整个矩形tikzpicture
。
选项inner frame sep
在图片周围添加一些填充,并且选项framed
(或show background rectangle
)绘制图片边框,这也无法用绘制background rectangle/.style={draw=none}
。
\documentclass{article}
\usepackage{lipsum,tikz}
\usetikzlibrary{backgrounds}
\begin{document}
\lipsum[1-1][1-2]
\tikz[background rectangle/.style={draw=none},
inner frame sep=5mm,
framed
]{ \draw (0,0) rectangle (1,1); \draw (2,0) rectangle (3,1);}
\lipsum[1-1][3-4]
\end{document}