Tabelle da Stata

  • Creatore
    Topic
  • #104127
    Up
    0
    Down
    ::


    Salve a tutti. Avendo avuto un immediato e grande aiuto precedentemente, ci riprovo con un altro problemino. Richiamando delle tabelle su dei file a parte con il codice \input{tabella.tex} me le inserisce un po’ quando vuole lui. C’è una maniera per controllare dove uscirà la tabella (così magari da poter scrivere nel testo “i risultati sono mostrati nella seguente tabella:” ed avere poi effettivamente la tabella nel pdf)? Grazie a tutti.

Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #104128
      franen
      Partecipante
        Up
        0
        Down
        ::


        La cosa più facile, ma che forse non ti piacerà, è quella di inserire solo la tabular come oggetto non flottante, quindi senza l’ambiente table. Questo comporta di non avere didascalie, ma non ti servono, se la tabella è nel testo.

        Altrimenti puoi usare il pacchetto varioref, che ti permette di generare riferimenti del tipo che ti interessa.

      • #104129
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Ciao.
          Oltre a quello che ti ha suggerito @franen, aggiungo che è possibile inserire delle caption anche per oggetti “non mobili” usando il comando \captionof del pacchetto caption. Mi son trovato molto bene in alcuni casi con questo sistema.

          Per il resto, forse possiamo approfondire un po’ se ci mostri il codice completo con cui inserisci i dati tabellari.
          R.

        • #104130
          Up
          0
          Down
          ::


          Grazie mille a tutti e due! Purtroppo le didascalie sono importanti per me, e non ho idea di cosa siano varioref e captionnof. Il codice che ho usato (che mi viene da un comando di Stata che genera tabelle in LaTeX) è:

          ` According to this re-shape of the sample, the new population is composed like that:

          \begin{table}[htbp]\centering
          \caption{\label{ireg_by_sex}
          \textbf{Region by gender}}
          \begin{tabular} {@{} l r r r @{}} \\ \hline
          & \multicolumn{3}{@{} c @{}}{\textbf{Gender}} \\
          \textbf{Region} &
          Male &Female &Total \\ \hline
          Piemonte& 1,653& 1,084& 2,737\\
          Valle d'Aosta& 97& 49& 146\\
          Lombardia& 2,340& 1,622& 3,962\\
          Trentino Alto Adige& 520& 306& 826\\
          Veneto& 1,716& 1,217& 2,933\\
          Friuli-Venezia Giulia& 641& 490& 1,131\\
          Liguria& 756& 582& 1,338\\
          Emilia-Romagna& 1,895& 1,530& 3,425\\
          Toscana& 1,523& 1,108& 2,631\\
          Umbria& 717& 591& 1,308\\
          Marche& 860& 663& 1,523\\
          Lazio& 1,080& 692& 1,772\\
          Abruzzo& 522& 366& 888\\
          Molise& 229& 109& 338\\
          Campania& 1,654& 537& 2,191\\
          Puglia& 1,233& 409& 1,642\\
          Basilicata& 316& 155& 471\\
          Calabria& 438& 207& 645\\
          Sicilia& 1,345& 378& 1,723\\
          Sardegna& 882& 470& 1,352\\
          Total& 20,417& 12,565& 32,982\\\hline
          \multicolumn{4}{@{}l}{\footnotesize{\emph{Source:} Elaboration on Bank of Italy \emph{Survey on Household, Income and Wealth}}}
          \end{tabular}
          \end{table}`

        • #104131
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Latex mette sempre le tabelle e le figure dove c’è posto; quindi è raro che le mette subito dopo una frase come quella che precede la tabella. In sostanza non scrivi ” According to this re-shape of the sample, the new population is composed like that:” ma scrivi ” According to this re-shape of the sample, the new population is composed as in table~\ref{ireg_by_sex} on page~\pageref{ireg_by_sex}.”

            I comandi \label, \ref e \pageref sono fatti apposta.

            Se carichi il pacchetto varioref con l’opportuna opzione di lingua, allora la cosa si può semplificare scrivendo “… as in table~\vref{ireg_by_sex}.

            Lascia perdere \captionof; può essere utilissimo, ma di solito lo si usa quando assolutamente una figura o una tabella deve stare proprio lì e non altrove; \captionof{table}{Region by gender} agisce come \caption dell’ambiente table, senza stare dentro l’ambiente table.

            Tuttavia, permettimi; suppongo che ti non abbia scritto quel codice, ma l’abbia scritto Stata. Ebbene, come spesso succede lasciando fare ad altri, l’ha scritto male e in modo non professionale; Il modo corretto sarebbe questo:`\begin{table}[htbp]
            \caption[Region by gender]{\bfseries Region by gender}\label{iref_by_gender}
            \begin{tabular}{@{}lrrr@{}}
            \hline
            & \multicolumn{3}{c@{}}{\textbf{Gender}} \\
            `Gli spazi fra i codici delle colonne non sono vietati ma di solito non si usano; il primo fine riga \\ dopo l’istruzione \begin{tabular}{…} è superlfluo perché non c’è nessuna riga da terminare; il primo @{} dentro il secondo argomento di \multicolumn non ci vuole ed è concettualmente errato, mentre il secondo non è grammaticalmente sbagliato, sebbene tutta la tabella dovrebbe essere composta senza usare nessuna @-espresione, perché è corretto che i filetti sporgano pochi pnti furi dalla tabella (l’impostazione di default inplica una sporgenza di circa 2mm, esattamente di 6pt.

            I filetti orizzontali sarebbe meglio crearli con i comandi \toprule, \midrule e \bottomrule del pacchetto booktabs, che assicurano una distanza assicurata fra loro e i contenuti delle celle, mentre \hline richia di battere contro le maiuscole delle riga sottostante o contro i discendenti della riga sovrastante.

            Per fortune Stata ti produce la tabella, anche se composta male in codice LaTeX, quindi puoi metterci le mani per correggerla nel modo migliore che, evidentemente Stata non conosce. 😉

          • #104132
            Up
            0
            Down
            ::


            Grazie per l’interessante risposta. Farò sicuramente uso dei riferimenti (ma davvero basta un circonflesso e tre interrogativi, o c’è un altro comando per richiamare il numero di tabella?). Quando alla cattiva formattazione di Stata, di certo hai ragione tu (non conosco bene LaTeX e non mi esprimo, ma non ho dubbi sul fatto che tu sia corretto). La questione è che però a me basta cambiare una riga nel dofile di stata, per avere un dataset diverso, o regressioni diverse, aggiungere variabili di controllo, eccetera eccetera, ed automaticamente me le aggiorna nel lavoro finito. Cosa che, modificando a mano le oltre duecento tabelle del lavoro (che di per sé sarebbe un lavoraccio) non sarebbe poi possibile… Ma grazie davvero per i suggerimenti!

          • #104133
            Up
            0
            Down
            ::


            Cari tutti, nel ringraziarvi tantissimo per avermi insegnato l’esistenza di \vref, che ha davvero rivoluzionato il mio lavoro e semplificato tantissimo l’impaginazione, sono a rompervi le scatole per chiedervi un ulteriore consiglio. Oltre alle tabelle, ho dei disegni, fatti con tikzpicture. Un esempio è questo:
            `
            \begin{tikzpicture}\label{linea}
            \begin{axis} [axis lines=middle, xlabel=$x$,ylabel=$y$, xmin=0,xmax=155, ymin=0, ymax=1, grid=major, width=15cm, height=10cm,domain=0:150,title={\textbf{LINEA}}]
            \legend{$y=1.426-0.0183x$}
            \addplot [thick] {-0.0183*x+1.426};
            \end{axis}
            \end{tikzpicture}`

            Come potete vedere ho aggiunto (mea sponte) il comando \label per vedere se \vref riconosceva anche questo disegno, e dunque potessi “quotarlo” all’interno del codice. Ebbene, in effetti me lo riconosce, ma non lo numera come una tavola, ma bensì con un improbabile “3.4”, che non capisco da dove prenda. Mi sapete dire da cosa nasce questo numero (non è la pagina di riferimento, che invece vref calcola correttamente) e come posso migliorare il tutto? Grazie davvero per l’aiuto, siete preziosissimi.

          • #104134
            claudio
            Partecipante
              Up
              0
              Down
              ::


              capitolo 3 tabella 4 forse
              ciao
              claudio

            • #104135
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Certo che ti numererebbe anche la figura fatta con tikz; basta che tu ci metta la didascalia con \caption perché è caption che genera il numero; \label va messo dopo \caption.

                Ripeto a te quanto ho scritto pochi minuti fa ad un altro partecipante al forum.

                Il fatto che sia \caption il comando che oltre a comporre la didascalia le assegni anche un numero, che può essere raccolto subito dopo con un comando \label, è scritto in qualunque guida. Hai detto di avere già scaricato L’Arte di scrivere con LaTeX; per favore (favore che fai a te stesso) leggila e usa abbondantemente sia l’indice generale sia l’indice analitico che sono ipertestualmente collegati con le cose a cui puntano; arrivi subito alla pagina giusta nel punto preciso in cui la cosa collegata è stata collegata.

              • #104136
                Up
                0
                Down
                ::


                Grazie ad entrambi i Claudio! Io in realtà ho letto “L’arte di fare i grafici con LaTeX”. Ho provato comunque prima di rompervi le scatole ad inserire caption. Mettendolo così:
                `
                \begin{tikzpicture}\caption{{\label{ortho1}}
                \begin{axis}
                [xbar,xmin=0,xmax=0.5,
                height=6.5cm,
                xmajorgrids=true,
                ytick pos=left,
                title={Mean },
                xlabel={ mean},
                symbolic y coords={1,1,2,3,4},
                ytick=data,nodes near coords,
                nodes near coords align=%
                {horizontal}]
                \addplot
                [fill=cyan,draw=black]
                coordinates
                {(0.221,1) (0.115,1) (0.106,2) (0.089,3) (0.074,4);
                \end{axis}
                \end{tikzpicture}
                `
                Latex non mi compila, e mi da un errore (“caption outside float”). Capisco bene che studiando uno o più manuali diventerei più bravo. E ti ringrazio molto per la bibliografia. D’altra parte, la comodità di chiedere un consiglio a chi è più esperto su di un forum, piuttosto che migliorarsi, può avere un rendimento maggiore se nella vita non si vuole fare l’impaginatore con LaTeX ma si vogliono imparare le basi per i precipui scopi immediati. Grazie comunque per il tempo che mi hai dedicato e che vorrai dedicarmi, e per il suggerimento.

              • #104137
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  ci credo: \caption funzione solo dentro gli ambienti flottanti; metti tutto l’ambiente tixzpicture dentro un ambiente figure e metti \caption dopo \end{tixzpicture} ma prima di \end{figure}.

                  E non scrivere mai \caption{{\label{…}}, sia perché \label fa scritto dopo il comando \caption con i suoi argomenti, sia perché così facendo ti ritroverai come didascalia solo, per esempio, Figure 3.5: compresi i due punti e senza una didascalia vera a propria.

                  Ripeto quello che sta scritto in ogni guida: la sintassi di \caption è

                  [tt]\caption[/tt][didascalia breve]{didascalia lunga}

                  La didascalia breve è facoltativa, se non viene specificata (e non vengono specificate nemmeno le corrispondenti parentesi quadre) essa vie assunta uguale a didascalia lunga. La didascalia lunga viene composta dopo il segnaposto formato dal nome dell’oggetto flottante seguito dal suo numero, da un separatore, generalmente costituito dai due punti e uno spazio (dipende dalla classe e dai pacchetti usati). La didascalia breve viene trasmessa ai file ausiliari epr comporre la lista delle figure o delle tabelle o degli altri oggetti flottanti.

                  tixpicture non è un abiente flottante; è simile all’ambiente standard di LaTeX picture che serve per fare disegni, similmente a quello che avviene con l’ambiente tikzpicture. Tra (tikz)picture e figure intercorre la stessa relazione che si trova fra gli ambienti tabular e table.

                • #104138
                  Up
                  0
                  Down
                  ::


                  Caro Claudio,
                  grazie ancora per i consigli. Purtroppo continua a non funzionare: scrivendo
                  `
                  \begin{picture}
                  \begin{tikzpicture}
                  \begin{axis}
                  [xbar,xmin=0,xmax=0.5,
                  height=6.5cm,
                  xmajorgrids=true,
                  ytick pos=left,
                  title={Mean},
                  xlabel={ELASI mean},
                  symbolic y coords={Workmen, Employees, Teachers, Managements, White collars, Freelances, Entrepreneurs, Self-Employed, Family-firm Owners, Temporary workers},
                  ytick=data,nodes near coords,
                  nodes near coords align=%
                  {horizontal}]
                  \addplot
                  [fill=cyan,draw=black]
                  coordinates
                  {(0.221,Workmen) (0.115,Employees) (0.106,Teachers) (0.089,Managements) (0.074,White collars) (0.194,Freelances) (0.213,Entrepreneurs) (0.226,Self-Employed) (0.210,Family-firm Owners) (0.322,Temporary workers)};
                  \end{axis}
                  \end{tikzpicture}
                  \caption{\textbf{Mean}}\label{ortho1}
                  \end{picture}`

                  Mi da un errore di compilazione (use of \pictur@ doesn’t match its definition argument). Grazie mille lo stesso.

                • #104139
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    `\begin{figure}
                    \begin{tikzpicture}

                    \end{tikzpicture}
                    \caption{…}\label{..}
                    \end{figure}`Mi scuso dell’errore, visto che nel mio messaggio precedente ho scritto di mettere \caption dopo \end{tikzpicture} e priam di \end{picture}. Lo correggo anche nel precedente messaggio.

                  • #104140
                    Up
                    0
                    Down
                    ::


                    Ma che ti scusi, finalmente funziona! Grazie mille a te per la disponibilità! 😀 😀 😀

                Visualizzazione 12 filoni di risposte
                • Devi essere connesso per rispondere a questo topic.

                Go to top