- Questo topic ha 18 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 7 anni, 11 mesi fa da
Fabiano.
-
CreatoreTopic
-
11 Settembre 2018 alle 17:16 #113858
-
CreatoreTopic
-
AutoreRisposte
-
-
12 Settembre 2018 alle 5:41 #113859
-
12 Settembre 2018 alle 6:15 #113860::
Grazie, questo è il codice della mia tabella.`\begin{center}
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{Operazioni}&\textbf{Descrizione}\\
\midrule
Testo.\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo\\
\midrule
Testo.\\
\bottomrule
\end{tabularx}
\end{center}
\captionof{table}{Didascalia}\label{tab:…}`
-
12 Settembre 2018 alle 13:53 #113861
-
13 Settembre 2018 alle 6:07 #113862::
Ciao, ho provato a comporre la tabella in questo modo, utilizzando longtable, solo sembra non funzionare.
`\begin{center}
\begin{longtable}
\toprule
\textbf{Operazioni}&\textbf{Descrizione}\\
\midrule
Testo.\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo.\\
\midrule
Testo\\
\midrule
Testo\\
\midrule
Testo.\\
\bottomrule
\caption{Didascalia}\label{tab:…}
\end{longtable}
\end{center}`
-
13 Settembre 2018 alle 9:11 #113863::
Se leggessi la documentazione di longtable, potrebbe funzionare.Intanto non mettere l’ambiente longtable dentro l’ambiente centering.
Poi longtable richiede i descrittori delle colonne, tale e quale a tabular.
Longtable richiede che la didascalia sia composta nel first head.
Se deve andare a capo in un’altra pagina devi impostare anche head, foot e last foot.
Non vorrai mica che te lo scriva io il codice, che trovi già bell’e fatto nella documentazione?
Se non ti piace la documentazione in inglese, leggiti L’Arte di scrivere con LaTeX, liberamente scaricabile dal link che si trova nella sezione Documentazione di questo forum, dalla pagina 112 in poi.
-
14 Settembre 2018 alle 7:00 #113864::
Si, forse dovrei leggere meglio la documentazione. Però non capisco perché il problema della didascalia che va nel nuovo foglio lo ho anche con le immagini utilizzando questo codice:
`\begin{center}
\includegraphics[width=14cm]{figure/Architettura3D.eps}
\end{center}
\captionof{figure}{didscalia} \label{fig:figura0}
`
-
14 Settembre 2018 alle 9:00 #113865::
Per lo stesso motovo per il quale succedeva quando componevi la tabella.Cerca di capire questo fatto: l’ambiente tabular forma una scatola che costituisce un blocco unico; sotto ci metti \captionof che non fa parte del blocco, quindi \LaTeX lo mette dove trova posto per metterlo.
Se usi \includegraphics questo crea una scatola che costituisce un blocco unico contenente l’immagine inclusa; sotto ci metti \captionof e, sorpresa, succede la stessa cosa che con tabular.
L’ambiente center non forma un blocco unico, ma prende i blocchi costituiti dal suo contenuto e li gestisce come singole righe (anche queste nel momento di dividere le pagine sono delle scatole/blocchi unici che contengono una sola riga ciascuno); quindi l’interruzione di pagina avviene fra le scatole. nel tuo caso fra la scatola della tabella/immagine e la didascalia.
L’ambiente table che contiene sia la tabella o l’immagine della tabella sia la didascalia, ne costruisce un’unica scatola e posiziona questa “scatolona”, singolo oggetto non divisibile, dove c’è posto, ed è per questo che il contenuto degli ambienti table e figure si dice galleggiante o flottante.
longtable forma la tabella lunga in modo da controllare dopo ogni riga ci celle se ci stà un’altra riga; se ci sta la mette, se non ci sta inserisce il foot, poi va a pagina nuova, inserisce head, e poi prosegue una riga di celle alla volta; Longtable usa il fisrt head (che contiene anche la didascalia) come prima riga di questo intero processo e last foot come ultima riga nell’ultima pagina.
Il tuo scopo (tipograficamente errato) è quello di prendere una tabella relativamante grande per metterla lì e solo lì con la sua didascalia. Se la tabella è grande e non c’è posto per metterci sia la tabella vera e propria sia la didascalia (in una scatola distinta) è chiaro che va a pagina nuova fra la tabella e la didascalia.
Soluzioni? Te le ho già indicate e te le ripeto con altre aggiunte. Nota che dove scrivo TABELLA intendi indifferentemente la tabella composta nell’ambiente tabular o l’inclusione della sua immagine.
1) Riduzione del corpo: `\begin{center}
\small % o corpo ancora più piccolo, senza esagerare fino a \tiny… 🙂
TABELLA
\captionof{table}{…}
\end{center}`2) Longtable: `\par\bigskip
\begin{longtable}{ll}
\caption{…}\label{…}\\[0.5ex]
\toptrule
\endfirsthead
…
\endhead
…
\endfoot
….
\endlastfoot
…. & … \\
…………
\end{longtable}\bigskip`3) minipage:`
.begin{center}
\begin{minipage}{\textwidth}
TABELLA
\captionof{table}{…}\label{…}
\end{minipage}
\end{center}`4) Scalamento mediante un fattore minore di uno da cercare sperimentalmente:`
\begin{center}
\scalebox{fattore}{\begin{minipage}{\textwidth}
TABELLA
\captionf{table}{…}{…}\label{…}
\end{minipage}}
\end{center}`5) Composizione separata: crei un altro file .tex diciamo tabella.tex`\documentclass{standalone}
…
\begin{document}
\begin{tabular}{ll}
… & …\\
………….
\end{tabular}
\end{document}`
Compili con pdflatex e ottieni un’immagine scontornata della tabella nel file tabella.pdfTorni al tuo file e inserisci l’ambente table così:`\begin{table}[!htbp]
\includegraphics[width=fattore\textwidth]{tabella.pdf}
\caption{…}\label{…}
\end{table}`Naturalmente anche in questo caso al posto di “fattore” devi metere un numero minore di uno da cercare sperimentalmente.Nei due casi in cui devi cercare il fattore sperimentalmente e non puoi lasciare che LaTeX se lo determini da solo, dipende che dove vuoi mettere la tua tabella non flottante; la giustezza \textwidth ti è nota, ma non sai quanto spzio ci sia sull pagine, quindi non puoi specificare direttamente l’altezza. Se a cose fatte devi usare un fattore minore di 0.9 (circa} la procedura ti produce un risultato tipograficamante inaccettabile, indegno di LaTeX che sarebbe costruiti per produrre testi tipograficamante composti bene; se lo forzi a fare cose tipograficamente discutibili o sbagliata, il risultato, ovviamente, è tipograficamente errato.
La soluzione con una grande tabella fissa generalmente è tipograficamente errata; le tabelle e le figure flottanti a cui fare riferimento col loro numero nel testo, in modo da evitare scritture del tipo “..come si vende nella seguente tabell…”, ma usando scritture del tipo “…come si vede nela tabella~\ref{…} …” è la soluzione tipograficamente corretta.
Puoi obbiettare che la tua tabella è la sola cosa che compare in una sezione, quindi viene subito dopo il titolo della sezione; in questo caso forse le soluzioni con il fattore di scalamento, se la tabella non è troppo grande, pussono essere accettabili; altrimenti devi ricorrere a longtable.
-
14 Settembre 2018 alle 20:58 #113866::
Ciao, grazie per la spiegazione dettagliata, ma ho ancora qualche dubbio.1)Come posso far in modo che la didascalia dell’immagine non vada nella pagina successiva? Potrei risolvere rendendo l’immagine mobile, solo non mi piace dove viene collocata. Questo è il codice che utilizzo.
`\begin{center}
\includegraphics[width=14cm]{figure/Architettura3D.eps}
\captionof{figure}{didascalia} \label{fig:figuraArchitettura}
\end{center}
`
Lo stesso problema si verifica con una tabularx quando provo ad impostare la didascalia sopra la tabella, dato che è consigliato posizionare la didascalia sotto per le immagini e sopra per le tabelle.2)Perché nell’Arte viene mostrata una tabularx, con due colonne X ed un unico descrittore l, ed entrambe le colonne X vengono allineate a sinistra? Essendoci una sola l non dovrebbe essere allineata solamente la prima colonna?
3)Per la longtable, ho utilizzato il codice presente nell’Arte. Però non capisco bene come venga composta, per esempio se volessi eliminare entrambi i piedi come devo fare?
`\begin{longtable}{lp{0.48\textwidth}}
% intestazione iniziale
\caption{Esempio di tabella ripartita su più pagine}
\label{tab:longtable} \\
\toprule
Comando & Effetto \\
\midrule
\endfirsthead
% intestazione normale
\multicolumn{2}{l}{\footnotesize\itshape
Continua dalla pagina precedente} \\
\toprule
Comando & Effetto \\
\midrule
\endhead
% piede normale
\midrule
\multicolumn{2}{r}{\footnotesize\itshape
Continua nella prossima pagina} \\
\endfoot
% piede finale
\bottomrule
\multicolumn{2}{r}{\footnotesize\itshape
Si conclude dalla pagina precedente} \\
\endlastfoot
% corpo della tabella
… & … \\
…
… & … \\
\end{longtable}
`4)Perché a volte si inserisce un ambiente tabular (che dovrebbe essere non floating) in uno table?
5)Non ho ben capito come funzioni \textwidth, per esempio che vuol dire 0.5\textwidth?
Grazie.
-
15 Settembre 2018 alle 11:58 #113867::
Perbacco, @Fab96! e tue lacune in fatto di LaTeX sono molto ampie…1) Te l’ho spiegato nel mio messaggio precedente; mi pare di averti mostrato 5 soluzioni diverse.
1bis) Lo stesso vale se metti \captionof rima di \tabular o tabularx; ti ho già spiegato che sono due scatole distinte e se sono troppo grandi il sezione di impaginazione di LaTeX le mette comunque in due pagine distinte.
2) L’esempio de L’Arte mostra un esempio con una colonna l e due colonne X; non hai capito che quelle colone X sono come dele colonne p{…} (o meglio t{…} alllineate sulla prima riga) larghe quanto basta per suddividersi la larghezza della tabella quanto basta, senza bisogno che l’utente faccia conti? il descrittore delle colonne {lXX} dice che la tabellaha tre colonne di cui la prima ha il contenuto allineato a sinistra (left) e larga quanto basta a contenere il più largo dei contenuti delle celle dela prima colonna; le due conne X sono colonne di tipo “capoverso” (paragraph in inglese} dove il testo viene composto su una giustezza calcolata automaticamente in mdo che tolti i separatori di colinna le due colonne si spartiscano equamente lo spazio che rimane nella larghezza specificata alla tabella.
3) Non definisci i piedi.
4) Questa è una lacuna grave: tabular serve per comporre una tabella; table serve per renderla flottante.
5) Altra lacuna grave: puoi anche non conoscere l’inglese, ma \textwidth è il comndo formato dalla locuzione “text width”, cioè larghezza del testo; in italiano la larghezza del testo si chiama giustezza; la giustezza deriva il suo nome dalla parola giustificare, che in tipografia vuol dire comporre le righe in modo che arrivino giuste giuste dall’inizio alla fine del rettangolo che racchiude il blocco del testo; 0.5\textwidth indica, quindi, una lunghezza pari alla metà della giustezza, pari alla metà della larghezza del testo. Non mi pare tanto complicato anche se dell’inglese si hanno pochissime nozioni. Il vantaggio di LaTeX di fare riferimento a mosti oggetti con un nome, invece che con un valore, permette di cambiare formato della pagina o del blocco del testo (detto anche griglia del testo o specchio del testo) e ricompilando automaticamente tutte le cose che si riferiscono a quei nomi vengono trattati correttamente. Non si ha quindi bisogno di sapere se la larghezza del testo sia 140 mm o 350pt 29 pc o 16.34 cm; una volta impostato dalla classe o da qualche pacchetto, questo valore viene conservato in memoria ed è richiamabile con la macro che ha quel nome.
Sei sicuro di avere capito che LaTeX non è Word? Sei sicuro di aver capito che Word, Writer, Pages, e simili programmi sono Word Processor (sostituti intelligenti delle macchine da scrivere) mentre i programmi di composizione del sistema TeX sono dei compositori tipografici? La tipografia non è la dattilografia, mi pare del tutto evidente. A casa ho delle vecchissime dispense rilegate con copertina rigida come se fossero dei libri; il contenuto è composto con la macchina da scrivere, per giunta a spaziatura fissa, roba vecchia di prima dell’entrata in uso dei calcolatori personali (anni ’60), e son sostanzialmente illeggibili perché non siamo più abituati ad usare le macchine da scrivere e quindi a leggere quello che vi si poteva scrivere.
Sei sicuro di aver capito che LaTeX è un linguaggio di mark-up per dire al programma di composizione tipografica quello che sarebbe troppo lungo e complicato da scrivere in linguaggio macchina?
È evidente che se usi un linguaggio di mark-up e non lo conosci, non riesci nemmeno a fare quello che quel linguaggio ti consentirebbe di fare.
Conclusione: studia LaTeX; il tempo che dedichi alla lettura e alla comprensione di quel che leggi, è tutto tempo risparmiato per affrontare le varie situazioni di composizione tipografica.
Hai letto bene quello che c’è scritto in grigio chiaro al fondo dei miei messaggi? È una frase di uno importante, mica mia. E lo studio della eoria prima di metterla in pratica è una cosa che si sa da centinaia d’anni. forse migliaia. La pratica da sola non basta!
-
17 Settembre 2018 alle 7:05 #113868
-
17 Settembre 2018 alle 8:39 #113869
-
17 Settembre 2018 alle 9:06 #113870::
Va bene, quindi il suggerimento che puoi darmi è quello di rendere figure e tabelle floating in modo tale che LaTeX decida la miglior posizione in cui collocare questi elementi e in questo modo non devo neanche preoccuparmi di didascalie che vanno nell’altra pagina, desistendo dal fatto che gli elementi potrebbero non essere collocati esattamente nel posto in cui voglio?
-
17 Settembre 2018 alle 20:09 #113871
-
17 Settembre 2018 alle 20:35 #113872
-
18 Settembre 2018 alle 4:54 #113873::
Ti ho indicato anche delle soluzioni in cui conservo il tuo codice ariginario, con minime modifiche,ma inscatli la tabular(la tabella vera e propria) e la didascalia, dentro un’altra scatola, in modo da renderle inseparabili.Ma se hai sperimentato tutte e cinque le varianti che ti ho dato ne hai anche sperimentato pregi e difetti.
Io propenderei per la soluzione 5 che si avvale di due file sorgente; con una crei la tabella con tabular e ne ottinei l’immagine PDF scontornata; poi la importi nel file sorgente del tuo documento con un fattore di scala che va sperimentato sperimentalmente, ma lo importi dentro un ambiente table. Il fattore di scala ti permette, sia pure con un po’ di esperimenti di trovare il valore giusto; mentre ridurre il corpo dei font con incomandi \small, \footnotesize, \scriptsize ti offre riduzioni fisse e probabilmente troppo marcate. Con i font kpfonts potresti scegliere corpi di tuo piacimento, per esempio 10,85pt, che con i comandi utente di LaTeX non puoi ottenere; solo che per fare cosette di questo genere bisogna usare i comandi base per la gestione dei font, e quelli per il corpo non sono semplicissimi, diciamo che sono delicati ed è facile combinare guai tipografici. Bisognerebbe (dentro l’ambiente table) inserire all’inizio qualcosa come`\fontsize{corpo}{scartamento}\selectfont`ma lo scartamento va scelto adatto al corpo perché i due devono accordarsi tipograficamente.
-
18 Settembre 2018 alle 18:55 #113874::
Ho provato con la soluzione numero 5 solo non riuscivo ad ottenere il fattore di scala per l’altezza (la tabella veniva tipo sfocata). Diciamo che ho risolto in questo modo, dato che quando metto l’ambiente tabular in quello table lo spazio verticale che separa le righe si restringe, ho utilizzato il comando \arraystretch ottendendo a mio avviso un discreto risultato.`
\begin{table}[H]
\renewcommand{\arraystretch}{1.4}
\centering
\caption{…}\label{tab:…}
\begin{tabularx}{\textwidth}{lX}
\toprule
\textbf{Operazioni}&\textbf{Descrizione}\\
\midrule
….
\bottomrule
\end{tabularx}
\end{table}
`
-
18 Settembre 2018 alle 19:33 #113875
-
19 Settembre 2018 alle 12:44 #113876::
Si, ma allargando in altezza la tabella con quel codice non viene “sfocata”. Graficamente ho ottenuto lo stesso effetto che avevo prima utilizzando solamente l’ambiente tabularx, solo ora con didascalia che non va nell’altra pagina, come nell’immagine allegata.
[attachment=2102]Screen.PNG[/attachment]
Attachments:
You must be logged in to view attached files.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.