我想在 LaTeX 中构建一个 E/R 图,其中应该有菱形表示关系,正方形表示实体集。我不想在 LaTeX 中导入图形,即在其他图像绘制软件中绘制图形后再导入,而是想在 LaTeX 中执行此操作。有人可以给我推荐一些好的阅读链接吗?
答案1
您可以使用 TikZ 轻松完成此操作。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\colorlet{relation@colour}[rgb]{blue}
\colorlet{entity@colour}[rgb]{red}
\tikzset{relation/.style={%
shape=diamond,draw=relation@colour!50!gray,
ultra thick,fill=relation@colour!25!white,
minimum height=2em},
entity/.style={%
shape=rectangle,draw=entity@colour!50!gray,
ultra thick,fill=entity@colour!25!white,
minimum height=2em}}
\begin{document}
\begin{tikzpicture}
\draw (0,0) node(tikz) [entity] {TikZ}
(tikz.east) + (1,0)
node(draws)[relation,anchor=west] {draws}
(draws.east) + (1,0)
node(er diagrams)[entity,anchor=west] {\textsc{er} diagrams}
(tikz) -- (draws)
(draws) -- (er diagrams);
\end{tikzpicture}
\end{document}
用户定义的 ER 图 http://csweb.ucc.ie/~dongen/TeX-SX/er.png。
其实 TikZ 也提供了一个er
库,下面就来介绍一下如何使用。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{er}
\begin{document}
\begin{tikzpicture}
\draw (0,0) node(tikz) [entity] {TikZ}
(tikz.east) + (1,0)
node(draws)[relationship,anchor=west] {draws}
(draws.east) + (1,0)
node(er diagrams)[entity,anchor=west] {\textsc{er} diagrams}
(tikz) -- (draws)
(draws) -- (er diagrams);
\end{tikzpicture}
\end{document}
答案2
一个简单的例子,用xelatex
或运行它latex->dvips->ps2pdf
\documentclass{article}
\usepackage{pst-node,pst-dbicons}
\begin{document}
\seticonparams{entity}{shadow,fillcolor=red!30,fillstyle=solid}
\seticonparams{relationship}{shadow,fillcolor=blue!20,fillstyle=solid}
\entity{Country} \hspace*{6cm} \entity{City}
\relationshipbetween{Country}[0:n]{City}[1:1]{in}/\ncarc[arcangle=20]/(0.4)
\relationshipbetween{Country}[1:1]/\ncarc[arcangle=-18]/%
{City}[0:1]/\ncarc[arcangle=-12]/{Capital}/\ncarc[arcangle=-30]/(0.6)
\end{document}