完整代码详细信息

完整代码详细信息

在学习如何创建更高质量的图表时,我遇到了这个tikz软件包,特别是这个示例教程网页(www.texample.net/tikz/examples/class-diagram/)。

我逐字逐句地采用了那里提供的脚本,并且能够编译它来制作如链接中所示的图表。

然而,随后我尝试将该图表嵌入到我的主文档中\input,却无法使其工作。


完整代码详细信息

父文件(尝试嵌入RDB_diagram_shell.tex文件):

% Load necessary packages

\documentclass[pdf]{beamer}

\usetheme{Berkeley} % I like this theme better
\usecolortheme{wolverine} % This gives the orange colorscheme
\usepackage{standalone} % I was trying to use this package to embed diagram files within here.
\usetikzlibrary{positioning,shapes,shadows,arrows}
%

%%%%%%%%%%%%%%%%%%%%%%%%
% Title Slide
\title{Blah}
\author{Mike Williamson}

\begin{document}
%%%
\begin{frame}
\frametitle{RDB Tables Example}

\input{RDB_diagram_shell}
\end{frame}

\end{document}

RDB_diagram_shell.tex

% DB Layout diagram

\begin{tikzpicture}[node distance=2cm]
%\coordinate (origin) at (50,50);

\node (Order) [facttable, rectangle split, rectangle split parts=2] {
    \textbf{ORDER}
    \nodepart{second}
        order\_num (PK) \\
        customer\_ID (FK) \\
        store\_ID (FK) \\
        clerk\_ID (FK) \\
        date        
};
\node (AuxNodeTop) [text width=0.5cm, above=of Order, shift={(0,-1.5cm)}] {};
\node (Store) [dimtable, rectangle split, rectangle split parts=2, left=of AuxNodeTop] {
    \textbf{STORE}
    \nodepart{second}
        store\_ID (PK) \\
        store\_name \\
        address \\
        district \\
        floor\_type 
};

\node (Clerk) [dimtable, rectangle split, rectangle split parts=2, right=of AuxNodeTop] {
    \textbf{CLERK}
    \nodepart{second}
        clerk\_ID (PK) \\
        clerk\_name \\
        clerk\_grade
};

\node (Customer) [dimtable, rectangle split, rectangle split parts=2, below=of Order, shift={(0,1cm)}] {
    \textbf{CUSTOMER}
    \nodepart{second}
        customer\_ID (PK) \\
        customer\_name \\
        purchase\_profile \\
        credit\_profile \\
        address
};

\draw[rightarrow] (Store.south) -- ++(-0.5, 0) -| (Order.west);
\draw[leftarrow] (Clerk.south) -- ++(0.5, 0) -| (Order.east);
\draw[uparrow] (Customer.north) -| (Order.south);

\end{tikzpicture}

这就是两个脚本的全部内容。

错误

我收到以下错误:

...DB_diagram.tex:20: Package pgfkeys Error: I do not know the key '/tikz/rectangle split' and I am going to ignore it. Perhaps you mis-spelled it.

这似乎表明我不能用空格字符分隔单词rectanglesplit。(注意:这些关键词仅存在在嵌入的文件中,单独编译时可以很好地编译。)但是,为什么当我单独制作文件而不是嵌入它时它会起作用呢?


再次重申:

  • 能够当我单独编译图表时,我编译了图表。但我无法当它嵌入到一个小的 shell 文件中时对其进行编译。
    • 这是为什么?我做错了什么?

编辑

下面的一些评论者想看看实际的文件。上面给出了两个 Tex 文件,所以我猜想评论者想从我可以编译的较小的 Tex 文件中查看渲染的文件。它在这里:

渲染的 RBD 图表 Shell 文件

答案1

您的文档示例存在更多问题:

  • 来自“独立”文件的包standalone包含您的图像,删除其前言,\begin{document}\end{document}仅将图像代码导入主文档。因此,独立文件中的所有包和定义对于主文档都是不可见的。
  • 如果tikzpicture包含一些附加在方括号中的选项,则主文档中的框架必须具有选项[fragile]
  • 为了解决您的问题,您需要将“独立”文件的完整前言添加到主文件中。到目前为止,似乎您只添加了其前言的一部分,因此缺少的包和样式定义会导致报告错误。
  • 由于我们不知道您在“独立”文件中使用的样式,我重建了自己的样式(尝试使用我的样式,它们似乎更短且更一致)并将其嵌入到tikz图片中:

    \documentclass{beamer}
    \usetheme{Berkeley}       % I like this theme better
    \usecolortheme{wolverine} % This gives the orange colorscheme
    \usepackage{standalone}   % I was trying to use this package to embed diagram files within here.
    \usepackage{tikz}
    \usetikzlibrary{arrows.meta,      % <----
                    positioning,
                    shadows, 
                    shapes.multipart}  % <----
    
    \begin{document}
    %%%%
    \begin{frame}[fragile]          % <----
    \frametitle{RDB Tables Example}
    
    % for simplify tests i include the content of the "standalone" file here
        \begin{tikzpicture}[        % <----
    node distance = 5mm and 3mm,
       MPN/.style args = {#1/#2}{% Multi Part Node            % <----
                     rectangle split, rectangle split parts=2,
                     draw, rounded corners,
                     fill=#1,
                     text=#2, font=\footnotesize\linespread{0.9}\selectfont,
                     text width=28mm, align=center, 
                     drop shadow},
       MPN/.default = blue!50/white,                          % <----
       arr/.style = {semithick, -{Triangle[open]}}            % <----
                            ]
    \node (Order) [MPN=green!30/black] {                      % <----
        \textbf{ORDER}
        \nodepart{second}
            order\_num (PK) \\
            customer\_ID (FK) \\
            store\_ID (FK) \\
            clerk\_ID (FK) \\
            date
                        };
    \node (Store) [MPN, above left=of Order.west] {           % <---- 
        \textbf{STORE}
        \nodepart{two}
            store\_ID (PK) \\
            store\_name \\
            address \\
            district \\
            floor\_type
                        };
    \node (Clerk) [MPN, above right=of Order.east] {          % <----
        \textbf{CLERK}
        \nodepart{two}
            clerk\_ID (PK) \\
            clerk\_name \\
            clerk\_grade
                        };
    \node (Customer) [MPN, below=of Order] {                  % <----
        \textbf{CUSTOMER}
        \nodepart{two}
            customer\_ID (PK) \\
            customer\_name \\
            purchase\_profile \\
            credit\_profile \\
            address
                        };
    \draw[arr] (Store) |- (Order);     % <----
    \draw[arr] (Clerk) |- (Order);     % <----
    \draw[arr] (Customer) -- (Order);  % <----
        \end{tikzpicture}
    \end{frame}
    \end{document}
    

这使

在此处输入图片描述

你应该得到相同的结果

    \documentclass{beamer}
    \usetheme{Berkeley}       % I like this theme better
    \usecolortheme{wolverine} % This gives the orange colorscheme
    \usepackage{standalone}   % I was trying to use this package to embed diagram files within here.
    \usepackage{tikz}
    \usetikzlibrary{arrows.meta,
                    positioning,
                    shadows, shapes.multipart}

    \begin{document}
    \begin{frame}[fragile]
    \frametitle{RDB Tables Example}
    \input{RDB_diagram_shell}
    \end{frame}
    \end{document}

哪里RDB_diagram_shell

    \documentclass[tikz]{standalone}   % diagram "RDB_diagram_shell".
    \usetikzlibrary{arrows.meta,
                    positioning,
                    shadows, shapes.multipart}

    \begin{document}
    % code of `tikzpicture` as is written in complete mwe above
    \end{document}

相关内容