將 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