Newsgroup: it.comp.software.tex
Titolo: tikz & underline

Ciao,
non riesco a capire come far funzionare il pezzo di codice riportato
sotto. Sto cercando di disegnare una tabella di un database (non il
modello ER) e vorrei che la prima colonna, che indica la chiave
primaria, avesse il testo sottolineato. Per far questo, l'idea è di
usare il pacchetto ulem all'interno di un \tikzstyle, come fatto per
lo stile "nullable" definito poco sopra. Tuttavia, non ci riesco. La
linea "incriminata" è evidenziata
Aggiungo che essendo un nevellino di pgf/tikz, probabilmente c'è un
modo più semplice di scrivere questo codice, per cui suggerimenti sono
ben accetti :-)
Come problema aggiuntivo, compilando anche la frase iniziale con la
\ref, non mi appare, nel testo, la referenza corretta (in questo non
mi appare nulla, nel testo "vero" appare figura 2, mentre è la 1...).
Anche cambiando ambiente da figure a table o spostando la label non
cambia nulla. Sembra che prenda il numero della sezione invece che
della tabella, ma non ricevo messaggi di errore...
Ogni consiglio/aiuto/suggerimento, come sempre, è ben accetto!
Ciao,
Stefano
\documentclass{article}
\usepackage{tikz}
\usepackage[normalem]{ulem}
\usetikzlibrary
{shapes,calc,arrows,decorations.pathmorphing,backgrounds}
\begin{document}
%In figura~\ref{{fig:abook} \ldots
\begin{figure}[htb]
  \centering
  \label{fig:abook}
  \begin{tikzpicture}[scale=0.80, transform shape,node
    distance=18mm]
    \tikzstyle{attribute}=[font=\sffamily,rectangle,minimum
    width=18mm,minimum height=8mm,thin, draw=black!50]% style for
                                % attributes
    \tikzstyle{nullable}=[attribute,font=\scshape]%
    % questa linea non funziona come vorrei:
    %\tikzstyle{pk}=[attribute,font=\uline]%
    % attributes
    %\node[pk] (uri) at (0,0) {URI};% PK
    \node[attribute] (uri) at (0,0) {\uline{URI}};% PK
    \node[attribute] (name) [right of=uri] {Name};%
    \node[nullable] (spouse)[right of=name] {Spouse};%
    % functional dependencies
  \end{tikzpicture}
\end{figure}
\end{document}

 Ogni consiglio/aiuto/suggerimento, come sempre, � ben accetto!
\newcommand{\myuline}[1]{\vphantom{#1}\smash{\uline{#1}}}
...
\node[attribute] (uri) at (0,0) {\myuline{URI}};
...
Per il riferimento sbagliato il problema � il solito: \label
va /dopo/ \caption.
Ciao
Enrico

 va /dopo/ \caption.
@#$&% Lo sapevo che era un'inezia del genere...
Grazie Enrico, se non ci fossi tu... :)
Stefano

 \node[pk] (uri) at (0,0) {URI};
Occorrerebbe sapere come \node recupera il suo ultimo argomento;
per sottolineare il nome del nodo, devi gi� conoscerlo, non si pu�
dire "sottolinea da qui in poi fino alla fine del gruppo" come
si pu� ordinare "scrivi in corsivo da qui in poi fino alla fine
del gruppo".
Accontentati. Oppure cerca se nel corposo manuale � indicata
qualche parola chiave che permetta di agire su tutto il contenuto
dell'etichetta come se fosse un argomento.
Ciao
Enrico

 dell'etichetta come se fosse un argomento.
Ho cercato ieri in tutto il manuale di pgf e su 
texample.net
, ma non
ho trovato niente di utile. Proverò magari domani per vedere se ho
perso per strada qualche indicazione.
Ciao e grazie ancora!
Stefano

Ciao,
alla fine ho trovato una soluzione, diversa da quella che avevo
immaginato, ma comunque funzionale e chiara.
La posto qui, nel caso qualcuno la trovi utile e/o ne abbia bisogno
prima o poi. Credits a Enrico Gregorio per le macro.
Ho definito questi stili e macro nel preambolo:
\usepackage[normalem]{ulem}
\usepackage{tikz,tikz-er2}
%%%%%
%%%%% settings for tikz
%%%%%
\tikzstyle{attr}=[font=\sffamily,rectangle,minimum width=20mm,minimum
height=8mm,thin, draw=black!50]% style for attributes
\tikzstyle{nullable}=[attribute,font=\scshape]% nullable values
\tikzstyle{fk}=[-stealth,black!50]% style for foreign key
\tikzstyle{fd}=[-latex,thin,dashed]% style for FDs' arrows
\tikzstyle{incl}=[-latex,densely dotted]% inclusion dependencies
\newcommand{\pkey}[1]{\vphantom{#1}\smash{\uline{#1}}}% primary keys -
% underlined - within a node.
\newcommand{\ckey}[1]{\vphantom{#1}\smash{\discriminator{#1}}}%
% candidate keys - dashed underline - within a node.
In questo modo posso definire i singoli nodi, all'interno di una
\tikzpicture, così:
\node[attr] (uri) at (0,0) {\pkey{URI}};%
\node[attr] (name) [right of=uri] {\ckey{Name}};%
\node[nullable] (spouse)[right of=name] {Spouse};%
ecc ecc.
HTH,
Stefano