大型 TikZ 图片缩放至页面大小

大型 TikZ 图片缩放至页面大小

我需要绘制房屋平面图并使其适合页面。我非常希望有一组尺寸/坐标,这样我就可以相对轻松地将现实生活中的尺寸/坐标与 TeX 文件中的尺寸/坐标进行匹配(我过去尝试过一些不合理的缩放,即 TeX 文件中的一个尺寸与现实生活中的其他尺寸,但这并不值得)。

我注意到有一些关于缩放和 tikz 的讨论,我似乎无法让它工作。我试过了FG 的回答由此讨论但图纸没有缩放到页面中(我只是在 \makeatother 和 \begin{document} 之间添加了 \newpage,然后添加了我的代码以及我的 \newcommands)

你能帮我一下吗?感谢您的时间和支持!(我使用的是 Miktex 2.9.4248)

在此处输入图片描述 我的代码如下:

\newpage
\noindent real size thing
\begin{center}
  \begin{tikzpicture}[
    xscale=2,
    yscale=2,
    virtual/.style={thin,dashed}
    ]

    \squareNVSE{0.0}{0.0}
    \mySquareNVSE{1001.0}{0.0}{1000.0}{1000.0}
  \end{tikzpicture}
\end{center}

\newpage
\noindent scaled thing
\begin{center}
  \begin{scaletikzpicturetowidth}{\textwidth}
    \begin{tikzpicture}[
%      xscale=2,
%      yscale=2,
      virtual/.style={thin,dashed}
      ]
  
      \squareNVSE{0.0}{0.0}
      \mySquareNVSE{1001.0}{0.0}{1000.0}{1000.0}
    \end{tikzpicture}
  \end{scaletikzpicturetowidth}
\end{center}
\end{document}

我的新命令只是绘制 1x1 米的正方形:

\newcommand*\squareNVSE[2]{
  \draw [draw=gray, very thin]
      ( #1 mm,  #2 mm)
   -| ( #1 mm + 1000.00mm, #2 mm - 1000.00mm)
   -| ( #1 mm,  #2 mm);
}
\newcommand*\mySquareNVSE[4]{
  \draw [draw=gray, very thin]
      ( #1 mm,  #2 mm)                  % #1 & #2 = the coords of the starting point
   -| ( #1 mm + #3 mm, #2 mm - #4 mm)   % #3 & #4 = length and width
   -| ( #1 mm,  #2 mm);
}

答案1

看看回答你链接的看起来你缺少了scale=\tikzscale对环境的论据tikzpicture

\documentclass{article}
\usepackage{tikz}
\usepackage{environ}

\makeatletter
\newsavebox{\measure@tikzpicture}
\NewEnviron{scaletikzpicturetowidth}[1]{%
  \def\tikz@width{#1}%
  \def\tikzscale{1}\begin{lrbox}{\measure@tikzpicture}%
  \BODY
  \end{lrbox}%
  \pgfmathparse{#1/\wd\measure@tikzpicture}%
  \edef\tikzscale{\pgfmathresult}%
  \BODY
}
\makeatother

\begin{document}
\newpage
\noindent real size thing
\begin{center}
  \begin{tikzpicture}[
    xscale=2,
    yscale=2,
    virtual/.style={thin,dashed}
    ]
    \draw (0, 0) rectangle (50, 50);
  \end{tikzpicture}
\end{center}

\newpage
\noindent scaled thing
\begin{center}
   
  \begin{scaletikzpicturetowidth}{\textwidth}
     \begin{tikzpicture}[
        scale=\tikzscale  % This bit is what you are missing
      ]
        \draw (0, 0) rectangle (50, 50);
    \end{tikzpicture}
    \end{scaletikzpicturetowidth}
  
\end{center}
\end{document}

我擅自画了一些大方块来展示缩放效果

相关内容