我正在尝试使用 pst-dbicons 包 (PSTricks) 创建 ER 图。但是,在尝试示例 tex 文件时,我在第 55 行收到错误:“未定义控制序列”。我将示例粘贴在此处:
\ifx\TeXMaster\undefined
%
\documentclass{article}
\usepackage{pstricks,pst-node,pst-coil,color,pst-dbicons}
\addtolength{\topmargin}{-2.5cm}
\special{landscape}
\textheight17cm
\textwidth28cm
\evensidemargin-1.2cm
\oddsidemargin-1.2cm
\newcommand{\Mondial}{\textsc{Mondial}}
\begin{document}
\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifblackwhite
%\blackwhitefalse
\blackwhitetrue
\ifblackwhite
\newgray{verylightgray}{0.95}
\seticonparams{entity}{shadow=true,fillcolor=lightgray,fillstyle=solid}
\seticonparams{attribute}{fillcolor=lightgray,fillstyle=solid}
\seticonparams{relationship}{shadow=true,fillcolor=lightgray,fillstyle=solid}
\else
\newrgbcolor{lightblue}{0.68 0.85 0.95}
\newrgbcolor{verylightblue}{0.34 0.42 0.5}
\newrgbcolor{lightgreen}{0.00 0.98 0.60}
\newrgbcolor{verylightgreen}{0.00 0.5 0.30}
\newrgbcolor{lightred}{1.00 0.71 0.76}
\newrgbcolor{verylightred}{0.50 0.351 0.38}
\seticonparams{entity}{shadow=true,fillcolor=lightred,fillstyle=solid}
\seticonparams{attribute}{fillcolor=lightblue,fillstyle=solid}
\seticonparams{relationship}{shadow=true,fillcolor=lightgreen,fillstyle=solid}
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifx\TeXMaster\undefined
\begin{center}
{\huge\bf ER-Diagram of the \Mondial\ Database}
\bigskip
\end{center}
\fi
\thispagestyle{empty}
\psset{nodesep=0pt}
\hspace*{2cm}
\begin{tabular}{ccc}
% lang/rel/ethn
\begin{tabular}{c}
\entity{Language} \\[12em]
\entity{EthnicGrp}[Ethnic Grp] \\[12em]
\entity{Religion}
\end{tabular}
\hspace{10em}
% cities/countries/provinces
\begin{tabular}{c@{\hspace{10em}}c}
&\entity[weak]{City} \\[2em]
\entity{Organization}\\[12em]
\entity{Country} \\[12em]
\entity{Continent}\\[2em]
&\entity[weak]{Province}
\end{tabular}
\hspace{10em}
% geo
\begin{tabular}{c}
\entity{Lake} \\[5em]
\entity{River} \\[5em]
\entity{Sea}\\[9em]
\entity{Mountain}\\[7em]
\entity{Island}\\[7em]
\entity{Desert}
\end{tabular}
\end{tabular}
\nodeconnections{\small
\relationshipbetween{Country}{City}{capital}[is\_capital]
\relationshipbetween{Province}{City}{capital}[is\_capital](0.4)
\relationshipbetween[ident]{Province}{City}{in}/\ncarc[arcangle=-30]/
\relationshipbetween[weak]{Province}{Country}{of}
%
\relationshipbetween{Country}{Organization}{ismember}[is\_member](0.6)
\relationshipbetween{Organization}{City}{has\_hq\_in}
%
\relationshipbetween{Country}{Continent}{encompasses}(0.8)
%
\relationshipbetween{Country}(A)
/\ncline[nodesepB=-1cm,offsetA=0.1em,offsetB=0.4cm]/
{Country}(B)
/\ncline[nodesepB=-1cm,offsetA=-0.1em,offsetB=-0.4cm]/
{borders}(7em,0)
%
\relationshipbetween{Province}{Lake}{in}
\relationshipbetween{Province}{River}{in}
\relationshipbetween{Province}{Sea}{in}
\relationshipbetween{Province}{Mountain}{in}
\relationshipbetween{Province}{Island}{in}
\relationshipbetween{Province}{Desert}{in}
%
\relationshipbetween{City}{Lake}{at}
\relationshipbetween{City}{River}{at}
\relationshipbetween{City}{Sea}{at}
%
\inrelationship{River}(main)/\ncarc[arcangle=30]/{flows into}
[flows into](4em,0)
\inrelationship{River}(trib.)/\ncarc[arcangle=-30]/{flowsinto}
\inrelationship{Lake}{flowsinto}
\inrelationship{Sea}{flowsinto}
%
\relationshipbetween{Sea}(A){Sea}(B){merges}(4em,270)
%
\relationshipbetween{EthnicGrp}{Country}{belong}(0.3)
\relationshipbetween{Religion}{Country}{believe}(0.3)
\relationshipbetween{Language}{Country}{speak}(0.4)
%
\attributeof{City}{90}[key]{name}
\attributeof{City}{45}{pop.}
\attributeof{City}{0}{longitude}
\attributeof{City}{-45}{latitude}
%
\attributeof{Organization}{70}[key]{abbrev}
\attributeof{Organization}{130}{name}
\attributeof{Organization}[4em]{1800}{establ.}
%
\attributeof{ismember}{40}{type}
%
\attributeof{borders}{60}{length}
%
\attributeof{Country}[3em]{30}{name}
\attributeof{Country}{70}[key]{code}
\attributeof{Country}{130}{pop.}
\attributeof{Country}[3em]{190}{area}
\attributeof{Country}{230}{gov.}
\attributeof{Country}{280}{infl.}
\attributeof{Country}[3em]{330}{gdp}
\attributeof{Country}[4em]{100}{pop.grw}
\attributeof{Country}[5em]{160}{inf.mort}
\attributeof{Country}[6.5em]{-30}{gdp.agr}
\attributeof{Country}[5.5em]{-50}{gdp.serv}
\attributeof{Country}[5em]{-80}{gdp.ind}
\attributeof{Country}[5em]{-120}{governm.}
%
\attributeof{Continent}{-60}[key]{name}
\attributeof{Continent}{-120}{area}
%
\attributeof{Language}{90}[key]{name}
\attributeof{speak}{60}{percent}
%
\attributeof{EthnicGrp}{90}[key]{name}
\attributeof{belong}{-90}{percent}
%
\attributeof{Religion}{90}[key]{name}
\attributeof{believe}{-90}{percent}
%
\attributeof{encompasses}[4em]{-160}{percent}
%
\attributeof{Province}[4em]{180}[key]{name}
\attributeof{Province}{225}{pop.}
\attributeof{Province}{270}{area}
%
\attributeof{Lake}{0}[key]{name}
\attributeof{Lake}{180}{area}
%
\attributeof{River}{90}[key]{name}
\attributeof{River}{180}{length}
%
\attributeof{Sea}{0}[key]{name}
\attributeof{Sea}{180}{depth}
%
\attributeof{Mountain}{135}[key]{name}
\attributeof{Mountain}{45}{height}
\attributeof{Mountain}{-90}{mtcoord}[geo coord]
\attributeof{mtcoord}[3em]{20}{longitude}
\attributeof{mtcoord}[3em]{-20}{latitude}
%
\attributeof{Island}{90}[key]{name}
\attributeof{Island}{40}{islands}
\attributeof{Island}{-90}{islcoord}[geo coord]
\attributeof{islcoord}[3em]{20}{longitude}
\attributeof{islcoord}[3em]{-20}{latitude}
%
\attributeof{Desert}{90}[key]{name}
\attributeof{Desert}{0}{area}
}
\ifx\TeXMaster\undefined
\end{document}
\fi
知道原因吗?
答案1
latex->dvips->ps2pdf
使用和运行示例不是 pdflatex
或使用
...
\usepackage{auto-pst-pdf}
...
...
\begin{postscript}
% lang/rel/ethn
\begin{tabular}{c}
...
\end{postscript}
\attributeof{Desert}{0}{area}
}
\end{postscript}
...
然后使用pdflatex --shell-escape