![TikZ ER 图:真的不能给键加下划线吗?](https://linux22.com/image/276266/TikZ%20ER%20%E5%9B%BE%EF%BC%9A%E7%9C%9F%E7%9A%84%E4%B8%8D%E8%83%BD%E7%BB%99%E9%94%AE%E5%8A%A0%E4%B8%8B%E5%88%92%E7%BA%BF%E5%90%97%EF%BC%9F.png)
我正在使用 TikZ ER 库创建 ER 图。手册警告说,尽管关键属性通常带有下划线,但在 TeX 中很难实现,因此库改用斜体。这对我来说没问题,但我的老师可能不会接受带有非标准符号的作业。
这就是为什么我向 TeX 向导社区寻求可行的解决方案 :) 可能相关的问题包括:
手册中的 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{er}
\begin{document}
\begin{tikzpicture}
\node[entity] (sheep) at (0,0) {Sheep}
child {node [key attribute] {name}};
\node[entity] (genome) at (2,0) {Genome};
\node[relationship] at (1,1.5) {has}
edge (sheep)
edge (genome);
\end{tikzpicture}
\end{document}
答案1
假设我正确理解了要求,那么可以使用execute at begin node
and '捕获' 框中的节点内容execute at end node
,然后对其执行某些操作。这仅适用于“简单”节点内容(即基本上只是文本)。
\documentclass[border=0.125cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{er}
\newbox\underlinebox
\tikzset{
key attribute/.append style={
font=\rmfamily,
execute at begin node={%
\setbox\underlinebox=\hbox\bgroup
},
execute at end node={%
\egroup\underline{\box\underlinebox}%
}
}
}
\begin{document}
\begin{tikzpicture}
\node[entity] (sheep) at (0,0) {Sheep}
child {node [key attribute] {name}};
\node[entity] (genome) at (2,0) {Genome};
\node[relationship] at (1,1.5) {has}
edge (sheep)
edge (genome);
\end{tikzpicture}
\end{document}