当将 tikzpicture 导出为其自己的 pdf 文件以供发布时,我希望能够指定导出的 pdf 文件的确切大小和分辨率。具体来说是 8.5 厘米宽和 600 dpi 的图像。
梅威瑟:
\documentclass[12pt]{standalone}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows.meta,external}
\tikzexternalize
\begin{document}
\resizebox{8.5cm}{!}{
\begin{tikzpicture}
%some drawing here
\end{tikzpicture}
}
\end{document}
然后用来pdflatex -shell-escape TikzFigure.pdf
创建图形。
答案1
解决
TikZ 本质上是一个矢量图形系统,生成的 PDF 文件保留了这一属性。当然,位图图像可以包含在 TikZ 图形中并使用。但 TeX 不是一个具有图像处理功能的程序。它只能包含位图图像并可以进行一些转换(例如缩放、旋转)。但它不能更改图像数据。因此,图像分辨率无法更改。
缩放至最终宽度
下面将深入介绍如何pgf
在排版之前访问图片框。在 的开头\pgfsys@typesetpicturebox
,图片框的\pgfpic
大小为零,图片的原点是框的参考点。图片的尺寸由其他寄存器\pgf@picminx
、\pgfpicminy
、 ... 提供,它们可用于计算实际的 和比例因子。然后根据比例因子调整框的大小,并根据比例因子更新寄存器。
例子:
\documentclass[12pt]{standalone}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,arrows.meta,external}
\usepackage{etoolbox}
\tikzexternalize
\makeatletter
\newcommand*{\set@picwidth}[1]{%
\edef\RequestedPicWidth{\the\dimexpr(#1)}%
\edef\ActualPicWidth{\the\dimexpr\pgf@picmaxx-\pgf@picminx}%
\ifx\RequestedPicWidth\ActualPicWidth
\else
\ifdim\ActualPicWidth>\z@
\pgfmathsetmacro\ScaleFactor{\RequestedPicWidth/\ActualPicWidth}%
\typeout{* Scale factor: \ScaleFactor}%
\setbox\pgfpic=\hbox{%
\scalebox{\ScaleFactor}{\box\pgfpic}%
}%
\pgf@picminx=\ScaleFactor\pgf@picminx
\pgf@picmaxx=\ScaleFactor\pgf@picmaxx
\pgf@picminy=\ScaleFactor\pgf@picminy
\pgf@picmaxy=\ScaleFactor\pgf@picmaxy
\pgf@shift@baseline=\ScaleFactor\pgf@shift@baseline
\pgf@trimleft@final=\ScaleFactor\pgf@trimleft@final
\pgf@trimright@final=\ScaleFactor\pgf@trimright@final
\else
\errmessage{The actual picture width (\ActualPicWidth) is not positive.}%
\fi
\fi
}
\newenvironment{picwidth}[1]{%
\pretocmd\pgfsys@typesetpicturebox{\set@picwidth{#1}}{}{%
\errmessage{Patching \noexpand\pgfsys@typesetpicturebox failed!}%
}%
\ignorespaces
}{%
\ignorespacesafterend
}
\makeatother
\begin{document}
\begin{picwidth}{8.5cm}
\begin{tikzpicture}
\draw (0, 0) circle[radius=1] node{Hello};
\end{tikzpicture}%
\end{picwidth}
\end{document}
该.log
文件包含计算的比例因子:4.22034