출판을 위해 tikzpicture를 자체 pdf 파일로 내보낼 때 내보낸 pdf 파일의 정확한 크기와 해상도를 지정할 수 있기를 원합니다. 특히 너비 8.5cm 및 600dpi 이미지입니다.
MWE:
\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
크기는 0이고 그림의 원점은 상자의 참조점입니다. 그림의 크기는 다른 레지스터에 의해 제공됩니다 \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가 포함되어 있습니다.