Allineamento verticale opposto in tabella

  • Creatore
    Topic
  • #30327
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao,
      mi servirebbe una tabella di una riga per due colonne in cui il testo nella prima cella è allineato in basso mentre nella seconda cella in alto.
      Il testo da inserire si trova in oggetti parbox.
      Inoltre la tabella deve avere un altezza minima diciamo di 60mm.
      Ecco del codice esplicito:
      `
      \begin{tabular}{ccc}
      \rule{0pt}{60mm} &
      \parbox{100pt}{protocollo\\protocollo} &
      \parbox{100pt}{testo\\testo\\testo\\testo}
      \end{tabular}
      `

      Nell’esempio di codice, funziona l’allineamento in basso della prima cella e il puntello che garantisce l’altezza voluta della tabella. Per la seconda cella invece non riesco a trovare un idea per allineare in alto il testo.

      Si tratta della composizione affiancata di un tagliando di protocollo (prima cella) e di una serie di indirizzi (seconda cella) di un documento lettera.
      In questo modo se vi sono molti indirizzi il testo si allunga, ma a sinistra il tagliando di protocollo rimane in sempre in basso.
      Anche in caso che gli indirizzi siano molti tanto da superare l’altezza standard del puntello, si ha l’automatico posizionamento in basso del tagliando.

      La magia di LaTeX secondo me è questa: se non si riesce a fare una cosa significa che quello che si ha in mente è … sbagliato.
      Grazie per l’aiuto.

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #30328
        Up
        0
        Down
        ::

        Ciao,
        mi servirebbe una tabella di una riga per due colonne in cui il testo nella prima cella è allineato in basso mentre nella seconda cella in alto.
        Il testo da inserire si trova in oggetti parbox.
        Inoltre la tabella deve avere un altezza minima diciamo di 60mm.
        Ecco del codice esplicito:
        `
        \begin{tabular}{ccc}
        \rule{0pt}{60mm} &
        \parbox{100pt}{protocollo\\protocollo} &
        \parbox{100pt}{testo\\testo\\testo\\testo}
        \end{tabular}
        `

        Nell’esempio di codice, funziona l’allineamento in basso della prima cella e il puntello che garantisce l’altezza voluta della tabella. Per la seconda cella invece non riesco a trovare un idea per allineare in alto il testo.

        Si tratta della composizione affiancata di un tagliando di protocollo (prima cella) e di una serie di indirizzi (seconda cella) di un documento lettera.
        In questo modo se vi sono molti indirizzi il testo si allunga, ma a sinistra il tagliando di protocollo rimane in sempre in basso.
        Anche in caso che gli indirizzi siano molti tanto da superare l’altezza standard del puntello, si ha l’automatico posizionamento in basso del tagliando.

        La magia di LaTeX secondo me è questa: se non si riesce a fare una cosa significa che quello che si ha in mente è … sbagliato.
        Grazie per l’aiuto.

        Così?
        `\usepackage{array}

        \begin{tabular}{b{100pt}b{100pt}}
        protocollo\newline protocollo&
        testo\newline testo\newline testo\newline testo
        \end{tabular}`
        Mi pare che tu intendessi che le celle sono allineate rispetto alle ultime righe.

        Ciao
        Enrico

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

          La magia di LaTeX secondo me è questa: se non si riesce a fare una cosa significa che quello che si ha in mente è … sbagliato.

          Spesso è così, ma… non sempre! 😉

          Ciao,
          L.

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

            La magia di LaTeX secondo me è questa: se non si riesce a fare una cosa significa che quello che si ha in mente è … sbagliato.

            Spesso è così, ma… non sempre! 😉

            Ciao,
            L.

            A volte mi son trovato a percorrere soluzioni che LaTeX si rifiutava di perseguire, per scoprire poco dopo che ne esisteva un’altra ben più valida della prima.

            Questo caso è un eccezione. Infatti ieri sera consultando il Companion in appendice A, ho cominciato ad aggiustare il codice d’esempio riguardante ambienti minipage annidati.
            Quindi il tipo di composizione che volevo si può fare. Non è facile descrivere a parole il meccanismo desiderato:
            Due oggetti affiancati, in cui il secondo è l’insieme degli indirizzi dei destinatari della lettera: al crescere del numero degli indirizzi si riempirà prima lo spazio fino ad arrivare alla baseline, poi, con l’ulteriore aumento di linee, TUTTO aumenterà di altezza.

            Il codice seguente rappresenta l’idea base (ho quindi abbandonato l’oggetto tabular), che funziona a patto di inserire quel \par\vspace{0mm}, anche se non ho capito perché:

            `\documentclass[a4paper]{article}
            \usepackage[margin=15mm]{geometry}
            \usepackage{tikz}
            \newcommand{\hr}{\rule{10mm}{1pt}}

            \begin{document}
            \hr\rule{1pt}{80mm}\hr
            \parbox{50mm}{\tikz{\draw (0,0) rectangle (48mm,25mm);}}% simula il tag di protocollo
            \begin{minipage}{50mm}
            \parbox[t]{1mm}{\vspace{30mm}}
            \parbox[t]{48mm}{Gentle Albert Einstein\\LaTeX Street\\Princeton\\
            \\
            e p.c. Sir Isaac Newton\\London\\
            \\
            e p.c. Doctor Niels Bohr\\Copenaghen\\Denmark}
            \par\vspace{0mm}
            \end{minipage}
            \hr
            \end{document}`

            Chissà se la Fisica assomiglia a LaTeX (od anche la matematica)?
            Grazie a tutti per le risposte.
            Ciao.

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

              Chissà se la Fisica assomiglia a LaTeX (od anche la matematica)?

              Cose in comune ce ne sono di certo. LaTeX piace ai matematici perché “pensa” come loro. Però la tipografia non è una scienza esatta: per esempio, coinvolge concetti come “bello” e “brutto” che appartengono all’estetica, non alla scienza. Ma siamo OT.

              Ciao,
              L.

            • #30332
              Up
              0
              Down
              ::

              [quote]
              La magia di LaTeX secondo me è questa: se non si riesce a fare una cosa significa che quello che si ha in mente è … sbagliato.

              Spesso è così, ma… non sempre! 😉

              Ciao,
              L.

              A volte mi son trovato a percorrere soluzioni che LaTeX si rifiutava di perseguire, per scoprire poco dopo che ne esisteva un’altra ben più valida della prima.

              Questo caso è un eccezione. Infatti ieri sera consultando il Companion in appendice A, ho cominciato ad aggiustare il codice d’esempio riguardante ambienti minipage annidati.
              Quindi il tipo di composizione che volevo si può fare. Non è facile descrivere a parole il meccanismo desiderato:
              Due oggetti affiancati, in cui il secondo è l’insieme degli indirizzi dei destinatari della lettera: al crescere del numero degli indirizzi si riempirà prima lo spazio fino ad arrivare alla baseline, poi, con l’ulteriore aumento di linee, TUTTO aumenterà di altezza.

              Il codice seguente rappresenta l’idea base (ho quindi abbandonato l’oggetto tabular), che funziona a patto di inserire quel \par\vspace{0mm}, anche se non ho capito perché:

              `\documentclass[a4paper]{article}
              \usepackage[margin=15mm]{geometry}
              \usepackage{tikz}
              \newcommand{\hr}{\rule{10mm}{1pt}}

              \begin{document}
              \hr\rule{1pt}{80mm}\hr
              \parbox{50mm}{\tikz{\draw (0,0) rectangle (48mm,25mm);}}% simula il tag di protocollo
              \begin{minipage}{50mm}
              \parbox[t]{1mm}{\vspace{30mm}}
              \parbox[t]{48mm}{Gentle Albert Einstein\\LaTeX Street\\Princeton\\
              \\
              e p.c. Sir Isaac Newton\\London\\
              \\
              e p.c. Doctor Niels Bohr\\Copenaghen\\Denmark}
              \par\vspace{0mm}
              \end{minipage}
              \hr
              \end{document}`

              Chissà se la Fisica assomiglia a LaTeX (od anche la matematica)?[/quote]
              Sinceramente non si capisce molto di quello che desideri.

              Ci sono di sicuro un paio di errori: intanto manca un % dopo la \parbox “vuota” (quella con solo il \vspace); inoltre la seconda \parbox dovrebbe cominciare con \vspace{0pt}, altrimenti la prima riga sta “sopra” rispetto alla posizione che intendi. Te ne rendi conto cambiando la prima \parbox in
              `\parbox[t]{1mm}{\leaders\vrule\vskip30mm}%`
              che rende “visibile” il puntello tracciando un filetto.

              Per capire la necessità del \par\vspace{0pt} in fondo devi studiare la differenza fra \vtop e \vbox e ciò che fanno.

              Ciao
              Enrico

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

                Sinceramente non si capisce molto di quello che desideri.

                Vero. Non sono riuscito a spiegarmi sufficientemente a parole, ma ci riprovo:
                dunque, in un box vi sono un numero di righe di testo variabile che rappresentano uno o più indirizzi di destinatari della lettera.
                L’intenzione è quella di gestire la variabilità dell’altezza di questo testo e, contemporaneamente, di posizionarlo precisamente sulla pagina (ripiegando la pagina per imbustarla l’indirizzo dovrà corrispondere alla finestrella della busta).

                All’aumentare dell’altezza del testo degli indirizzi si riempirà il box che è costruito per avere una certa altezza minima. In caso sia necessario ulteriore spazio, questo sarà ottenuto aumentando l’altezza del box, e quindi spostando verso il basso tutti gli oggetti seguenti della lettera (l’oggetto, Il corpo e le firme).

                Ci sono di sicuro un paio di errori: intanto manca un % dopo la \parbox “vuota” (quella con solo il \vspace); inoltre la seconda \parbox dovrebbe cominciare con \vspace{0pt}, altrimenti la prima riga sta “sopra” rispetto alla posizione che intendi. Te ne rendi conto cambiando la prima \parbox in
                `\parbox[t]{1mm}{\leaders\vrule\vskip30mm}%`
                che rende “visibile” il puntello tracciando un filetto.

                Per lo scopo descritto sopra è stato essenziale il suggerimento di inserire il \vspace{0pt}. Perfetto direi.

                Per capire la necessità del \par\vspace{0pt} in fondo devi studiare la differenza fra \vtop e \vbox e ciò che fanno.

                Ciao
                Enrico

                Mi ero ripromesso di approfondire TeX ed anche in quest’occasione ne viene la necessità.

                In definitiva il codice aggiustato con \vspace e visibile nei post precedenti, svolge egregiamente il suo compito e sono molto soddisfatto.

                Il file di classe a cui appartiene mi permette di scrivere le lettere aziendali molto più rapidamente di quanto è possibile normalmente fare con Word (caspita, non credevo nemmeno io…).

                Ho ancora un po’ di lavoro di perfezionamento da fare, specie per rendere user friendly la sintassi di un comando, ma questo riguarderà un altro post.

                Grazie molte ed alla prossima.

                Ps. Mi occorrerebbe un po’ di tempo per aggiustare il codice se mi chiedeste di pubblicarlo sul forum (contiene dati non pubblici).

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

            Go to top