come evitare la creazione della nuova pagina?

  • Creatore
    Topic
  • #18709
    Up
    0
    Down
    ::


    Ciao a tutti,
    questo è il mio primo post, vorrei quindi cogliere l’occasione per salutare tutti.

    Prima di esporvi il mio problema, premetto che genero il file latex da uno script php, che estrae le informazioni da un database, quindi non ho un controllo molto fine sul documento.

    Il problema è il seguente: devo generare una quantità smodata di tabelle contenente delle informazioni prelevate da un db, e prima di ogni tabella devo mettere un:
    \section*{NomeSezione}
    inizio subito dopo la tabella con un
    \begin{longtable}{| l | p{10cm} | c | r |}
    (posso infatti avere delle tabelle a volte molto lunghe che si spezzano su diverse pagine)

    alcune volte succede però che il titolo della sezione sia a fondo pagina, e quindi la tabella correlata inizi nella pagina successiva; capirete che a questo punto preferirei poter mandare nella pagina successiva anche il titolo di sezione. come posso fare in modo che il titolo della sezione vada nella pagina successiva?

    Esiste per esempio qualcosa che mi dica in quale posizione della pagina (qualcosa che mi restistuisca la coordinata Y nella pagina) sono attualmente e così poter decidere se creare una nuova pagina?

    grazie a tutti per l’aiuto
    Ignazio

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #18710
      Up
      0
      Down
      ::

      Ciao a tutti,
      questo è il mio primo post, vorrei quindi cogliere l’occasione per salutare tutti.

      Prima di esporvi il mio problema, premetto che genero il file latex da uno script php, che estrae le informazioni da un database, quindi non ho un controllo molto fine sul documento.

      Il problema è il seguente: devo generare una quantità smodata di tabelle contenente delle informazioni prelevate da un db, e prima di ogni tabella devo mettere un:
      \section*{NomeSezione}
      inizio subito dopo la tabella con un
      \begin{longtable}{| l | p{10cm} | c | r |}
      (posso infatti avere delle tabelle a volte molto lunghe che si spezzano su diverse pagine)

      alcune volte succede però che il titolo della sezione sia a fondo pagina, e quindi la tabella correlata inizi nella pagina successiva; capirete che a questo punto preferirei poter mandare nella pagina successiva anche il titolo di sezione. come posso fare in modo che il titolo della sezione vada nella pagina successiva?

      Esiste per esempio qualcosa che mi dica in quale posizione della pagina (qualcosa che mi restistuisca la coordinata Y nella pagina) sono attualmente e così poter decidere se creare una nuova pagina?

      L’argomento non è di tipografia, ma TeXnico, quindi lo sposto nel forum più adatto.

      Normalmente il testo che segue un titolo di sezione non può essere separato dal titolo stesso, come è evidente. Ma con longtable il problema si pone, perché prima di cominciare, l’ambiente dà un comando che permette un cambio pagina.

      Puoi provare, ma non garantisco, a ridefinire l’ambiente:
      `\makeatletter
      \def\longtable{%
      %%%% \par %%%% tolgo questo \par, incrociamo le dita
      \ifx\multicols\@undefined
      \else
      \ifnum\col@number>\@ne
      \@twocolumntrue
      \fi
      \fi
      \if@twocolumn
      \LT@err{longtable not in 1-column mode}\@ehc
      \fi
      \begingroup
      \@ifnextchar[\LT@array{\LT@array[x]}}
      \makeatother`
      Sicuro sicuro di tutti quei riquadri nella tabella?

      Ciao
      Enrico

    • #18711
      Up
      0
      Down
      ::


      non mi sono certo presentato per bene, il mio primo post e già sbaglio la sezione, scusate 🙂

      grazie per la tua risposta egreg9, solo una cosa non mi è chiara, il codice che mi hai dato lo devo mettere nell’intestazione del documento, ovvero prima di begin{document} giusto?

      Grazie
      Ignazio

    • #18712
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        solo una cosa non mi è chiara, il codice che mi hai dato lo devo mettere nell’intestazione del documento, ovvero prima di begin{document} giusto?

        Sì, nel preambolo.

        Ciao,
        L.

      • #18713
        Up
        0
        Down
        ::

        non mi sono certo presentato per bene, il mio primo post e già sbaglio la sezione, scusate 🙂

        grazie per la tua risposta egreg9, solo una cosa non mi è chiara, il codice che mi hai dato lo devo mettere nell’intestazione del documento, ovvero prima di begin{document} giusto?

        Niente paura, non sei il primo.

        Il codice va nel preambolo che di solito va strutturato così:
        – dichiarazione della classe
        – caricamento dei pacchetti
        – selezione di eventuali configurazioni
        – comandi personali o modifiche dei comandi forniti dai pacchetti
        – \begin{document}

        Ciao
        Enrico

      • #18714
        Up
        0
        Down
        ::


        Grazie,

        allora l’ho messo nel punto giusto, ma purtroppo non funziona… continua a scrivermi il titolo della sezione a fondo pagina(quando capita che finisca a fondo pagina ovviamente) e poi inizia la tabella nella pagina successiva…

        c’è un modo per farmi restituire la coordinata Y alla quale sono arrivato nella pagina attuale? magari potrei risolvere in questo modo con qualcosa tipo:

        if(coordinatay > valore_prossimo_al_fondo_pagina)
        \newpage
        (visto che come ho detto sto generando il file .tex da un linguaggio di programmazione sarebbe semplicissimo in questo modo).

        Tornando alla domanda che mi hai fatto nella prima risposta che mi hai dato, ovvero: “Sicuro sicuro di tutti quei riquadri nella tabella?”

        Si, devo intabellare i dati e mostrare delle cellette, me lo sconsigli per una questione stilistica o per una questione di ottimizzazione del codice?

        Grazie
        Ignazio

      • #18715
        Up
        0
        Down
        ::

        Grazie,

        allora l’ho messo nel punto giusto, ma purtroppo non funziona… continua a scrivermi il titolo della sezione a fondo pagina(quando capita che finisca a fondo pagina ovviamente) e poi inizia la tabella nella pagina successiva…

        c’è un modo per farmi restituire la coordinata Y alla quale sono arrivato nella pagina attuale? magari potrei risolvere in questo modo con qualcosa tipo:

        if(coordinatay > valore_prossimo_al_fondo_pagina)
        \newpage
        (visto che come ho detto sto generando il file .tex da un linguaggio di programmazione sarebbe semplicissimo in questo modo).

        Devi programmarlo in TeX, naturalmente. Prova a emettere
        `
        \ifdim\pagetotal > …
        \newpage
        \fi`
        Sostituisci ai puntini una dimensione opportuna, basandoti sulle grandezze in gioco. Il parametro \pagetotal contiene l’altezza della parte di pagina riempita fin qui.

        Tornando alla domanda che mi hai fatto nella prima risposta che mi hai dato, ovvero: “Sicuro sicuro di tutti quei riquadri nella tabella?”

        Si, devo intabellare i dati e mostrare delle cellette, me lo sconsigli per una questione stilistica o per una questione di ottimizzazione del codice?

        Dipende dalle tabelle, certo. Ma le tabelle riquadrate sono brutte sempre.

        Ciao
        Enrico

      • #18716
        Up
        0
        Down
        ::


        Grazie Enrico,
        ho risolto grazie ai tuoi consigli, devo dire che latex è davvero fantastico, lo sto usando da poco più di una settimana (prima usavo fpdf per fare le stampe) e mi ci sto trovando davvero bene, quello che sono riuscito a fare in una settimana con latex non sono riuscito a farlo in un mese con le diverse librerie per pdf.

        Ciao
        Ignazio

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

    Go to top