- Questo topic ha 28 risposte, 7 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 1 mese fa da
lorenzo.pantieri.
-
CreatoreTopic
-
26 Luglio 2012 alle 12:16 #76460::
vorrei inserire una didascalia alla seguente tabella che ho creato:`
\begin{center}
\begin{tabularx}{0.7\textwidth}{|X|}
\hline
prova 1 \\
\hline
prova 2 \\
\hline
\end{tabularx}
\end{center}
`se inserisco \caption{testo} sia prima di \end{tabularx} che prima di \end{center} mi dà sempre errore.
come risolvo?? 😕
-
CreatoreTopic
-
AutoreRisposte
-
-
26 Luglio 2012 alle 12:30 #76461::
Le didascalie sono proprie degli oggetti flottanti, quindi nel tuo caso basta inserire la tabella in un ambiente table, a cui assegnerai la didascalia.
Se non vuoi che la tua tabella sia flottante e vuoi una didascalia (cosa usualmente sconsigliata, perché priva di significato: se una teballa è nel flusso del discorso si presuppone che venga adeguatamente spiegata nel testo) guarda il pacchetto caption e il suo comando \captionof
(queste cose le trovi spiegate molto bene nell’Arte di scrivere con LaTeX…)
Francesco
-
26 Luglio 2012 alle 12:43 #76462::
franen” post=75585Le didascalie sono proprie degli oggetti flottanti, quindi nel tuo caso basta inserire la tabella in un ambiente table, a cui assegnerai la didascalia.
Se non vuoi che la tua tabella sia flottante e vuoi una didascalia (cosa usualmente sconsigliata, perché priva di significato: se una teballa è nel flusso del discorso si presuppone che venga adeguatamente spiegata nel testo) guarda il pacchetto caption e il suo comando \captionof
(queste cose le trovi spiegate molto bene nell’Arte di scrivere con LaTeX…)
Francesconon credo che \captionof{ff} faccia al caso mio.
se lo fa, mostrare un esempio funzionante
-
26 Luglio 2012 alle 12:48 #76463
-
26 Luglio 2012 alle 12:56 #76464::
Dr Spencer Reid” post=75586
non credo che \captionof{ff} faccia al caso mio.
se lo fa, mostrare un esempio funzionanteBeh, devi deciderlo tu se fa al caso tuo… Io ti ho solo consigliato un possibile strumento per assegnare didascalie a oggetti non flottanti.
In base a cos’è che dici che non fa al caso tuo?
[e cos’è {ff}?]
Fran
-
26 Luglio 2012 alle 13:23 #76465
-
27 Luglio 2012 alle 6:09 #76466
-
27 Luglio 2012 alle 13:26 #76467
-
27 Luglio 2012 alle 14:42 #76468::
Nell’Arte ci sono tutte le informazioni per arrivarci facilmente:`\documentclass{article}
\usepackage{tabularx,booktabs}
\begin{document}
\begin{table}
\caption{Dida.}
\label{tab:esempio}
\centering
\medskip
\begin{tabularx}{0.7\textwidth}{lX}
\toprule
\textbf{Forza} & Una forza è una grandezza fisica che si manifesta nell’interazione di due o più corpi materiali, che cambia lo stato di quiete o di moto dei corpi stessi. \\
\midrule
\textbf{Momento polare} & Il momento polare di una forza rispetto a una determinata origine è definito come il prodotto vettoriale tra il vettore posizione (rispetto alla stessa origine) e la forza. \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}`
-
27 Luglio 2012 alle 15:17 #76469::
Scusa ma credo che l’esempio che riporti non sia inerente al problema. Da come esso è stato riportato, sembra che Dr Spencer Reid abbia bisogno di inserire una didascalia ad un oggetto non flottante, infatti nella discussione si parla di [tt]\captionof{}[/tt]. Se poi lui ha risolto rendendo flottante la tabella bene, infatti ho solo chiesto che lo espliciti. Se invece ti riferisci al fatto che bisognerebbe mettere didascalie solo agli oggetti flottanti, questo è stato già detto da franen, quindi direi che il tuo messaggio non aggiunge nulla di nuovo.Ciao
Fra
-
27 Luglio 2012 alle 15:31 #76470::
Dr Spencer Reid è sempre reticente; secondo me ha detto bene che ha risolto il problmea senza dice come, perché simmagino che dopo aver messo [tt]\captionof{ff}[/tt] senza che gli funzionasse, deve aver letto meglio il messaggio a proposito del pacchetto caption, non del comando \caption, come egli scrive, e deve essersi accorto della sua distrazione nel non aver caricato il pacchetto caption, oppure che \captionof, definito dal pacchetto caption, richiede due argomenti, non uno solo.Chi non ha mai avuto distrazioni alzi la mano; io NON alzo la mano! 🙁
-
28 Luglio 2012 alle 3:28 #76471::
Spike” post=75629Scusa ma credo che l’esempio che riporti non sia inerente al problema. Da come esso è stato riportato, sembra che Dr Spencer Reid abbia bisogno di inserire una didascalia ad un oggetto non flottante, infatti nella discussione si parla di [tt]\captionof{}[/tt]. Se poi lui ha risolto rendendo flottante la tabella bene, infatti ho solo chiesto che lo espliciti. Se invece ti riferisci al fatto che bisognerebbe mettere didascalie solo agli oggetti flottanti, questo è stato già detto da franen, quindi direi che il tuo messaggio non aggiunge nulla di nuovo.
Non ho mai usato \captionof. Se voglio una tabella con didascalia e la voglio “lì” (cosa peraltro da fare rarissimamente), uso il pacchetto float e lo specificatore H.
`\documentclass{article}
\usepackage{tabularx,booktabs,float}
\begin{document}
\begin{table}[H]
\caption{Dida.}
\label{tab:esempio}
\centering
\medskip
\begin{tabularx}{0.7\textwidth}{lX}
\toprule
\textbf{Forza} & Una forza è una grandezza fisica che si manifesta nell’interazione di due o più corpi materiali, che cambia lo stato di quiete o di moto dei corpi stessi. \\
\midrule
\textbf{Momento polare} & Il momento polare di una forza rispetto a una determinata origine è definito come il prodotto vettoriale tra il vettore posizione (rispetto alla stessa origine) e la forza. \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}`
Nell’Arte c’è, naturalmente.
-
28 Luglio 2012 alle 6:24 #76472
-
28 Luglio 2012 alle 6:24 #76473::
@ lorenzo: la soluzione tua è adatta quasi alla mia esigenza, ma avendo risolto, uso quello che ho creato io
@ spike: il problema secondo me non è \caption o \captionof, ma un altro: è stato indicato un \captionof quando bastava \caption , ma forse non si è inquadrato bene il problema e quindi , siccome in latex ci sono mille modi per fare una cosa, si cerca sempre di arrangiare la soluzione (problema di latex non di noi comuni utilizzatori)
@ oldclaudio: non si tratta di essere reticente, ma di avere anche altro da fare nella vita. se posso connetterni subito al pc lo faccio entro breve… altrimenti passa qualche giorno ed è ovvio che la gente risponde… e rispondono tutti tranne me
@ illinguista1972: non sono tirchio sulla conoscenza e condivisione … non me ne viene in tasca nulla fino a prova contrariala soluzione che ho adottato è la seguente, che produce un ottimo risultato nel file .pdf di output:
`
\begin{center}
\subsubsection*{Caso d'uso: \textit{prova}}
\end{center}
\begin{table}[!h]
\centering
\begin{tabularx}{0.85\textwidth}{|X|}
\hline
\vspace{1pt}
\textbf{ID}: UC1
\vspace{5pt}
\\
\hline
\vspace{1pt}
\textbf{Descrizione}: testo 1
\vspace{5pt}
\\
\hline
\vspace{1pt}
\textbf{Attori}: testo 2
\vspace{5pt}
\\
\hline
\vspace{1pt}
\textbf{Precondizioni}:
testo 3
\\
\hline
\vspace{1pt}
\textbf{Postcondizioni}:
testo 4
\\
\hline
\vspace{1pt}
\textbf{Ordine degli eventi}:
testo 5
\vspace{5pt}
\\
\hline
\end{tabularx}
\caption{Caso d'uso: prova}
\end{table}
`
-
28 Luglio 2012 alle 6:31 #76474
-
28 Luglio 2012 alle 6:39 #76475::
Dr Spencer Reid” post=75647@ oldclaudio: non si tratta di essere reticente, ma di avere anche altro da fare nella vita. se posso connetterni subito al pc lo faccio entro breve… altrimenti passa qualche giorno ed è ovvio che la gente risponde… e rispondono tutti tranne me
Secondo me OldClaudio si riferiva al fatto che non sempre spieghi correttamente cosa vorresti ottenere (ho in mente quel filone che hai aperto sulla tesi dove prima parlavi di classi generiche poi ti sei corretto dicendo che ti riferivi alle presentazioni).
In questo caso ti era stato proposto [tt]\captionof[/tt] perché nel pezzo di codice nel primo intervento non c’era nessun oggetto flottante.
Ciao
Claudio
-
28 Luglio 2012 alle 6:40 #76476
-
28 Luglio 2012 alle 8:54 #76477::
Dr Spencer Reid” post=75650
[quote=”Dr Spencer Reid” post=75647]
produce un ottimo risultato nel file .pdf di output:Mi sembra un po’ disarmonica, ma contento tu 🙂
Ciao
Tommasocosa intendi per disarmonica??[/quote]
Avrai i tuoi ottimi motivi per fare una tabella così, ma non capisco (e certo non sono io a dover capire) perché metti 1 pt di spazio sopra e 5 pt di spazio sotto a ciascuna voce della tabella.
Ancora meno capisco perché sotto ‘Precondizioni’ e sotto ‘Postcondizioni’ lo spazio addirittura non c’è.
Ciao
Tommaso
-
28 Luglio 2012 alle 9:15 #76478
-
28 Luglio 2012 alle 9:43 #76479::
non c’è lo spazio sotto precondizioni e postcondizioni perchè quello che ho postato è un esempio. nel documento originale è inserito un elenco puntato (\begin{itemize}) che mette automaticamente spazio dopo l’indice.
ho inserito lo spazio verticale per evitare testo troppo vicino alle linee orizzonali delle righe@ lorenzo: posso anche utilizzare
`
\begin{center}
\textbf{Caso d'uso: \textit{prova}}
\end{center}
`la fase di revisione del documento devo ancora farla 🙂
-
28 Luglio 2012 alle 12:25 #76480::
Dr Spencer Reid” post=75658[…] posso anche utilizzare […] la fase di revisione del documento devo ancora farla
Non è buona norma, quando si scrive in LaTeX, introdurre strafalcioni e poi correggerli in revisione finale. La revisione finale serve a mettere a posto l’impaginazione, tutto qui. Anche l’ultimo codice che hai inserito non è gran che, del resto…
-
28 Luglio 2012 alle 13:12 #76481::
Il rischio di usare l’opzione [h!] che se la tabella lì non ci sta per un motivo qualsiasi, nonostante il punto esclamativo, ti resta in coda e ti blocca tutta la coda delle tabelle fino alla fine del capitolo, questo è il motivo per il quale rarissimamente consigliamo di usare [h!].La buona tipografia richiede di lasciar flottare le figure (e le tabelle) e farvi riferimento con \label e \ref, oppure di correre il rischio di lasciale fisse, mettendole dentro ambienti non flottanti, come per esempio center, e usare \captionof definito dal pacchetto caption.
Se la tua soluzione ti soddisfa, contento tu, contenti tutti; ma non è buona tipografia.
-
28 Luglio 2012 alle 13:32 #76482::
OldClaudio” post=75667La buona tipografia richiede di lasciar flottare le figure (e le tabelle) e farvi riferimento con \label e \ref, oppure di correre il rischio di lasciale fisse, mettendole dentro ambienti non flottanti, come per esempio center, e usare \captionof definito dal pacchetto caption.
Vorrei sapere la differenza tra introdurre una tabella con l’opzione H del pacchetto float
`\begin{table}[H]
\caption{Dida.}`
e con \captionof del pacchetto caption
`\captionof{table}{Dida}`
Io preferisco la prima opzione, se non altro per ragioni di omogeneità: se decidessi che la tabella può andarsene a spasso mi basterebbe togliere quell'[H]. Ancora, ho il sospetto che con \captionof la spaziatura vada regolata a mano.Sbaglio?
-
28 Luglio 2012 alle 15:42 #76483::
Le soluzioni che ho proposto sono solo tre:
La prima è `
\begin{table}[h!] % oppure \begin{table}[H]
…
\caption{…}\label{…}
\end{table}`La seconda è `
\begin{center}
…
\captionof{table}{…}\label{…}
\end{center}`e la terza è `
\begin{table}
…
\caption{…}\label{…}
\end{table}`La terza lascia la tabella flottante e non importa dove LaTeX la mette, ma si è sicuri che se puoi rispettare i prametri impliciti nella classe, la mette nel posto migliore (salvo inghippi che non dipendono dalla soluzione, ma, per esempio dalla coda bloccata da un precedente table con parametri di posizionamento scelti male).
La seconda non ha problemi con le code perché non le sfrutta, se non ci sta nella pagina, LaTeX mette tullo l’ambiente nella pagina successiva e in quella dove si sperava che cadesse la tabella aumenta enormemente lo spazio fra i capoversi e quindi la pagina diventa brutta, ma relativamente facile da aggiustare, magari lasciandola mozza (di due o tre righe) oppure rimpolpando il testo, oppure ancora smagrendolo in modo da lasciare più spazio alla tabella.
La prima soluzione con [h!] non lascia a LaTeX nessuna possibilità: o ci sta lì dove vuoi, oppure la lascia in coda e blocca la cosa fino alla fine del capitolo o del documento. Con [H] l’ordine è perentorio: mettila qui e non discutere; quindi se ci sta, bene; se non ci sta, lo sposta alla pagina successiva lasciando la pagina mozza. Si può aggiustare la cosa nello stesso modo di quando si usa la seconda soluzione.
Come confrontare le soluzioni 1 e 2? la 1 con lo specificatore [H] richiede l’uso di un altro pacchetto (che io non credo di avere ami usato seriamente negli ultimi 30 anni; certo l’ho provato, ma le sue funzioni per creare nuovi oggetti flottanti possono essere usate, secondo me, solo per definire nuovi tipi di oggetti flottanti, cosa che a ben pensarci succede raramente; per gli algoritmi ci pensano i comandi interni di listings. Ricordo di essermi definito un nuovo tipo di oggetti flottanti quando nel 1991 ho scritto il libro per la Hoepli e il pacchetto float non esisteva ancora e non esisteva nemmeno LaTeX2e. Se non si vuole usare il pacchetto float, i comandi standard di LaTeX, come i parametri di posizionamento fra parentesi quadre, vanno usati intelligentemente senza costringere LaTeX in un vicolo senza uscita, perché allora diventa cattivo (blocca la coda e può far perdere degli oggetti mobili).
Ricordo che i parametri di posizionamento standard t, b, h e p richiedono degli spazi minimi o massimi espressi in termini di altezza dello specchio di stampa; se ben ricordo t non deve superare la frazione 0,7 dell’altezza, b non deve superare 0,5, h non deve superare 0,3, p deve essere almeno 0,5; posso sbagliarmi, ma questi limita danno la spiegazione del perché LaTeX dispone di code FIFO (First In First Out) per gli oggetti flottanti, dalle quali essi vengono estratti quando le loro dimensioni e i loro parametri di posizione lo consento in relazione al contenuto della pagina in costruzione. Se si specifica ! (punto esclamativo) quei limiti vengono un po’ rilasciati ma non del tutto, quindi [h!] non è equivalante a [H].La soluzione 2 non fa riferimento agli oggetti flottanti, ma richiede un qualche pacchetto, per esempio caption per avere la definizione di \captionof. Secondo me il pacchetto caption offre maggiori probabilità di essere usato anche per i suoi scopi “istituzionali”, cioè di personalizzare il modo di comporre le didascalie, sempre secondo me, molto più utile che non definire nuovi tipi di oggetti flottanti.
Poi ci sarebbe la 4.a soluzione, quella di definirsi dei comandi del tipo di \captionof, ma con parametri diversi, che possano essere usati anche dentro gli oggetti flottanti per dare un titolino corrente con un nome diverso da Tabella o da Figura e che possano essere usati anche quando c’è un contatore da incrementare e a cui riferirsi, un po come \newtheorem definisce degli enunciati che hanno un nome diverso ma sono numerati usando lo stesso contatore di un enunciato capostipite, per esempio theorem. Non conosco nessun pacchetto che definisca una cosa del genere e il cui comando permetta di usare l’asterisco per non numerare l’oggetto.
Ma questo è i cassetto dei sogni, se ne avessi davvero necessità, avrei già scritto le macro e magari anche pubblicato il pacchetto che le contiene. Ma benché disponga di più tempo di quando ero in servizio, non ho voglia di inventarmi cose nuove per il solo gusto di inventarle anche se non so che cosa farmene; insomma un Archimede Pitagorico basta ed avanza, ed è e resta un personaggio di Walt Disney. 🙂
Ciao
Claudio
-
28 Luglio 2012 alle 20:32 #76484::
OldClaudio” post=75671
La seconda non ha problemi con le code perché non le sfrutta, se non ci sta nella pagina, LaTeX mette tullo l’ambiente nella pagina successiva e in quella dove si sperava che cadesse la tabella aumenta enormemente lo spazio fra i capoversi e quindi la pagina diventa brutta, ma relativamente facile da aggiustare, magari lasciandola mozza (di due o tre righe) oppure rimpolpando il testo, oppure ancora smagrendolo in modo da lasciare più spazio alla tabella.La soluzione con captionof può però portare a un fastidioso inconveniente nella remota possibilità di un oggetto flottante e uno fisso che si scambiano di posto!
Fran
`\documentclass{article}
\usepackage{caption}
\begin{document}
\begin{center}
\captionof{table}{Prima tabella}
\begin{tabular}{l}
prima\\
\end{tabular}
\end{center}Testo testo testo
\begin{table}
\centering
\caption{Seconda inserita}
\begin{tabular}{l}
Seconda\\
\end{tabular}
\end{table}
\end{document}`
-
28 Luglio 2012 alle 20:48 #76485::
Certo, ed è per questo che non bisognerebbe mai usare mescolati gli oggetti flottanti e gli oggetti fissi; infatti la soluzione da scegliere è la terza, la solita operazione che lascia flottare le tabelle e le figure, e permette di citarle con l’uso attento, ma semplicissimo di \label e \ref, \pageref e volendo, anche di \vref.
Gli oggetti fissi se ci sono devono essere relativamente piccoli e non avere nessuna didascalia; questo vale anche per le figure al margine (wrapfig), perché il loro flusso di uscita è distinto da quello delle tabelle e figure regolarmente flottanti.Però tutto questo filone parte da un presupposto sbagliato: il titolo: “Inserire didascalia in tabularx”. Comunuque si faccia non si inserisce nessuna didascalia in tabularx, cioè dentro all’ambiente tabularx. Invece si vuole assegnare una didascalia ad una tabella composta con tabularx. La risposta ovvia alla domanda giusta non può altro che essere di usare \caption dentro un ambiente per il quale abbia senso, oppure di usare una simulazione di \caption (\captionof) dentro ad un ambiente per il quale \caption non habbia senso. E tutti sanno che se si usa \caption fuori degli ambienti flottanti si ottiene un errore, proprio perché LaTeX stesso non dà nessun significato a una didascalia generata con \caption fuori di un ambiente flottante.
-
29 Luglio 2012 alle 4:23 #76486::
franen” post=75676
La soluzione con captionof può però portare a un fastidioso inconveniente nella remota possibilità di un oggetto flottante e uno fisso che si scambiano di posto!
Fran
`\documentclass{article}
\usepackage{caption}
\begin{document}
\begin{center}
\captionof{table}{Prima tabella}
\begin{tabular}{l}
prima\\
\end{tabular}
\end{center}Testo testo testo
\begin{table}
\centering
\caption{Seconda inserita}
\begin{tabular}{l}
Seconda\\
\end{tabular}
\end{table}
\end{document}`Questo è un ottimo punto! C’è un problema anche con le spaziature:`
\documentclass{article}
\usepackage{tabularx,booktabs,float,caption,lipsum}
\begin{document}Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus.
\begin{table}[H]
\caption{Dida.}
\label{tab:esempio}
\centering
\begin{tabularx}{0.7\textwidth}{lX}
\toprule
\textbf{Forza} & Una forza è una grandezza fisica che si manifesta
nell’interazione di due o più corpi materiali, che cambia lo stato
di quiete o di moto dei corpi stessi. \\
\midrule
\textbf{Momento polare} & Il momento polare di una forza rispetto a
una determinata origine è definito come il prodotto vettoriale tra
il vettore posizione (rispetto alla stessa origine) e la forza. \\
\bottomrule
\end{tabularx}
\end{table}Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus.
\begin{center}
\captionof{table}{A table}
\begin{tabularx}{0.7\textwidth}{lX}
\toprule
\textbf{Forza} & Una forza è una grandezza fisica che si manifesta
nell’interazione di due o più corpi materiali, che cambia lo stato
di quiete o di moto dei corpi stessi. \\
\midrule
\textbf{Momento polare} & Il momento polare di una forza rispetto a
una determinata origine è definito come il prodotto vettoriale tra
il vettore posizione (rispetto alla stessa origine) e la forza. \\
\bottomrule
\end{tabularx}
\end{center}Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus.
\end{document}
`
Come si vede. Le spaziature verticali (tra dida e tabella e tra tabella e testo) di una tabella inserita con \captionof sono diverse da quelle inserite con table.Questi due punti, a mio avviso, sconsigliano l’uso di \captionof. I suoi vantaggii sono che che una tabella inserita con \captionof non intasa le code e che non è necessario caricare altri pacchetti oltre a caption, ma a mio avviso, visti i contra appena mostrati, sono pro insufficienti a giustificarne l’uso.
Riassumedo. Come gestire le tabelle?
1. Si lascino flottare tutte, si etichettino con \label e ci si riferisca ad essere con \ref. Si viva felici.
2. Nel rarissimo caso in cui si voglia una tabella “proprio lì” (ma è un caso davvero eccezionale), la si introduca con l’opzione H di float.Questa, per me, è la soluzione migliore.
Grazie mille,
L.P.S. Naturalmente, come dicie OldClaudio il titolo del topic è fuorviante
-
29 Luglio 2012 alle 8:57 #76487
-
29 Luglio 2012 alle 11:59 #76488::
OldClaudio” post=75682
2. Nel rarissimo caso in cui si voglia una tabella “proprio lì” (ma è un caso davvero eccezionale), la si introduca con l’opzione H di float e ci si prepari a gestire una pagina mozza.
Già: l’opzione H di float (ma lo stesso vare per tutte non flottanti) può procurare grosse grane di impaginazione: eco perché va usata rarissimamente o mai.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.