해결

해결

출판을 위해 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가 포함되어 있습니다.

관련 정보