Impaginazione catalogo non coerente

  • Creatore
    Topic
  • #108078
    Up
    0
    Down
    ::


    Ciao a tutti,
    mi presento: il mio nome è Luigi e sono appassionato di LaTeX da circa 15 anni (lo usai all’università, ma poi per molto tempo non ne ho avuto bisogno).
    Mi sono fatto carico di trasformare un catalogo (di vini) in un modello da usare nelle varie lingue.
    Per fare questo ho usato un sistema modulare:
    un file di definizione di tutte le variabili che appaiono in tabella e che vanno tradotte, una cartella di immagini, una cartella con il nome della lingua con le descrizioni dei prodotti nella rispettiva lingua ed infine una tabella standardizzata per inserire i prodotti (ogni prodotto è un file/tabella).
    Il tutto sarebbe molto carino se non fosse che alcune tabelle risultano senza la linea inferiore aggiunta via \hline.
    Il sorgente risulta essere questo (non tutte le opzioni vengono attivate su tutte le schede:
    `
    \renewcommand{\NomeVino}{}
    \renewcommand{\NomeFile}{}
    \subsubsection{\NomeVino}
    \begin{minipage}{\textwidth}
    \begin{supertabular}{|m{3.551001cm}|m{14.552cm}|}
    \hline
    \centering
    \includegraphics[height=0.25\textheight]{img/\NomeFile}
    &
    \vspace{1,5mm}\Nome \NomeVino
    \newline \Annata \SD
    \newline \Tipo
    \newline \Colore
    \newline \Vitigno
    \newline \Classificazione
    \newline \Regione
    \newline \Gradazione \%o
    \newline \Formato cl
    \newline \Conservazione
    \newline \Servizio $^{\circ}$C – $^{\circ}$C
    \newline \Residuozuccherino gr/l
    \newline \Descrizione \input{\Lingua\NomeFile}
    \\
    \hline
    \end{supertabular}

    %%%%Togliere la % di commento su \begin e su \end per attivare il riquadro
    %\begin{framed}
    %%%%%%%%%%Premi%%%%%%%%%%
    %\end{framed}

    \end{minipage}`
    L’ ambiente minipage serve ad evitare di spezzare la scheda dati tecnici+premi in due pagine diverse. Per soluzioni migliori sono apero a proposte (questa soluzione lascia troppo spazio vuoto tra tabella e frame

    [attachment]giusto_1.pdf[/attachment]

    [attachment]giusto_2.pdf[/attachment]

    [attachment]sbagliato_1.pdf[/attachment]

    [attachment]sbagliato_2.pdf[/attachment]

    Come posso risolvere?
    Il risultato è che alcuni prodotti si trovano ad essere a posto ed altri no avendo lo stesso sorgente…
    Aggiungo un paio di pagine di esempio

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #108079
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Ben tornato, non tanto al forum che 15 anni fa non esisteva, quanto a LaTeX che usasti 15 anni fa.

        Senza un esempio minimo compilabile e con gli attachment in PDF che sono troppo grandi e quindi non sono allegati, è difficile darti una risposta.

        Però, oltre il fatto che \hline, virtualmente, non si usa più, ma le tabelle professionali sono filettate con il pacchetto booktabs (che 15 anni fa forse non c’era), il fatto che tu non veda la linea di chiusura potrebbe essere dovuto al visualizzatore del file PDF sullo schermo; lo schermo potrebbe avere una dnsità di pixel di 72 pixel al pollice; il filetto prodotto con \hline è spesso 0.4 punti, quindi in pratica solo un pixel; se la sua posizione non corrisponde esattamente ad una fila di pixel dello schermo in pratica non lo vedi.
        Prova a ingrandire di 10 volte l’immagine del visualizzatore; potrebbe essere che quell’ultimo filetto salti fuori, perché occuperebbe 9 0 10 pixel.

      • #108080
        Up
        0
        Down
        ::


        Intanto un grazie per le prime informazioni.
        Purtroppo il problema non sono i 9 o 10 punti: anche ingrandendo il pdf a 400% della linea non vedo traccia…
        La cosa strana è che risulta non sempre (è solo su alcune tabelle, di solito quella più in fondo alla pagina, ma non sempre), provo ad allegare due esempi in formato png invece che pdf sperando che questa volta vengano accettati.
        Per quanto riguarda il codice, non ci sono problemi ad allegarlo, solo che come ho detto è fatto a moduli e risulta difficile da importare/compilare

        [attachment=1751]sbagliato1.png[/attachment]

        [attachment=1752]giusto1.png[/attachment]

        [attachment=1753]catalogo-prova.tex[/attachment]

        [attachment=1754]localizzazione-it.tex[/attachment]

        [attachment=1755]MontepulcianobioSognodiVolpe.tex[/attachment]

        [attachment=1756]FortanadelTaro.tex[/attachment]

        [attachment=1758]FortanadelTaro.jpg[/attachment]

        [attachment=1760]FortanadelTaro_2016-09-30.jpg[/attachment]

        [attachment:10]MontepulcianobioSognodiVolpe.jpg[/attachment]

        [attachment=1757]1_template.tex[/attachment]

        L’ultimo file è il template per tutti i nuovi vini…
        purtroppo non posso allegare tutti i file necessari delle sottocartelle per la descrizione poiché hanno lo stesso nome…
        La necessità della tabella è solo per la formattazione: io ho solo 2 colonne ed 1 riga: la colonna a sinistra la foto (dimensione fissa, ma l’avrei voluta con altezza dinamica con l’altezza della tabella) e la colonna di destra per la scheda tecnica. A tutto si aggiunge ogni tanto una riga con le varie medaglie…
        Conoscete un modo migliore per ottenere un risultato più decente? Io provvai con framed ma non riuscivo a gestire bene la cornice…

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


        Eccomi di nuovo con gli aggiornamenti.
        Sono riuscito più o meno a capire il problema.
        Il problema esposto sparisce nel momento in cui la scheda considerata viene spostata sulla pagina successiva (tramite \clearpage).
        A questo punto siccome tale soluzione mi rende complicata (leggi irregolare) l’impaginazione ho cercato delle alternative.
        Ho provato aggiungendo questo codice trovato su internet:

        \usepackage{tikz}
        \usepackage{etoolbox}

        \BeforeBeginEnvironment{supertabular}{\tikzpicture\node[draw=black,thick,inner sep=0pt]\bgroup}
        \AfterEndEnvironment{supertabular}{\egroup;\endtikzpicture}

        Tale soluzione ha il vantaggio di dover ritoccare poco le schede (ho dovuto eliminare i due \hline e il margine esterno in dichiatazione di supertabular (\begin{supertabular}{m{3.551001cm}|m{14.552cm}}).
        Il risultato va bene.
        C’è sono un problema: se non metto io i \clearpage ogni 2 schede, comincia a dare errori che un ambiente non è chiuso correttamente e non compila. Sembra che la mia tabella, usando immagini, riempa l’intero buffer di compilazione almeno degli oggetti float.
        Siccome anche così torno al problema di non avere un numero uguale di schede per pagina in tutto il catalogo, avrei bisogno di capire come aggirare tale limite o come aumentare il buffer a disposizione del compilatore.
        Qualcuno mi può suggerire dove andare a cercare o ha una soluzione a portata di mano?
        Grazie,

        Luigi

      • #108082
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Luigi,
          L’ambiente supertabular dentro una minipage non va bene. supertalbular serve per spezzare una tabella fra più pagine, minipage serve per non spezzare il suo contenuto fra più pagine, dunque…

          Se usi framed, i filetti interni verticali sono superflui; d’altra parte framed serve per incorniciare qualcosa del spezzare su più pagine.

          La soluzione con tikz è barocca e impegna il motore di composizione e la sua memoria in modo incledibile quindi togli assolutamente quella soluzione.

          Poi domandati perché non ci stanno tre schede in ogni pagina; la risposta è semplice: non sono della stessa altezza, a causa essenzialmente dell’altezza della bottiglia; assicurati che vengano tutte le immagini della stessa altezza e che questa non impegni tutta l’altezza della seconda cella di ogni tabella; includile cioè con un comando del tipo`includegraphics[height=6\baselineskip]{img/bottiglia}`All’occorenza usa \scalebox per scalare una scatola (minimpage) con le 13 righe con le caratteristiche del vino; puoi anche pensare di mettere le prime 8 righe un una ‘tabular interna di due colonne allineate a sinistra, in modo che occupi 4 righe invece di 8. Fai cioè in modo che nessuna scheda, compreso il titolo sia superiore a un terzo dello spoazio verticale che hai a disposizione. Ogni scheda sia autonoma e ogni tre schede emetti un \clearpage o semplicemente \newpage; se non ti ci stanno e una va a pagina nuova, vuol dire che sono troppo alte. Ripensa allora all’altezza delle schede; non più di un terzo dello spazio disponibile; non sempre lo spazio disponibile equaivale alla \textheight, perchè qualche pagina potrebbe avere del testo in alto; forse vale la pena allora di comporre \raggedbottom, comunque senza usare float di nessun genere.

          Hai un problema difficile, ma appunto perché difficile devi studiarti bene quello che vuoi ottenere tenendo conto di tutti i limiti che hai; Latex fa l’impossibile, ma per i miracoli ha bisogno di più attenzione…:)

        • #108083
          Up
          0
          Down
          ::


          Me lo ero immaginato: la soluzione era per una tabella con sfondo colorato (con gradiente). Però il problema lo avevo anche con la soluzione precedente.
          Ho usato supertabular solo perché potevo fissare la larghezza delle colonne (con tabular non funziona). Il minipage mi serve per non far separare titolo/sezione e riquadro inferiore dalla tabella.
          Io le immagini in realtà le scalo già inserendo in includegraphics height=0,25 texrheight. Per la verità sono costretto molte volte a ridurre ancora di più quando ho poco testo, altrimenti l’immagine esce dal bordo.
          Tu cosa suggeriresti?
          Io in realtà ho bisogno di un ambiente di altezza fissata (per esempio 0,25 textheight), fissare la larghezza delle colonne, un immagine a sinistra, un testo su più righe a destra, il bordo nero esterno e tra le colonne (non tra le righe di testo).
          Mi è venuto in mente di usare una immagine a sinistra (come ambiente) e la tabella a destra, però rimane il problema del bordo…

        • #108084
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::

            sailorferris” post=108578Me lo ero immaginato: la soluzione era per una tabella con sfondo colorato (con gradiente). Però il problema lo avevo anche con la soluzione precedente.
            Ho usato supertabular solo perché potevo fissare la larghezza delle colonne (con tabular non funziona). Il minipage mi serve per non far separare titolo/sezione e riquadro inferiore dalla tabella.
            Io le immagini in realtà le scalo già inserendo in includegraphics height=0,25 texrheight. Per la verità sono costretto molte volte a ridurre ancora di più quando ho poco testo, altrimenti l’immagine esce dal bordo.
            Tu cosa suggeriresti?
            Io in realtà ho bisogno di un ambiente di altezza fissata (per esempio 0,25 textheight), fissare la larghezza delle colonne, un immagine a sinistra, un testo su più righe a destra, il bordo nero esterno e tra le colonne (non tra le righe di testo).
            Mi è venuto in mente di usare una immagine a sinistra (come ambiente) e la tabella a destra, però rimane il problema del bordo…

            No, non è vero: le specifiche di colonna m{…} funzionano anche con tabular.

            Io senza invocare nessuna tabella userei la sintasii avanzata di minipage e di parbox:
            [tt]\begin{miniapge}[tt][<}[/tt]allineamento verticale della minipage[tt]>[<[/tt]altezza della minipage[tt]>][<[/tt]posizione del contenuto della minipage[tt]>] {<[/tt]giustezza[tt]>}[/tt]

            In sostanza il userei un codice del genere:`
            \fbox{\begin{minipage}[t][0.25\textheight][c]{\dimexpr\textwidth-2\fboxsep-2\fboxrule}
            \def\C{\,$^\circ$C }
            \par\vss
            \begin{minipage}[t]{0.3\textwidth}\includegraphics[height=25mm]{img/bottiglia}\end{minipage}
            \hfill\\vrule\hfill
            \begin{minipage}{0.6\textwidth}\begin{tabular}{ll}
            \NomeVino & \Gradazione \% \\
            \Annata &\Formato \\
            \Tipo & \Conservazione \\
            \Colore & \Servizio \C — \C \\
            \Classificazione & \Residuozuccherino \\
            \Regione & \\
            \\end{tabular}
            \medskip

            \Descrizione
            \end{minipage}} % la seconda parentesi graffa chiude \fbox
            \par\vss} contiene una minipage
            \end{minpage}`(A parte eventuali errori di battitura) il codice che ti ho scritto contiene una \fbox, cha a sua volta contiene una minipage larga quanto basta affinché la \fbox completa deli suoi spazi e del suo contorno sia larga esattamente \textwidth; questa minipage contiene tutto il resto, ma è alta solo 0.25\textwidth. Il suo contenuto è centrato verticalmente, ma i due \vss messi prima e dopo fanno si che se il contenuto supera l’altezza specificata, esce dalla \fbox e allora tu intervieni per scorciare la descrizione o inserire meno cose tabellari.
            La minipage esterna ne contiene altre due larghe 0.3 \textwidth e 0.6\textwidth; puoi cambiare questi valori riducendo il primo e allargando di altrettanto il secondo ma la loro somma deve essere minore dell’unità. Questo spazio che avanza viene ripsrtito fra due spazi elastici che contornano il filetto verticale (che io, di mio, toglierei perché non aggiunge niente al messaggio).
            La prima minipage contiene solo l’immagine della bottiglia scalata ad un valore fisso; io ho messo 25mm, ma puoi mettere il valore che preferisci; se sbagli e lo metti troppo grande la bottiglia esce dalla \fbox sopra e sotto.
            La seconda minipage contiene le caratteristiche del vino; nota che dentro al minipage complessiva ho definito il \comando \C, in modo che non devi stare a scrivere tutte le volte l’intera espressione dei gradi.
            Le due minipage interne sono allineate sul loro asse matematico, quindi saranno sempre allineate correttamante in base al loro contenuto.

            Prova; tentare non nuoce.

          • #108085
            Up
            0
            Down
            ::


            Intanto grazie delle dritte.
            Purtroppo con il tuo codice non ho ottenuto l’effetto desiderato subito, quindi sono passato ad adattare quello che avevo usando i tuoi suggerimenti.
            Adesso mi ritrovo un file master per le schede così:
            `
            \renewcommand{\NomeVino}{}
            \renewcommand{\NomeFile}{}
            \subsubsection{\NomeVino}
            \begin{minipage}[0.25\textheight]{\textwidth}
            \fbox{
            \begin{minipage}{\textwidth}
            \begin{tabular}{m{3.551001cm}|m{14.552cm}}
            \centering
            \includegraphics[height=0.25\textheight]
            {img/\NomeFile}
            &
            \vspace{1,5mm}\Nome \NomeVino
            \newline \Annata
            \newline \Tipo \TipovinoBianco
            \newline \Vitigno
            \newline \Gradazione \%o
            \newline \Formato cl
            \newline \Conservazione \fresco
            \newline \Servizio °C – °C
            \newline \Descrizione \input{\Lingua\NomeFile}
            \\
            \end{tabular}
            \end{minipage}
            }
            %%%%%%%%%%Premi%%%%%%%%%%%%%
            % Da decommentare in caso di premiazioni da citare
            % \fbox{
            % \begin{minipage}{\textwidth}
            %
            % \end{minipage}
            % }
            %%%%%%%%%%%%%%%%%%%%%%%%%%
            \end{minipage}`

            In questo modo posso adattare tutte le schede (oltre 60) con poco sforzo di copy&paste ed il risultato è quello desiderato.
            In questo modo fisso le dimensioni delle schede, però mi sembra che la linea di demarcazione tra bottiglia e scheda non sia alta quanto il riquadro…
            Magari la potrei aggiungere manualmente?

          • #108086
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Non può funzionare, perché la sintassi estesa di minipage richiede tre argomenti facoltativi in un certo ordine; copio dalla pagina 115 della guida tematica Il LATeX Reference Manual commentato (che puoi scaricare liberamente dalla sezione Documentazione di questo sito; ti ocnsiglio di tenertela sempre a portata di mano o di mouse):
              `
              \begin{minipage}[][][]{}

              \end{minipage}`

              L’ordine degli argomenti fra parentesi quadre deve essere rispettato anche se sono facoltativi; per esempio il terzo facoltativo lo puoi mettere o non mettere, ma se lo metti devi avere specificato il secondo; analogamente il secondo argomento facoltativo lo puoi mettere o non mettere, ma sel lo metti, come hai fatto nel tuo codice, devi avere specificato anche il primo, cosa che invece non hai fatto.

              La riga di divisione fra l’immagine e il testo è del tutto superflua: non si capisce anche senza che il testo a destra della bottiglia si riferisce alla bottiglia? D’altra parte la cornice che racchiude immagine della bottiglia e il testo che la descrive mantiene anche logicamente il collegamento semantico fra le due cose; anzi una riga verticale separerebbe in un certo senso questo collegamento semantico. In ogni caso non puoi mettere la riga verticale a mano dentro tabular, dove questo ambiente si gestisce tutto da solo allungando e scorciando come occorre.

              Se il mio ultimo codice non ti funziona, mi piacerebbe sapere perché; secondo me funziona, (salvo errori di battitura), ma siccome non l’ho collaudato nei dettagli, ma ho solo proposto un’idea, mi piacerebbe sapere dove l’idea fallisce.

            • #108087
              Up
              0
              Down
              ::


              Scusa il ritardo della risposta.
              Probabilmente latex riconosce che il primo argomento è h di default dato che non si è lamentato anche dopo oltre 60 schede con lo stesso codice…
              La linea di demarcazione ha solo una funzione estetica e per quello la voglio lasciare, comunque va bene anche così.
              Per quanto riguarda il tuo codice a parte un errore di battitura (mancava una }), ha funzionato, solo che i riquadri non erano allineati:
              il box nero risultava spostato più in basso a destra.
              Dato che comunque avevo capito l’idea, l’ho applicata al mio codice (come hai visto) ed ho ottenuto il risultato desiderato.
              Sinceramente ho visto il tuo codice come molto complesso per un’ operazione che a mio avviso dovrebbe essere implementata a livello base.
              Comunque mi piacerebbe imparare ad usare il LaTeX a livello approfindito come fai tu, che guide hai usato?
              Ma sopratutto, mi piacerebbe imparare a capire quali comandi/pacchetti ci sono per poter utilizzare quello corretto sempre.

            • #108088
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Nessuna guida; lavoro con LaTeX da 30 anni almeno; a quei tempi non esistevano guide. Ho dovuto imparare tutto da solo studiando attentamente solo il TeXbook e il Manuale di Lamport per LaTeX; non ho capito tutto subito, ma a forza di sperimentare ho imparato e chiarito con l’esperienza quello che mi era oscuro dai due libri sopra citati.
                Oggi è molto più facile essere operativi nel giro di due giorni partendo da zero dopo aver letto le guide in italiano che ci sono qui sul forum; ci vogliono sei mesi per essere operativi a livello avanzato; so di una suora di clausura (che non aveva accesso all’esterno e non poteva comunicare con nessuno esternamente al convento) che dopo sei mesi di studio solitario si è messa a comporre un antifonale scrivendo anche la musica in notazione gregoriana. Poi ha avuto il permesso di incontrare in parlatorio qualcuno che poteva darle una mano, e l’antifonale è quasi terminato in modo estremamente professionale.
                Il segreto è documentarsi, sia sulle guide qui del forum nella sezione Documentazione, sia leggendo sempre la documentazione di ogni pacchetto che si usa.

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

            Go to top