左下角的箭头尾部未正确裁剪。
\documentclass[tikz,border=0pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3,line width=3pt]
\draw[red] (0,0) grid (1,1);
\draw[blue,|->] (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
在不改变border
选项的情况下,如何使用standalone
或preview
包进行更智能的裁剪?
答案1
正如 Martin Scharrer 指出的那样,preview
或者standalone
类将 Tikz 图片视为黑框,其大小由 TikZ 边界框报告。因此,只有 TikZ 内部才能计算正确的框。
但是,箭头和线连接伪影不会影响边界框计算,而且我不知道如何快速修复此问题。示例:
\documentclass[tikz,border=0pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3,line width=3pt]
\draw[red] (0,0) grid (1,1);
\draw[blue,|->] (0,0) -- (1,1);
\draw[line join=miter] (1,1) -- (0,0.5) -- (1,0);
\end{tikzpicture}
\end{document}
您可以手动更改边界框以包含缺失的细节,例如
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=3,line width=3pt]
\draw[red] (0,0) grid (1,1);
\draw[blue,|->] (0,0) -- (1,1);
\draw[line join=miter] (1,1) -- (0,0.5) -- (1,0);
\useasboundingbox ([shift={(-0.5\pgflinewidth,-0.5\pgflinewidth)}]current
bounding box.south west) -- (current bounding box.north east);
\end{tikzpicture}
\end{document}
请注意,每个自定义图片的移位量都应更改,我只是在这里使用了快捷方式。
答案2
不要使用 documentclass standalone
。创建一个默认pdf
输出,然后pdfcrop
在该文件上运行。创建的<file>-crop.pdf
具有正确的边界框。该示例需要pdflatex -shell-escape <file>
运行两次:
\documentclass{minimal}
\usepackage{graphicx,tikz}
\pagestyle{empty}
\begin{document}
\IfFileExists{\jobname-crop.pdf}
{\typeout{Delete \jobname-crop.pdf}%
\immediate\write18{rm -f \jobname-crop.pdf}}
{\IfFileExists{\jobname.pdf}
{\immediate\write18{pdfcrop \jobname}}
{\typeout{we need one more pdflatex run with option -shell-escape!}}
}
\IfFileExists{\jobname-crop.pdf}
{\frame{\includegraphics{\jobname-crop.pdf}}}
{%
\begin{tikzpicture}[scale=3,line width=3pt]
\draw[red] (0,0) grid (1,1);
\draw[blue,|->] (0,0) -- (1,1);
\end{tikzpicture}%
}
\end{document}
答案3
直到 Tantau 解释道只需包含arrows.meta
库即可解决问题。边界框会调整以包含箭头尖端和尾部。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[scale=3,line width=3pt]
\draw[red] (0,0) grid (1,1);
\draw[blue,|->] (0,0) -- (1,1);
\draw[line join=miter] (1,1) -- (0,0.5) -- (1,0);
\end{tikzpicture}
\end{document}
答案4
TikZ CVS 的最新更新现在支持将箭头纳入边界框。因此,现在可以独立智能裁剪 TikZ 图片。
根据功能请求,尚未记录但可用。