Figura sotto il titolo di capitolo o sezione

  • Creatore
    Topic
  • #120191
    Up
    0
    Down
    ::


    Sono un vecchio professore (ahi!), ho scritto un libro molto illustrato (prospettiva) nel quale le figure dovrebbero stare il più possibile vicino al testo, in modo che si possano comodamente confrontare.
    Ho un problema che proprio non riesco a risolvere.
    In certi casi, per ottenere che il testo accompagni la figura, dovrei forzare LaTeX a inserire quest’ultima in testa alla pagina anche in apertura di sezione o capitolo, quindi sopra o sotto il titolo.
    Ho provato con placeins e il comando \FloatBarrier, ma porta tutto nella pagina successiva lasciando il titolo su una pagina bianca.

    Qualcuno ha un suggerimento?
    Grazie per l’aiuto.
    Riccardo

    Ecco un estratto del codice, per chi volesse provare e, in allegato, la figura
    `\documentclass[10pt,twoside]{book}
    \usepackage{calc}
    \usepackage[paperwidth=18.5cm, paperheight=28cm, twocolumn, columnsep=1cm, inner=3.3cm, outer=1.7cm, top=2.7cm, bottom=2.7cm]{geometry}

    \usepackage{caption}
    \captionsetup{tableposition=top,figureposition=bottom,font=small}

    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{fancyhdr}
    \usepackage[polutonikogreek,italian]{babel}
    \usepackage{textcomp}
    \usepackage{lipsum}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage[inline]{enumitem}

    \usepackage{txfonts}
    \usepackage{graphicx}

    \usepackage[section]{placeins}

    \begin{document}
    \chapter{Capitolo 1}

    \section*{Sezione 1}

    \begin{figure*}[tpb]
    \centering
    \includegraphics[width=1\linewidth]{Figura_005}
    \caption{testo ***************}
    \label{fig:figura005}
    \end{figure*}

    \FloatBarrier
    \lipsum[1-6]

    \end{document}`

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 15 filoni di risposte
  • Autore
    Risposte
    • #120192
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        LaTeX di suo non consente di metter un oggetto “flottante” subito dopo un comando di sezionamento.
        Lo si potrebbe fare ma bisogna ricorerrere a sporchi trucchi; in particolare bisogna ricorrere a una minipage e dopo aver incluso l’immagine con \inclufegraphics, bisogna introdurre la didascalia con il comando \captionof.

      • #120193
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Ti informo anche che polutonicogreek e veccho e sorpassato; vero che usa la scrittura del greco moderno con moltti accenti. ma le cesure corretta in fin di riga so ottiene con greek.ancient.

        • #120194
          Up
          0
          Down
          ::


          Innanzitutto grazie molte per il tuo paziente aiuto. E anche per il suggerimento sul greco!
          Uso LaTeX da molti anni, in realtà, e visto che ho qui l’opportunità di parlare con qualcuno che lo apprezza, vorrei dire che LaTeX non solo aiuta a impaginare e strutturare correttamente un testo ma, ciò che è più importante, aiuta a scriverlo, nel senso che aiuta a pensare.
          Quando insegnavo ho anche cercato di promuoverlo tra i miei allievi del Dottorato, ma senza successo. Peccato!

          Ciò detto, e scusandomi per lo sfogo, avevo provato con minipage ma succede che la seconda colonna del testo si sovrappone alla figura.
          Lo so che è una forzatura, ma in certi casi è necessario, per migliorare la leggibilità del testo.

          C’è altro che posso tentare?

          Ho forse fatto qualche errore nell’uso di minipage?
          Ecco il codice aggiornato (la figura l’ho postata prima):

          `\documentclass[10pt,twoside]{book}
          \usepackage{calc}
          \usepackage[paperwidth=18.5cm, paperheight=28cm, twocolumn, columnsep=1cm, inner=3.3cm, outer=1.7cm, top=2.7cm, bottom=2.7cm]{geometry}

          \usepackage{caption}
          \captionsetup{tableposition=top,figureposition=bottom,font=small}

          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage{fancyhdr}
          \usepackage[greek.ancient,italian]{babel}
          \usepackage{textcomp}
          \usepackage{lipsum}
          \usepackage{amsmath}
          \usepackage{amsfonts}
          \usepackage{amssymb}
          \usepackage[inline]{enumitem}

          \usepackage{txfonts}
          \usepackage{graphicx}

          \usepackage[section]{placeins}

          \begin{document}
          \chapter{Capitolo 1}

          \section*{Sezione 1}

          \begin{minipage}[c]{ \textwidth}
          \includegraphics[width=\textwidth]{Figura_005}
          \label{fig:figura005}
          \end{minipage}

          \lipsum[1-6]

          \end{document}`

        • #120195
          samiel
          Partecipante
            Up
            0
            Down
            ::


            In generale, non carichi i pacchetti nell’ordine corretto.
            Dopo la classe del documento vanno quelli per la codifica.
            È superfluo specificare l’opzione twoside per la classe book.
            È superfluo caricare amssymb, se carichi già amsfonts.
            Se vuoi (non l’ho capito bene dal tuo post) che la figura occupi
            una sola colonna, devi usare [tt]\columnwidth[/tt] e non [tt]\textwidth[/tt]

            [attachment=2633]Schermatadel2021-07-1712-33-42.png[/attachment]

            m

            PS
            racchiudi il codice nei tag opportuni

            Attachments:
            You must be logged in to view attached files.
          • #120196
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::


              L’opzione H del pacchetto float ti può aiutare: va usata con moderazione e solo in sede di revisione finale, perché può comportare molti aggiustamenti di impaginazione.
              `\documentclass{book}
              \usepackage{float,lipsum,tikz}

              \begin{document}
              \chapter{Lorem}

              \section{Ipsum}

              \begin{figure}[H]
              \centering
              \begin{tikzpicture}
              \draw (0,0) rectangle (10,5);
              \end{tikzpicture}
              \caption{Dida.}
              \end{figure}

              \lipsum

              \end{document}`

            • #120197
              Up
              0
              Down
              ::


              Grazie a tutti!
              Spero di avere interpretato correttamente i vostri suggerimenti (vedi codice sotto) tuttavia il problema persiste.
              Allego cattura schermo per maggior chiarezza.
              Dopo aver collocato correttamente la figura, il flusso di testo prosegue il suo cammino e la seconda colonna parte in alto a destra e scende sovrapponendosi alla figura, invece di ripartire SOTTO la figura.
              Vi garantisco che le ho provate tutte: speravo nel comando \FloatBarrier di placeins, che ha un bel nome evocativo del comportamento che io desidero, ma … niente da fare.
              è come se l’ordine di stampare su due colonne, eseguito dopo l’ambiente Figure o il Minipage, ignorasse ciò che precede.

              Scusate (sono nuovo del Forum) come si fa a caricare il codice con il fondo come fate voi?

              Grazie ancora
              `
              \documentclass[10pt]{book}
              \usepackage[T1]{fontenc}
              \usepackage[utf8]{inputenc}

              \usepackage{calc}
              \usepackage[paperwidth=18.5cm, paperheight=28cm, twocolumn, columnsep=1cm, inner=3.3cm, outer=1.7cm, top=2.7cm, bottom=2.7cm]{geometry}

              \usepackage{caption}
              \captionsetup{tableposition=top,figureposition=bottom,font=small}

              \usepackage{fancyhdr}
              \usepackage[polutonikogreek,italian]{babel}
              \usepackage{textcomp}
              %\usepackage{lipsum}
              \usepackage{amsmath}
              \usepackage{amsfonts}

              \usepackage[inline]{enumitem}

              \usepackage{txfonts}
              \usepackage{graphicx}

              \usepackage[section]{placeins}
              \usepackage{float}
              \usepackage{comment}

              \usepackage{float,lipsum,tikz}

              \begin{document}
              \chapter{Lorem}

              \section{Ipsum}

              \begin{figure}[H]
              \centering
              \begin{tikzpicture}
              \draw (0,0) rectangle (10,5);
              \end{tikzpicture}
              \caption{Dida.}
              \end{figure}

              \lipsum

              \end{document}
              `

              Attachments:
              You must be logged in to view attached files.
            • #120198
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::


                `\documentclass[twocolumn]{book}
                \usepackage{float,lipsum,tikz}

                \begin{document}
                \chapter{Lorem}

                \section{Ipsum}

                \begin{figure}[H]
                \centering
                \begin{tikzpicture}
                \draw (0,0) rectangle (\columnwidth,3);
                \end{tikzpicture}
                \caption{Dida.}
                \end{figure}

                \lipsum

                \end{document}`
                Meglio?

              • #120199
                samiel
                Partecipante
                  Up
                  0
                  Down
                  ::


                  fin qui c’ero arrivato anch’io.
                  ma prova a lasciare un’immagine a \textwidth
                  e in effetti si sovrappone alla seconda colonna…

                  la difficoltà sta nel combinare due cose che separatamente mi vengono,
                  ovvero (1) piazzare l’immagine subito dopo sotto il titolo
                  e (2) far sì che non si sovrapponga alla colonna di destra

                  m

                • #120200
                  Heinrich Fleck
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Segui questo link: <>, di Barbara Beeton, pubblicato su ArsTexnica:

                    [code]
                    https://www.guitex.org/home/numero-19-aprile-2015
                    [code]

                    La soluzione è abbastanza copmplessa, si usa minipage larga \textwidth nascosta dentro una \makebox e poi la si infila in un ambiente figure non asteriscato e col codice di posizionamento [!b]. Non è facile ottenere quanto la Beeton spiega, a me in un caso non è riuscito, ma altri più esperti di me sapranno maneggiare meglio il codice. Il riferimento all’articolo mi fu segnalato mesi fa da OldClaudio, io l’avevo dimenticato. Non credo sia possibile l’inserimento in testa alla pagina.

                    Ciao ed eventualmente fammi sapere, Enrico M.

                  • #120201
                    samiel
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      tutto funziona senza difficoltà accontentandosi di avere una immagine
                      larga quanto una colonna, come da schermata che ho postato prima…

                      m

                    • #120202
                      Up
                      0
                      Down
                      ::


                      Caro Samiel,
                      il problema è che non posso accontentarmi.
                      Immagina di avere un testo che, a inizio capitolo e dopo due righe, fa riferimento a una figura che deve essere letta in successione su singoli suoi dettagli: 1, 2 … etc. come avviene quando vuoi spiegare una costruzione geometrica.
                      La figura non può essere larga una sola colonna e non può stare nella pagina successiva che, oltretutto, è sul retro del foglio.
                      E in un libro di 400 pagine può capitare più volte.
                      Sarebbe bello trovare una soluzione!
                      Nell’ultimo numero di Ars TeXnica c’è un articolo di Beccari e Fleck che illustra il package swfigure: molto interessante, ma purtroppo anche questo non risolve il mio problema, anche se offre nuove possibilità che sfrutterò senz’altro in altre occasioni.
                      Il ‘metodo Beeton’ è anche notevole, perché mira esattamente sul bersaglio, ma anche in questo caso non riesco a ottenere che la seconda colonna non si sovrapponga alla figura (anche perché debbo usare l’opzione t invece di b).

                      Ma …. il metodo Beeton mi h fatto venire in mente la soluzione, che potremmo chiamare:
                      IL PIU’ SPORCO DEGLI SPORCHI TRUCCHI
                      e cioè: basta imporre a LaTeX di saltare le righe che vuole scrivere a tutti i costi sopra la figura e lui, buono buono, lo fa.
                      Speriamo che non voglia vendicarsi poi, ma non mi pare.
                      Così il codice è questo che segue (ho dovuto inserire testo e non lipsum per provare) vedi, a un certo punto che deve essere ‘studiato’ il comando \\[ n cm]: GRAZIE a tutti coloro che mi hanno aiutato e sempre aperto ad ascoltare soluzioni meno rozze.

                      `\usepackage{amsfonts}

                      \usepackage[inline]{enumitem}

                      \usepackage{txfonts}
                      \usepackage{graphicx}
                      \usepackage{float,lipsum}
                      \begin{document}
                      \chapter{Lorem}

                      \section{Ipsum}
                      \begin{figure}[H]
                      \includegraphics[width=2.2\linewidth]{Figura_005}
                      \caption{Didascalia lunga}
                      \label{fig:figura005}
                      \end{figure}

                      Abbiamo già una volta ricordato che due rette incidenti, e perciò complanari, sono ortogonali quando dividono il piano in quattro angoli eguali (Euclide, I, def. X)\cite{Euclide_1970}.
                      Nello spazio, una retta è perpendicolare ad un piano, quando forma angoli retti con tutte le rette del piano che passano per il suo punto \textbf{piede} (Euclide, XI, def. III)\index{Euclide}. Il piede è il punto che la retta e il piano hanno in comune, cioè il loro \textbf{punto intersezione}.
                      Dopo avere stabilito queste definizioni, Euclide dimostra che, se una retta forma angoli retti con due sole rette di un piano, che passano per il suo piede, essa è perpendicolare al piano (Euclide, XI, 4). Di conseguenza, quando una retta è perpendicolare a due rette di un piano, è perpendicolare anche a tutte le altre rette del piano.
                      Euclide dimostra, altresì, che se una retta è perpendicolare ad un piano, tutti i pia- \\
                      \\[8.8cm]
                      ni che le appartengono sono anche perpendicolari a quel piano (Euclide, XI, 18) e che due piani, che siano entrambi perpendicolari
                      ad un terzo piano, si tagliano secondo una retta perpendicolare a quel piano (Euclide, XI, 19).La retta $g$ appartiene al piano geometrale e, dunque, è orizzontale, come tutte le rette di $\alpha$ che le sono parallele. I punti di una qualsiasi retta $o$ di $\alpha$, che sia parallela a $g$, hanno tutti la stessa quota, rispetto a $\pi_1$ e perciò la $o$ si dice \textbf{linea di livello}.La retta $p$ è ortogonale a $g$ e, perciò, anche a $o$ e dunque descrive il più breve tragitto che si possa percorrere per passare da $o$ a $g$, infatti questa è la via percorsa dall'acqua che scivola su un piano inclinato, come ad esempio, un tetto. La retta $p$ si dice \textbf{retta di massima pendenza} del piano $\alpha$.

                      La retta $p_1$ si dice \textbf{proiezione ortogonale} di $p$ su $\pi_1$ o, in modo più diretto, \textbf{proiezione geometrale} di $p$.
                      L'angolo $\angle pp_1$ si dice \textbf{angolo di pendenza} della retta $p$ e, poiché $p$ è la retta di massima pendenza del piano $\alpha$, questo è anche l'\textbf{angolo di pendio} del piano $\alpha$.

                      Ora è evidente, che qualsiasi retta $r$ di $\alpha$, che non sia parallela a $p$, forma con la propria proiezione geometrale $r_1$ un angolo più piccolo dell'angolo $\angle pp_1$. Questo angolo si annulla quando la retta $r$ assume la direzione di $g$ ed è, perciò, anch'essa orizzontale.
                      \lipsum
                      \end{document}`

                      Attachments:
                      You must be logged in to view attached files.
                    • #120203
                      samiel
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        serve una magia da autentici guru
                        (e qui peraltro ce n’è uno dei maggiori)…

                        in ogni caso, prova a scrivere su TeX – LaTeX Stack Exchange
                        dove trovi espertissimi. così poi anche noi verremo a parte del mistero

                        m

                        PS
                        il codice devi racchiuderlo fra i tag per il codice:
                        `codice`
                        anche usando il tasto che trovi fra le icone in alto

                      • #120204
                        Up
                        0
                        Down
                        ::


                        Un ultimo mio intervento solo per mettere un po’ d’ordine: era la mia prima esperienza e ho fatto parecchia confusione.

                        Dunque, il problema è inserire una figura sotto il titolo di Capitolo o di sezione che prenda due colonne del testo così impaginato.
                        La soluzione che ho trovato, con l’aiuto di tutti voi, è sicuramente una forzatura, ma funziona.
                        Bisogna, innanzitutto, caricare il pacchetto float, per poter usare l’opzione H di posizione della figura.
                        Poi si carica la figura nel posto giusto con questo codice:

                        `\begin{figure}[H]
                        \begin{minipage}{\textwidth}
                        \centering
                        \includegraphics[width=1\linewidth]{nome_del_file_figura}
                        \caption{didascalia lunga}
                        \label{fig:nome_del_file_figura}
                        \end{minipage}
                        \end{figure}`

                        Compilando, si noterà, a questo punto, che LaTeX sovrappone alla figura il testo della seconda colonna.
                        Bisogna, allora, posizionare \\ subito dopo l’ultima parola della prima colonna e, a capo, \\[n cm] dove n cm (o pt o mm etc.) sta per l’altezza dello spazio che LaTeX deve saltare, liberando così la figura.

                        Infine ho notato che, usando \makebox come altrove suggerito nel forum, si può anche fare in modo che la figura vada da bordo a bordo o comunque superi la larghezza del testo (non mi piace, ma forse è utile saperlo).

                        Cordialissimi saluti,
                        Riccardo

                      • #120205
                        Up
                        0
                        Down
                        ::


                        Ciao. Mi sono trovato per caso a leggere la tua domanda e spero tu abbia trovato la risposta al tuo problema visto che è passato un bel po’ di tempo.
                        Nel caso contrario prova ad usare questa scappatoia:

                        `
                        \documentclass[a4paper,10pt,twocolumn]{memoir} % dovrebbe funzionare anche con altre classi (provare non costa nulla)
                        \usepackage[T1]{fontenc}
                        \usepackage[utf8]{inputenc}
                        \usepackage{lipsum}
                        \usepackage{graphicx}
                        \usepackage{cuted}% pacchetto utile per la causa

                        \begin{document}

                        \begin{strip}
                        %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra titolo e figura
                        \includegraphics[width=\textwidth]{example-image}
                        %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra figura e il testo sottostante
                        \end{strip}
                        \lipsum
                        \end{document}
                        `

                        Spero di essere stato d’aiuto.
                        Ciao

                      • #120206
                        OldClaudio
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          Il pacchetto cuted fa più o meno quello che serve per mettere una figura large \textwidth dentro un testo a due colonne.
                          In reatà è gracilino, perché se non è seguito da testo non fa quel che deve fare, inoltre talvolta inserisce degli spazi verticlai che spareggiona le due colonne.
                          `\documentclass[a4paper,10pt,twocolumn]{book} % dovrebbe funzionare anche con altre classi (provare non costa nulla)
                          \usepackage[T1]{fontenc}
                          \usepackage{kantlipsum}
                          \usepackage{graphicx}
                          \usepackage{cuted}% pacchetto utile per la causa

                          \begin{document}
                          \chapter{Test}
                          \kant[1-4]
                          \section{Test twocolumn figure}
                          \begin{strip}
                          %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra titolo e figura
                          \includegraphics[width=\textwidth]{example-image}
                          %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra figura e il testo sottostante
                          \end{strip}
                          \kant[5]
                          \end{document}
                          `Comunuque è meglio dei tentativi manuali necessari con la soluzione di Beeton, anche se bisogna intervenire per correggere alcuni erroretti di spaziatura verticale. Cambia \kant[5] in \kant[5-7] e vidi il difettuccio.
                          Inoltre se non c’è abbastanza spazio nella pagina, inserisce la figura come se fosse dato il codice di posizionamento H (da non usare MAI, nemmeno sotto minaccia delle armi) e la figura sbora in basso uscendo, magari, dalla pagina in basso.
                          Ricordati di specificare nele opzioni greek.ancient e non polutonikogreek; i segni diacritico vengono nello stesso modo, ma la cesura in fin di riga è diversa.
                          Se usi una distribuzione moderna del sistema TeX, lascia perdere la chiamata al pacchetto inputenc, perché ora la codifica di defualt è prprio la codifica utf8

                        • #120207
                          Up
                          0
                          Down
                          ::


                          \documentclass[a4paper,10pt,twocolumn]{memoir} % dovrebbe funzionare anche con altre classi (provare non costa nulla)
                          \usepackage[T1]{fontenc}
                          \usepackage[utf8]{inputenc}
                          \usepackage{lipsum}
                          \usepackage{graphicx}
                          \usepackage{cuted}% pacchetto utile per la causa

                          \begin{document}

                          \begin{strip}
                          %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra titolo e figura
                          \includegraphics[width=\textwidth]{example-image}
                          %\vspace{??} % non indispensabile ma ritengo sia utile per eventuali aggiustamenti dello spazio tra figura e il testo sottostante
                          \end{strip}
                          \lipsum
                          \end{document}

                          Spero di essere stato d’aiuto.
                          Ciao

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

                      Go to top