其他 tikz 中的 Tikz 产生空输出

其他 tikz 中的 Tikz 产生空输出

我的目的是制作一个部分不透明的图像。

我为了实现目标所采用的想法:

文件A

  • 创建一个 tikz 图像[这是一个复杂的部分]。

文件 B

  • 使用范围 + 不透明度包含文件 A\import
  • 创建一个复合体\path[clip]并将文件 A 包含在此范围内(带剪辑)。

\includestandalone使用inside 的结果\node有效(见下图)。但是,将结果导入第三个文件时,出现了缩放问题,即文件 B 的剪切部分没有按预期缩放。(也许,这是我的真正问题)。

在 \node 中使用 \includestandalone 的预期输出

因此,我已删除\node+\includestandalone并备份以使用\import,我已经在文件 C 中使用它来包含文件 A(并且它可以正常工作)。

不幸的是,现在它只会创造

文件 B 中的输出为空。

调试注意事项1:文件B\import在环境中执行文件A \tikzpicture,而文件C以普通方式执行文件A。

调试注意事项 2:\draw虽然没有绘制矩形,但添加 1-2 页长的矩形描绘了文件 A。

由于 MWE [即将简单绘图推送到文件 A] 可以按预期工作,我认为问题出在我的实际代码中,以及我在文件 A 中使用了较大但缩小的图像这一事实。

文件A代码:

\documentclass[tikz]{standalone}

\usepackage{graphicx}

\graphicspath{{./images/}}

\pgfmathsetmacro{\distance}{0}
\newcommand\righttrees{-35, -33, -30, -29, -26, -22, -21, -19, -18, -17, -16, -15, -14, -11, -9, -7, -5, -3, -2, 1, 3, 4, 5}
\newcommand\lefttrees{-35, -32, -31, -30, -26, -22, -21, -20, -16, -15, -13, -11, -8, -7, -4, -3, -1, 1, 5, 6}
\newcommand\GreenCars{1/0, 1/1}
\newcommand\RedCars{0/1, 2/1}

\begin{document}
    \begin{tikzpicture}[transform shape,rotate=-90, scale = 2]
        \pgfmathsetmacro{\m}{4}
        \pgfmathsetmacro{\length}{9}
        \pgfmathsetmacro{\hugelength}{250}
        \pgfmathsetmacro{\slotlength}{1.5}
        \pgfmathsetmacro{\carscalefactor}{0.03}
        \pgfmathsetmacro{\treecalefactor}{0.01}
        
        
        \fill[black!20] (0, 0) rectangle (\length, \m);
        \foreach \y in {0, \m}
        {
            \draw[line width = 0.5mm, yellow!90] (0,\y) -- (\length, \y);
        }
        
        % the on-road marks move, clip most of it
        \begin{scope}[xshift=\distance cm]
            \clip (-\distance, -1) rectangle (\length-\distance, \m + 1);
            \foreach \y in {2, 3, ..., \m}
            {
                \draw[line width = 0.3mm, dash pattern=on 9pt off 27pt, white] (-\hugelength,\y - 1) -- (\length, \y - 1);
            }
        \end{scope}
            
        \begin{scope}% removed offset requirements: outer code should handle trees moving
            % just make sure there are no artefacts outside the frame
            \clip (0, -1) rectangle (\length, \m + 1);
            % tree outside the rightmost lane
            \foreach \xtree in \righttrees
            {
                \node at (\xtree, \m + 0.5) {\includegraphics[scale=\treecalefactor]{39-fir-tree-png-image}};
            }
            % tree outside the leftmost lane
            \foreach \xtree in \lefttrees
            {
                \node at (\xtree, -0.5) {\includegraphics[scale=\treecalefactor]{39-fir-tree-png-image}};
            }
        \end{scope}
        
        \begin{scope}[shift={(0.9, 0.5)}]
            \foreach \x/\y in \GreenCars% in { (1 * \slotlength, 0), (1 * \slotlength, 1)}
            {
                \node at (\x * \slotlength, \y) {\scalebox{-1}{\includegraphics[scale=\carscalefactor]{GreenCarTopView}}};
            }
            \foreach \x/\y in \RedCars% in { (0 * \slotlength, 1), (2 * \slotlength, 1)}
            {
                \node at (\x * \slotlength, \y) {\scalebox{-1}{\includegraphics[scale=\carscalefactor]{RedCarTopView}}};
            }
        \end{scope}
    \end{tikzpicture}
\end{document}

文件 B(大部分代码已被注释掉)

\documentclass[tikz]{standalone}

%\usepackage{tikz}
\usepackage{standalone}
\usepackage{import}
\usepackage{graphicx}
%\usetikzlibrary{backgrounds}

%\usetikzlibrary{patterns}
%\usepackage{pgfplots}
%\pgfplotsset{compat=1.17}
%
%\tikzset{
%   hatch distance/.store in=\hatchdistance,
%   hatch distance=10pt,
%   hatch thickness/.store in=\hatchthickness,
%   hatch thickness=2pt
%}
%
%\makeatletter
%\pgfdeclarepatternformonly[\hatchdistance,\hatchthickness]{flexible hatch}
%{\pgfqpoint{0pt}{0pt}}
%{\pgfqpoint{\hatchdistance}{\hatchdistance}}
%{\pgfpoint{\hatchdistance-1pt}{\hatchdistance-1pt}}%
%{
%   \pgfsetcolor{\tikz@pattern@color}
%   \pgfsetlinewidth{\hatchthickness}
%   \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
%   \pgfpathlineto{\pgfqpoint{\hatchdistance}{\hatchdistance}}
%   \pgfusepath{stroke}
%}
%\makeatother

\graphicspath{{./images/}}

\newcommand\righttrees{}
\newcommand\lefttrees{}
\newcommand\GreenCars{}
\newcommand\RedCars{}

\begin{document}
    \centering
    \begin{tikzpicture}%[show background rectangle]
        \renewcommand\lefttrees{1.60,8.20,9.20,10.20,13.20}
        \renewcommand\righttrees{5.60,9.20,10.20}
        \renewcommand\GreenCars{3.00/0.00,5.00/0.00,1.00/2.00,2.00/2.00,4.00/3.00}
        \renewcommand\RedCars{0.00/0.00,1.00/0.00,2.00/0.00,4.00/0.00,0.00/1.00,1.00/1.00,3.00/1.00,4.00/1.00,4.00/2.00,1.00/3.00,3.00/3.00,5.00/2.00}
        \pgfmathsetmacro{\distance}{8.2}
        
        %\begin{scope}%[opacity=0.5]
            \import{./}{Frame.Moving.Cars}
            %\input{./Frame.Moving.Cars}
        %\draw[fill=green, opacity=0.3] (0,-10) rectangle (12, 25);
        %\end{scope}
        
        %\begin{scope}
        %   \pgfmathsetmacro{\basicunit}{1}
        %   \pgfmathsetmacro{\corneroffset}{0.1}
        %   \pgfmathsetmacro{\xslide}{2 * \basicunit - 2 * \corneroffset}
        %   \pgfmathsetmacro{\yslide}{3 * \basicunit - 2 * \corneroffset}
        %   \path[clip] (2-2*\basicunit, 2-7 * \basicunit) --
        %       ++ (0, -\basicunit + \corneroffset) --
        %       ++ (0, 0) arc (180:270:\corneroffset) --
        %       ++ (\xslide, 0) --
        %       ++ (0,0) arc (90:0:\corneroffset) --
        %       ++ (0, -\yslide) --
        %       ++ (0, 0) arc (180:270:\corneroffset) --
        %       ++ (\xslide, 0) --
        %       ++ (0, 0) arc (270:360:\corneroffset) --
        %       ++ (0, \yslide) --
        %       ++ (0,0) arc (180:90:\corneroffset) --
        %       ++ (\xslide, 0) --
        %       ++ (0, 0) arc (270:360:\corneroffset) --
        %       ++ (0, \yslide) --
        %       ++ (0,0) arc (0:90:\corneroffset) --
        %       ++ (-\xslide, 0) --
        %       ++ (0, 0) arc (270:180:\corneroffset) --
        %       ++ (0, \yslide) --
        %       ++ (0,0) arc (0:90:\corneroffset) --
        %       ++ (-\xslide, 0) --
        %       ++ (0, 0) arc (90:180:\corneroffset) --
        %       ++ (0, -\yslide) --
        %       ++ (0,0) arc (0:-90:\corneroffset) --
        %       ++ (-\xslide, 0) --
        %       ++ (0, 0) arc (90:180:\corneroffset) --
        %       cycle
        %       ;
        %   \import{.}{Frame.Moving.Cars}
        %   \draw[pattern=flexible hatch, hatch distance=10pt, hatch thickness=1pt] 
        %       (4*\basicunit,-6*\basicunit) rectangle +(2 * \basicunit, 3 * \basicunit);
        %\end{scope}
    \end{tikzpicture}
\end{document}

树 PNG我使用并保存在图片目录中(1924 x 1768)。汽车来自汽车图标(960 x 476)。

不能确定以上是否是我手头上的文件的原始链接。

所以我的问题是我应该修复什么?

然而,我真正的问题可能是如何利用所包含的内容tikzpicture

相关内容