- Questo topic ha 6 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 7 mesi fa da .
-
Topic
-
Mi sto esercitando con la macro [tt]\tikzmark[/tt] dopo averla scoperta grazie a cfiandra. Volevo provare a riprodurre questa figura: http://it.wikipedia.org/wiki/File:StressEnergyTensor_it.svg Una premessa: probabilmente sarebbe tutto più semplice usando la libreria [tt]matrix[/tt] (credo che non servirebbe neanche [tt]\tikzmark[/tt]; sarebbe tutto più facile anche se si potesse inserire un normale ambiente matematico in una [tt]tikzpicture[/tt]), ma mette le parentesi troppo lontane dagli elementi, rispetto alle matrici che si ottengono con l’ambiente [tt]pmatrix[/tt] c’è una differenza abissale. Questo è il codice che ho scritto (ho parzialmente modificato la macro [tt]\tikzmark[/tt] rispetto all’originale per adattarla alle mie necessità)
`\documentclass[fleqn]{article}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{lipsum,tikz}
\usetikzlibrary{calc}\newcommand{\tikzmark}[2]{
\tikz[baseline=-\the\dimexpr\fontdimen22\textfont2\relax,remember picture,overlay]\node (#1) {#2};
}\begin{document}
\lipsum[3]
\begin{figure}[h]
\begin{equation}
\begin{pmatrix}
\tikzmark{00}{$T_{00}$} & \tikzmark{01}{$T_{01}$} & \tikzmark{02}{$T_{02}$} & \tikzmark{03}{$T_{03}$} \\
\tikzmark{10}{$T_{10}$} & \tikzmark{11}{$T_{11}$} & T_{12} & \tikzmark{13}{$T_{13}$} \\
T_{20} & T_{21} & T_{22} & T_{23} \\
\tikzmark{30}{$T_{30}$} & \tikzmark{31}{$T_{31}$} & \tikzmark{32}{$T_{32}$} & \tikzmark{33}{$T_{33}$} \\
\end{pmatrix}
\end{equation}\begin{tikzpicture}[remember picture,overlay]
\draw ($(02.north)!.4!(02.center)$) — ++(0,20pt)
node[align=center,fill=white] {\small flusso di \\ energia};
\draw ($(00.north)!.4!(00.center)$) — ++(0,20pt)
node[align=center,fill=white] {\small densità di \\ energia};
\draw ($(30.south)!.4!(30.center)$) — ++(0,-20pt)
node[align=center,fill=white] {\small densità di \\ quantità \\ di moto};
\draw ($(33.east)!.4!(33.center)$) — ++(35pt,0)
node[align=center,fill=white] {\small pressione};
\draw ($(13.east)!.45!(13.center)$) — ++(35pt,0)
node[align=center,fill=white] {\small stress};
\draw ($(32.south)!.4!(32.center)$) — ++(0,-20pt)
node[align=center,fill=white] {\small flusso di \\ quantità \\ di moto};% evidenzio tensore degli sforzi e flusso di impulso
\draw
($(11.north west)!.4!(11.center)$) —
($(31.south west)!.4!(31.center)$) —
($(33.south east)!.4!(33.center)$) —
($(13.north east)!.4!(13.center)$) — cycle;% evidenzio pressione
\draw[fill,color=green,opacity=0.3]
($(11.north west)!.4!(11.center)$) —
($(11.north west)!.4!(11.center) – (0,9pt)$) —
($(33.south east)!.4!(33.center) – (9pt,0)$) —
($(33.south east)!.4!(33.center)$) —
($(33.south east)!.4!(33.center) + (0,8pt)$) —
($(11.north west)!.4!(11.center) + (8pt,0)$) — cycle;% evidenzio densità di energia
\draw
($(00.north west)!.4!(00.center)$) —
($(00.south west)!.4!(00.center)$) —
($(00.south east)!.4!(00.center)$) —
($(00.north east)!.4!(00.center)$) — cycle;% evidenzio densità di impulso
\draw
($(10.north west)!.4!(10.center)$) —
($(30.south west)!.4!(30.center)$) —
($(30.south east)!.4!(30.center)$) —
($(10.north east)!.4!(10.center)$) — cycle;% evidenzio flusso di energia
\draw
($(01.north west)!.4!(01.center)$) —
($(01.south west)!.4!(01.center)$) —
($(03.south east)!.4!(03.center)$) —
($(03.north east)!.4!(03.center)$) — cycle;
\end{tikzpicture}
\end{figure}
\lipsum[3]
\end{document}`Pur notando che [tt]\tikzmark[/tt] ha delle buone potenzialità, ho incontrato un paio di problemi:
1) prima di tutto alcuni elementi della matrice devono necessariamente essere inseriti nella maniera “classica” altrimenti la matrice viene completamente schiacciata come se non ci fosse alcun elemento. Per fortuna tutta la terza riga non serve per i riferimenti e ho potuto inserire normalmente gli elementi, senza usare [tt]\tikzmark[/tt], ma mi piacerebbe capire come realizzare una matrice i cui elementi sono solo macro [tt]\tikzmark[/tt].
2) le annotazioni si sovrappongono al resto del testo.
Ho l’impressione che i due problemi siano in un certo modo legati, si direbbe che i nodi creati con [tt]\tikzmark[/tt] siano “evanescenti”, nel senso che non occupano spazio. Ho aggiunto l’ambiente figure (che so non essere in realtà necessario in questi casi) proprio sperando che per magia si accorgesse della presenza delle annotazioni. Spesso probabilmente è molto utile avere i nodi “evanescenti”, ma in altre occasioni (come questa) decisamente no. C’è qualche modo per fornire a [tt]\tikzmark[/tt] “dimensionalità”?
- Devi essere connesso per rispondere a questo topic.