- Questo topic ha 11 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 5 mesi fa da
OldClaudio.
-
CreatoreTopic
-
11 Marzo 2012 alle 8:24 #70928
-
CreatoreTopic
-
AutoreRisposte
-
-
11 Marzo 2012 alle 8:51 #70929
-
11 Marzo 2012 alle 9:07 #70930::
Se ti può interessare, si era già parlato di matrici con TikZ in questa discussione.Ciao
Claudio
-
11 Marzo 2012 alle 13:14 #70931::
La prima sono riuscito a replicarla tramite \bordermatrix\[
S = \bordermatrix{
& & & & & \stackrel{j_1}{\downarrow} & & & & & & & & & \stackrel{j_2}{\downarrow} & & & & & \stackrel{j_r}{\downarrow} & & & \cr
& 0 & 0 & 0 & 0 & p_1 & \ast & \ast & \ast & \ast & & & & & \vdots & & & & & \vdots \cr
& & & & & & 0 & 0 & 0 & p_2 & \ast & \ast & \ast & \ast & \ast & & & & & \vdots \cr
& & & & & & & & & & & & & & p_3 & \ast & \ast & \dots & \dots & \vdots & & & \cr
& & & & & & & & & & & & & & & & & & & \vdots \cr
& & & & & & & & & & & & & & & & & & & p_r & \ast & \ast & \ast
}
\]
vorrei però trovare un modo per diminuire la distanza fra le colonne. Credo si faccia con il comando kern ma non sono come usarlo in quest’ambiente.Per la seconda credo che sarò costretto ad usare il package tikz.
-
11 Marzo 2012 alle 16:16 #70932::
Lo spazio fra le colonne si controlla assegnando un nuvo valore alla lunghezza \arraycolsepp, per esempio \arraycolsep=3ptComunque guarda il filone di discussione che ti è stato segnalato; lì è descritto come mettere lo sfondo grigio sotto a gruppi di caselle; per le indicazioni fuori del bordo delle matrici, tendo conto specialmente di quanto sta scritto all destra della matrice, direi che tikz sia assolutamente necessario.
-
16 Marzo 2012 alle 13:26 #70933::
Questo è ciò che sono riuscito a fare finora\documentclass{article}
\usepackage[upright]{fourier}
\usepackage{tikz}\usepackage{amsmath}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{colortbl}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}\usetikzlibrary{fit}
\definecolor{grigio}{RGB}{224,224,224}\begin{document}
\[\begin{tikzpicture}
\node (matrice) {
$ B = \left(\begin{array}{*{14}{c}}
\arrayrulecolor{gray}
\hline
\multicolumn{1}{>{\columncolor{grigio}}c}{1} & \multicolumn{1}{>{\columncolor{grigio}}c|}{} & & & & & & & & & & & \\
\multicolumn{1}{>{\columncolor{grigio}}c}{} & \multicolumn{1}{>{\columncolor{grigio}}c|}{1} & & & & & & & & & & & & \\
\cline{1-14}
& & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & & \ast \\
\cline{3-14}
\end{array}\right)
%\end{array}
\begin{array}{*1{c}}
\arrayrulecolor{gray}
\hline \\
\multirow{2}{20mm}[9mm]{\center $\Big\updownarrow{j_1-1}$} \\
\hline
\leftarrow j_1 \text{riga} \\
\hline
\end{array}$
};\node [above=1pt, xshift=-9mm] at (matrice.north)
{
$\begin{array}{*{18}{c}}
\epsilon_1 & \epsilon_2 & \epsilon_3 & & & & & & & & & & & & & & & \epsilon_{n-r}
\end{array}$
};\end{tikzpicture}
\]\end{document}
Il problema è che la prima riga fuori dalla matrice non mi viene perfettamente allineata.
Ho provato a creare la stessa matrice con usando
\matrix {
}
del pacchetto tikz ma non riesco a definire un rettangolo (aperto a sinistra) non chiuso e completamente colorato (come quello delle prime due righe).
-
16 Marzo 2012 alle 14:01 #70934::
I filetti li devi mettere tutti con appositi comandi \drawI rettangoli (quadrati) grigi lei devi mettere con uno sfondo definito con rettangoli che contengono (libreria tikz fit) i nodi dei veritci, ma non deovno avere un bordo.
Anche la riga delle variabili ξ1 ξ2 ξ3 va messa in posizione mettendo direttamante i simboli, meglio ancora dei nodi. Lo stesso vale per la colonna a destra con lgi orinali delle righe, ma…
Che cosa rappresenta quel pallino/circoletto ad apice di j? se vole essere l’ordinale, non va bene; scrivi piuttosto: riga j1, eccetera, senza nessun pallino/circoletto.
-
17 Marzo 2012 alle 16:50 #70935::
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\usepackage{amsmath,amsthm}
\usetikzlibrary{positioning}
\usepackage[upright]{fourier}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}\tikzset{sfondo/.style={rectangle,fill=gray!50,fill opacity=0.5,inner sep=0pt}}
\begin{document}
\begin{tikzpicture}
\matrix (B) [matrix of math nodes, text height = 2mm, minimum width = 3.7mm, left delimiter =(, right delimiter =), nodes in empty cells]
{
\node(left) {1}; & \node {}; & & & & & & & & & & & & \node (a) {}; \\
\node{}; & \node(right) {1}; \\
\node (b) {}; & \node(h) {}; & \node(c) {\ast}; & \ast & \ast &\ast &\ast &\ast &\ast &\ast &\ast &\ast & & \node(d){\ast}; \\
};\node
{B =};
\node[sfondo,fit=(left.north west) (right.south east)] {};\draw[] (left.north west) — (a.north east);
\draw[] (b.north west) — (d.north east);
\draw[] (c.south west) — (d.south east);
\draw[] (B-1-2.north east) — (h.south east);\matrix (F) [matrix of math nodes, text height = 2mm, minimum width = 5em, right=4pt of B, align = center, font=\small]
{
\node {}; \\
\node {}; \\
$j_1^\circ$ \\
};
\draw [<->,decorate,decoration={segment length=.5mm}] (F-1-1.north) — (F-2-1.south);
\draw[] (F-1-1.north west) — (F-1-1.north east);
\draw[] (F-3-1.north west) — (F-3-1.north east);
\draw[] (F-3-1.south west) — (F-3-1.south east);\matrix [matrix of math nodes, text height = 2mm, minimum width = 3.6mm, nodes in empty cells, above=0pt of B, font=\small]
{
\underset{\downarrow}{\xi_1} & \underset{\downarrow}{\xi_2} & \underset{\downarrow}{\xi_3} & & & & & & & & & & & \underset{\downarrow}{\xi_{n-r}} \\
};
\end{tikzpicture}
@OldClaudio: Ho provato a fare come dicevi e finora questo è il risultato.
Le lettere \xi_1, \xi_2 ecc. non mi vengono ancora perfettamente allineate.Nella matrice di destra vorrei che la freccia fosse più corta della distanza tra le due righe, ho provato nel seguent modo:
\draw [<->,decorate,decoration={segment length=.5mm}] (F-1-1.north) — (F-2-1.south);
ma non ci sono riuscito. Inoltre dovrei anche far sì che sia un testo sulla destra in piccolo.Infine quando scrivo le lettere j_1^\circ (per il momento mi serve di scriverla così) la distanza della cella aumenta non allineadosi più con la matrice di fianco.
PS. C’è un altro modo per scrivere la lettera “B = ” della matrice?
Io ho usato il comando draw{B = }
Grazie ancora per l’aiuto.
Massimiliano
-
17 Marzo 2012 alle 22:03 #70936::
Per evitare che le frecce tocchino le righe orizzontali e abbiano l’etichetta accanto scrivi:
`
\draw[<->, >=stealth, shorten <=1pt, shorten >=1pt] (F-1-1.north) to node{\enspace $j-1$} (F-2-1.south);
`
Per le altre cose non saprei dirti, mi sembrano abbastanza a posto le righe con \xi potrebbero forse essere meglio centrate sulle rispettive colonne se nascondessi i pedici dentro un comando che ne annullasse la larghezza; so che esiste un comando matematico che lo fa, ma ora non riesco a trovarlo.
-
18 Marzo 2012 alle 8:27 #70937::
Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:[cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].
Per quanto riguarda il nome della matrice invece ( B = )
c’è un altro modo meno ortodosso per inserirlo?
Tipo
B = \begin{array}
\matrix{
};
\end{array}
Solo che non funziona.
Grazie intanto per il tuo suggerimento.
-
18 Marzo 2012 alle 8:33 #70938::
Matemax” post=70413Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:
[cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].
Per quanto riguarda il nome della matrice invece ( B = )
c’è un altro modo meno ortodosso per inserirlo?
Tipo
B = \begin{array}
\matrix{
};
\end{array}
Solo che non funziona.
Grazie intanto per il tuo suggerimento.Il B è solo un’etichetta utile per i riferimenti successivi. Viene definita qui:
` \matrix (B) [matrix of math nodes, text height = 2mm, minimum width = 3.7mm, left delimiter =(, right delimiter =), nodes in empty cells]`
ed è del tutto simile ad F quindi non capisco il perché non trovi il metodo ”ortodosso”.Il tuo metodo appunto non funziona perché la definizione delle label deve avvenire fra tonde mentre dichiari un oggetto (nodo o path).
Ciao
Claudio
-
18 Marzo 2012 alle 8:51 #70939::
Matemax” post=70413Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:
[cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].
Dove hai scritto questa espressione fra parentesi quadre?
Matemax” post=70413
Per quanto riguarda il nome della matrice invece ( B = )
c’è un altro modo meno ortodosso per inserirlo?
Tipo
B = \begin{array}
\matrix{
};
\end{array}
Solo che non funziona.Non può funzionare, perché dentro tikzpicture non sei in modo matematico. Per altro quando collochi il nodo con {B =}, lì sì che potresti scrivere
`
\node{$B ={}$};
`
aggiustando i duemm al valore che ritieni più opportuno (probabilmente ;asciando solo left e senza mettere una sola indicazioen metrica, visto che l’espressione matematica dentro il nodo ha già le spaziature giuste.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.