Problema disposizione immagini e \includepdf

  • Creatore
    Topic
  • #101452
    Up
    0
    Down
    ::


    Buonasera a tutti

    torno a chiedervi un consiglio riguardo un problema molto strano nel quale ci siamo imbattuti durante la redazione di una relazione tecnica. Praticamente il documento deve richiamare spesse volte al suo interno alcune pagine di un altro documento in pdf. Sostanzialmente usiamo latex per scrivere in bella quello che viene fuori da un foglio di calcolo Mathcad (stampato appunto in pdf). La struttura della relazione sarà qualcosa del tipo:

    testo in Latex
    pdf Mathcad
    testo in Latex
    pdf Mathcad
    .
    .
    .

    I problemi sorgono volendo inserire le immagini. Praticamente abbiamo notato che nelle sezioni in cui compare un comando tipo
    `\includepdf[pages={12-18},pagecommand={\thispagestyle{plain}}]{Mathcad1.pdf}
    `
    latex non riesce a posizionare le immagini nei pressi del punto di inserimento ma le mette o in fondo al documento intero o casualmente (per quanto ho capito) in altre sezioni molto lontane. Eppure abbiamo un file “relazione.tex” dove al suo interno si richiamano con \input le varie sezioni. Immaginavo che almeno così si creassero delle “barriere” più forti tra una sezione e l’altra. Abbiamo provato in mille modi ma non abbiamo risolto. Se invece provo a commentare il comando \includepdf sembra che tutto funzioni correttamente.

    Questo è il preambolo, il pacchetto geometry è un refuso che probabilmente sarà tolto lasciando impostato “article” classico.
    `\documentclass[11pt,a4paper,titlepage,twoside]{article}
    \usepackage[T1]{fontenc}
    \usepackage[italian]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{varioref}
    \usepackage{amsmath,amssymb}
    \usepackage[a4paper,margin=3cm,headheight=14pt]{geometry}
    \usepackage{booktabs}
    \usepackage{caption}
    \usepackage{subfig}
    \usepackage{multirow}
    \usepackage{eurosym}
    \usepackage{textcomp}
    \usepackage{microtype}
    \usepackage{indentfirst}
    \usepackage{amsfonts}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \usepackage{graphicx}
    \usepackage[outercaption]{sidecap}
    \usepackage{rotating}
    \usepackage[]{units}
    \usepackage[output-decimal-marker={,},detect-mode]{siunitx}
    \usepackage[final]{pdfpages}
    \graphicspath{{Immagini/}}`

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #101453
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::


        Ciao.
        Ma come le inserisci le immagini, come oggetti mobili?
        Si perché se così è mi sembra che il comportamento di LaTeX sia normale.
        Mica può inserire immagini dentro un pdf inseriro con \includepdf no?
        R.

      • #101454
        Up
        0
        Down
        ::


        Mi sembrava di essere stato chiaro nella spiegazione. NON ho mai detto che le immagini le voglio includere dentro il file pdf, che ovviamente è un file semplicemente richiamato dall’esterno e non modificabile da latex. Io voglio includere le immagini come oggetti mobili nel testo composto su latex!
        Faccio un esempio:

        `\begin{document}

        \section{Gruppi costitutivi della macchina}

        Come specificato in precedenza lo sviluppo del progetto è stato articolato dividendo il sistema di cambio in due macroblocchi…

        \begin{figure}[htp]
        \centering
        \includegraphics[scale=0.3]{Assiemetotale}
        \caption{Assieme totale}
        \end{figure}

        \includepdf[pages={1-5},pagecommand={\thispagestyle{plain}}]{Mathcad1.pdf}

        \end{document}`

        Se voglio mettere una figura in questa sezione, latex la posiziona dove gli pare! O in altre sezione a decine di pagine di distanza o in fondo al documento. Se invece commento il comando \includepdf allora l’immagine è inserita correttamente. Come mai c’è questo comportamento anomalo con il comando \includepdf? Cioè se deve funzionare così male scombinando tutto, piuttosto non inseriamo le pagine pdf in latex ma facciamo un taglia e cuci con adobe acrobat e numeriamo le pagine da lì. Pensavo che la potenza di latex però fosse anche questa.

      • #101455
        Up
        0
        Down
        ::

        ste_unipi” post=101204Mi sembrava di essere stato chiaro nella spiegazione. NON ho mai detto che le immagini le voglio includere dentro il file pdf, che ovviamente è un file semplicemente richiamato dall’esterno e non modificabile da latex. Io voglio includere le immagini come oggetti mobili nel testo composto su latex!

        Guarda che anch’io trovo che la tua esposizione del problema sia un po’ confusa. In sostanza, mi sembra di capire che vuoi includere:

        • una o più figure normali, come oggetti mobili, contenenti delle immagini incluse con [tt]\includegraphics[/tt], seguite da
        • una serie di pagine “preconfezionate”, incluse con [tt]\includepdf[/tt].

        La tua lamentela sembrerebbe riguardare il fatto (ma non è del tutto chiaro che sia proprio così) che, quando è presente il comando [tt]\includepdf[/tt], la figura mobile “slitta” dopo le pagine incluse.

        Se è questo il problema, la questione è arcinota: gli oggetti mobili si chiamano così proprio perché il LaTeX è libero di spostarli dove vuole per migliorare l’impaginazione. Se il LaTeX, in base a certi suoi criteri troppo complicati per poter essere spiegati qui, ritiene che la figura rovini le proporzioni della pagina che precede quelle incluse con [tt]\includepdf[/tt] (anche se magari la figura “ci sta” in quella pagina: ci starebbe, ma ne rovina le proporzioni), ebbene, decide di spostarla dopo tali pagine, nel primo punto che giudichi “accettabile”.

        Esiste un modo per dire al LaTeX «voglio che tutte le figure specificate fino a questo punto X del file sorgente vengano obbligatoriamente stampate prima di tutto ciò che, nel file sorgente, segue il punto X»? Certo che sì, e anche questo è ben noto: basta scrivere, nel punto X, il comando`\clearpage`Questo crea quella che, seguendo una tua metafora, potremmo chiamare una «barriera»; però, dà anche inizio a una nuova pagina.

        Il fatto che [tt]\clearpage[/tt] inizi una nuova pagina a te va benissimo, perché devono seguire le pagine incluse con [tt]\includepdf[/tt]; in definitiva, mi sembra che scrivendo`\clearpage
        \includepdf[…]{…}`dovresti risolvere il tuo problema.

        Nota che il comando [tt]\input[/tt], al contrario, non crea alcuna barriera di questo tipo (né di altri tipi), tanto che potrebbe essere usato anche nel mezzo di una parola:`precipit\input{frammento}lmente`Se il file [tt]frammento.tex[/tt] contiene`evolissimevo%`la stampa prodotta è quella che uno si aspetta. (In effetti, [tt]\input[/tt] viene gestito durante la fase di espansione, non è un comando dello “stomaco”.) Barriere del tipo che abbiamo menzionato sopra vengono invece create da [tt]\include[/tt].

        Ciao.


        Gustavo

      • #101456
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Il tuo codice`Come specificato in precedenza lo sviluppo del progetto è stato articolato dividendo il sistema di cambio in due macroblocchi…

          \begin{figure}[htp]
          \centering
          \includegraphics[scale=0.3]{Assiemetotale}
          \caption{Assieme totale}
          \end{figure}

          \includepdf[pages={1-5},pagecommand={\thispagestyle{plain}}]{Mathcad1.pdf}`impne a LaTeX di fare esattamente quello che tu lamenti che faccia.
          Vediamo se riesco a spiegarti il perché.

          Le opzioni di posizione htp che dai all’ambiente mobile figure, impongono a LaTeX di mettere l’oggetto monile solo “qui, se ci si riesce”, “in testa alla pagina” o, infine, in una pagina di soli oggetti flottanti.

          Ora se anche nella pagina prima degli oggetti inclusi ha già del testo non può usare l’opzione t, anche se ci sarebbe il posto per mettere la figura; resta l’opzione h per la quale LaTeX richiede che la figura non superi in altezza una certa frazione dell’altezza dela gabbia, frazione che è relativamente piccola; siccome dipende da classe a classe, è difficile dire a quanto ammonti, ma si aggira attorno al 30% -siccome si ottiene per differenza non è facile dire quanto valga in realtà perché dipende dalla presenza dei floato in testa e al piede nella stessa pagina e alla frazione minima di testo necessaria in una pagina che contenga anche float. Dunque se il testo è troopo poco o se la figura che vorresti inserire supera la frazione consentita, anche la posizione h rimane fuori gioco. dunque LaTeX non ha altra scelta che metteral in coda e “sputarla fuori” solo dopo che sono state inserite le pagine incluse, dove avrebbe la possibilità di usare ancora le opzioni t e p; ma se dopo le pagine incluse comincia un nuovo capitolo, o se vengono incluse altre pagine, resta agibile solo l’opzione p e così LaTeX mette la figura lì, lontano dal punto dove l’avresti voluta vedere.

          Come fare? Letteracopd ti suggerisce di usare \clearpage; di per se questo comando svuot ala code degli oggetti flottanti, ma questi, comunque vengono posti dove le opzioni di posizione consentirebbero loro, tanne l’opzione h, restano t e p; ma dopo si comincia subito una nuova pagina per inserire le pagine incluse, e allora solo p è valida. Hai; ci siamo daccapo; la figura rimane vicina ma in una paigna a se stante.

          Altre soluzioni da provare:

          1) ridurre le dimensioni della igura da includere;
          2) togliere l’opzione h e mettere l’opzione b;
          3) tra le opzioni di posizione aggiunger l’opzione ! (punto esclamativo)
          4) due delle tre soluzioni precdeenti;
          5) tutte tre le prime tre soluzioni.

          Non è detto che queste 5 soluzioni ti diano soddisfazione; resta un ulteriore soluzione:
          6) non rendere mobile l’oggetto: lo metti dentro un ambiente center e sotto ci metti la didascalia non con \caption ma con il comando \captionof definito dal pacchetto caption (che a questo punto devi assolutamente caricare nel tuo preambolo)

          Non ci sta ancora e si sposta nella pagina successiva? riduci le dimensioni dell’immagine o rassegnati ad avere al figura da sola prima delle paigne incluse usando semplicemente \clearpage.

        • #101457
          Up
          0
          Down
          ::


          Aggiorno la situazione dopo un primo velocissimo test a cui ne seguiranno altri molto più accurati.

          L’opzione

          `\clearpage`

          in effetti consente di mettere l’immagine in una pagina a se stante, devo provare se riducendo le dimensioni magari riesce a entrare anche nella stessa pagina del testo. La cosa buffa è che le pagine scritte con Latex contengono poco testo nella parte alta e poi oltre mezza pagina rimane vuota prima di \includepdf. Per questo non capisco come Latex non inserisse le figure in quello spazio enorme anche se erano grandi come un francobollo! Ora credo di aver capito la spiegazione. In effetti sono talmente abituato a scrivere [htp] che non avevo considerato l’opzione .

          Cerco di mettere in pratica le soluzioni consigliate e vi farò sapere. Grazie per ora del supporto come sempre precisissimo ed esaustivo!

          EDIT: con le prove che ho fatto per adesso non vado oltre l’inserimento di una figura in un pagina nuova anche se essa è molto piccola. Non ci credo che latex preferisca inserire una figura minuscola in una pagina a se stante piuttosto di metterla sotto qualche riga di testo (lasciando così 3/4 di pagina bianca). Proverò a non rendere la figura flottante ma devo capire intanto come si fa 😕

          EDIT 2: con oppure [h!] sembra che le cose vadano nettamente meglio! Ho provato inoltre a rendere la figura non flottante e anche in quel caso funziona ma la tengo come ultima spiaggia. Grazie per ora, spero non sorgano altri problemi!

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

      Go to top