Re: tikz creare macro

#79362
Up
0
Down
::


Ciao Claudio, ho provato a fare questo
`\documentclass[a4paper,10pt,twocolumn]{IEEEtran}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COMANDI VARI PER LE IMMAGINI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{xparse}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}

\newcommand{\bigpicsize}[1]{\footnotesize{#1}}
\newcommand{\picsize}[1]{\scriptsize{#1}}
\newcommand{\picsizett}[1]{\scriptsize{\texttt{#1}}}
\newcommand{\smallpicsize}[1]{\tiny{#1}}

\pgfmathtruncatemacro{\classwidth}{3}
\pgfmathtruncatemacro{\classheight}{2}
\newcommand{\setclasswidth}[1]{\pgfmathtruncatemacro{\classwidth}{#1}}
\newcommand{\setclassheight}[1]{\pgfmathtruncatemacro{\classheight}{#1}}

\tikzset{class/.style args={#1 and #2}{
rectangle,draw,rounded corners,thick,minimum width=#1, minimum height=#2
}
}

\tikzset{classinside/.code n args={3}{%
\node at ($(#1.north)+(0,-0.30)$){\picsizett{#2}};
\draw($(#1.north west)+(0,-0.60)$)–($(#1.north east)+(0,-0.60)$);
\node[yshift=-\classheight,text width=\classwidth cm,align=center] at (#1){#3};
}
}

% DRAWCLASS
% #1 – Coordinate
% #2 – Label
% #3 – Nome Classe
% #4 – Contenuto
\NewDocumentCommand{\drawclass}{d() m m m}{
\IfNoValueTF{#1}{%true
\node[class=\classwidth cm and \classheight cm,name=#2]{};
}
{%false
\node[class=\classwidth cm and \classheight cm,name=#2]at(#1){};
}
\node[classinside={#2}{#3}{#4}]{};
}

\newcommand{\classmark}[1]{%
\tikz[overlay,remember picture,baseline=-0.5ex,xshift=-0.3cm] \node[draw,fill=black,circle,scale=0.05] (#1) {};
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\begin{figure*}[tb]
\centering
% \begin{tikzpicture}[scale=0.8,remember picture,overlay]
\begin{tikzpicture}[scale=0.8]

% \draw[help lines,yshift=-15cm] (0,0) grid (18,15);

% SYSTEMC
\node

at (18,0.25) {\bigpicsize{SystemC design}};
\draw [dashed] (2,0) rectangle (18,-3);

\drawclass(5,-1.5){m1}{sc\_module}{\vdots \\ \classmark{m1init} \picsizett{ps\_init()}}

\drawclass(10,-1.5){m2}{sc\_module}{\vdots \\ \classmark{m2init} \picsizett{ps\_init()}}

\drawclass(15,-1.5){m3}{sc\_module}{\vdots \\ \classmark{m3init} \picsizett{ps\_init()}}

\draw(m1init.center) — ($(m1init)-(0,1)$)-|(m2init.center) — ($(m2init)-(0,1)$)-|(m3init.center);
% \draw(m1init.center) — ($(m1init)-(0,1)$)-|(m2init.center);
\end{tikzpicture}
\caption{Scheme of the interaction of Powersim with a SystemC design.}
\label{fig:powersim}
\end{figure*}

\end{document}`
ma succedono cose strane:
1) se commento le help lines le tre righe di congiunzione dei classmark vengono spostate in altre parti della pagina.
2) se metto `\begin{tikzpicture}[scale=0.8,remember picture,overlay]` il disegno va per buona parte fuori della pagina.
3) se metto le help line (ma ovviamente dopo non ci vanno) e provo a disegnare solo una parte delle linee di collegamento (come ad esempio la riga commentata) anche qui questa viene messa in altre parti della pagina.

cosa sta succedendo???

grazie
Marco

Go to top