simulare un foglio excel

  • Creatore
    Topic
  • #78592
    claudio
    Partecipante
      Up
      0
      Down
      ::


      lo dico subito non voglio fare una tabella ma simulare l’aspetto di un foglio excel.
      Rubando (molto) da un post di OldClaudio ho riscritto questo codice
      vi sono due problemi
      1) la colonna con i numeri li centra solo in orizzontale e non
      in verticale
      2) le linee verticali si interrompono mentre dovrebbero essere continue
      come fare?
      3 la cella (0,0) è sbagliata (male minore)
      `
      % !TEX TS-program = pdflatex
      % !TEX encoding = UTF-8 Unicode
      \documentclass{article}
      \usepackage{booktabs,array}

      \newcolumntype{C}[1]{>{\centering}p{#1}}
      % oppure senza argomento
      % \newcolumntype{C}{>{\centering}p{20mm}}

      \begin{document}
      \begin{center}
      \begin{tabular}{|c|*5{C{22.6mm}|}}
      % oppure
      %\begin{tabular}{*5C}
      \toprule
      &A&B&C&D&E\tabularnewline
      \midrule
      1&pippo & pluto & paperino & topolino & minnie \tabularnewline[4.5mm]
      \midrule
      2&paperone & paperoga & qui & quo & qua \tabularnewline[4.5mm]
      \midrule
      3&paperone & paperoga & qui & quo & qua \tabularnewline[4.5mm]
      \midrule
      4&paperone & paperoga & qui & quo & qua \tabularnewline[4.5mm]
      \midrule
      5&paperone & paperoga & qui & quo & qua \tabularnewline[4.5mm]
      \bottomrule
      \end{tabular}

      \end{center}

      \end{document}
      `
      grazie del vostro tempo
      claudio

    Visualizzazione 8 filoni di risposte
    • Autore
      Risposte
      • #78593
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Non puoi usare filetti verticali insieme ai comandi dei filetti orizzontali definiti da booktabs.

          Poi se vuoi avere i contenuti delle celle centrati anche verticalmente devi usare il descrittore m non il descrittore p anche per la prima colonna.

          Leggi attentamente la documentazione di array per allargare verticalmente le righe della tabella e usa i normali comandi \hline in vece dei \…rule di booktabs.

          Certo un foglio di calcolo non è una tabella tipograficamente valida; puoi fare a meno di rispettare le regole tipografiche e quindi di booktabs.

          Prova questo codice`\newcolumntype{M}[1]{>{\centering\rule[-3mm]{0pt}{8mm}}m{#1}}

          \begin{tabular}{@{}|M{6mm}|*5{M{22.6mm}|}@{}}
          % oppure
          %\begin{tabular}{*5C}
          \hline
          &A &B &C &D &E \tabularnewline
          \hline
          1&pippo & pluto & paperino & topolino & minnie \tabularnewline
          \hline
          2&paperone & paperoga & qui & quo & qua \tabularnewline
          \hline
          3&paperone & paperoga & qui & quo & qua \tabularnewline
          \hline
          4&paperone & paperoga & qui & quo & qua \tabularnewline
          \hline
          5&paperone & paperoga & qui & quo & qua \tabularnewline
          \hline
          \end{tabular}`

        • #78594
          claudio
          Partecipante
            Up
            0
            Down
            ::


            Ti ringrazio per la risposta
            e che in questo caso non voglio costruire una tabella ma mi serve un simil foglio excel per inserire del codice esempio
            grazie
            claudio

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


              Stampare il foglio excel in pdf ed inserirlo come immagine?
              R.

            • #78596
              claudio
              Partecipante
                Up
                0
                Down
                ::

                robitex” post=77670Stampare il foglio excel in pdf ed inserirlo come immagine?
                R.

                non mi piace la resa tipografica secondo me non rende
                manca l’omogeneità secondo me
                io includo se non riesco proprio a farne meno.

              • #78597
                claudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  il codice di OldClaudio ha un piccolo problema
                  tutte le righe hanno la stessa altezza
                  mentre la prima riga deve essere piu bassa
                  ho modificato il codice come segue

                  `
                  % !TEX TS-program = pdflatex
                  % !TEX encoding = UTF-8 Unicode
                  \documentclass{article}
                  \usepackage{array}

                  \newcolumntype{C}[1]{>{\centering}p{#1}}
                  % oppure senza argomento
                  % \newcolumntype{C}{>{\centering}p{20mm}}
                  \newcolumntype{M}[1]{>{\centering\rule[-3mm]{0pt}{8mm}}m{#1}}
                  \newcolumntype{N}[1]{>{\centering\rule[-1mm]{0pt}{-1mm}}m{#1}}

                  \begin{document}

                  %\begin{tabular}{@{}|M{6mm}|*5{M{22.6mm}|}@{}}
                  % oppure
                  %\begin{tabular}{*5C}
                  \begin{tabular}{l}
                  %\setlength{\arrayrulewidth}{2pt}
                  \begin{tabular}{|C{6mm}|*5{C{22.6mm}|}}%{|C{6mm}|*5{C{22.6mm}|}@{}}
                  \hline
                  &A &B &C &D &E\tabularnewline
                  \hline
                  \end{tabular}\\
                  \begin{tabular}{@{}|M{6mm}|*5{M{22.6mm}|}@{}}
                  % oppure
                  \firsthline
                  1&pippo & pluto & paperino & topolino & minnie \tabularnewline
                  \hline
                  2&paperone & paperoga & qui & quo & qua \tabularnewline
                  \hline
                  3&paperone & paperoga & qui & quo & qua \tabularnewline
                  \hline
                  4&paperone & paperoga & qui & quo & qua \tabularnewline
                  \hline
                  5&paperone & paperoga & qui & quo & qua \tabularnewline
                  \hline
                  \end{tabular}\\
                  \end{tabular}
                  \end{document}

                  `

                  Ho risolto un problema ma ne ho creato un altro
                  si è formato un piccolo spazio tra la prima e la seconda riga
                  🙁
                  come rimediare?
                  claudio

                • #78598
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Togli il primo [tt]\hline[/tt], altrimenti ne hai due di seguito e ottinei quello che vedi.

                    Peraltro hai definito la colonna di tipo N ma non l’hai mai usata. Sarebbe meglio se la usassi aumantando l’altezza del \rule finché lo spazio sopra le maiuscole della prima riga sia uguale allo spazio sotto.
                    Puoi usare la comaonna N{6mm} al posto della colonna C{6mm}, ma con il \rule aggiustato in altezza.

                  • #78599
                    claudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      ed ecco il risultato finale
                      non è bello ma..

                      `
                      % !TEX TS-program = pdflatex
                      % !TEX encoding = UTF-8 Unicode
                      \documentclass{article}
                      \usepackage{array}

                      \newcolumntype{C}[1]{>{\centering}p{#1}}
                      % oppure senza argomento
                      % \newcolumntype{C}{>{\centering}p{20mm}}
                      \newcolumntype{M}[1]{>{\centering\rule[-3mm]{0pt}{8mm}}m{#1}}
                      \newcolumntype{N}[1]{>{\centering\rule[-1mm]{0pt}{2mm}}m{#1}}

                      \begin{document}

                      %\begin{tabular}{@{}|M{6mm}|*5{M{22.6mm}|}@{}}
                      % oppure
                      %\begin{tabular}{*5C}
                      \begin{tabular}{l}
                      %\setlength{\arrayrulewidth}{2pt}
                      \begin{tabular}{@{}|N{6mm}|N{18mm}|*2{N{24.6mm}|}*2{N{10.6mm}|} }%{|C{6mm}|*5{C{22.6mm}|}@{}}
                      \hline
                      &A &B &C &D&E\tabularnewline

                      \end{tabular}\\
                      \begin{tabular}{@{}|M{6mm}|M{18mm}|*2{M{24.6mm}|}*2{M{10.6mm}|} @{}}
                      % oppure
                      \hline
                      1& $x_i$ & $n_i$ & $x_i\cdot n_i$ &&\tabularnewline
                      \hline
                      2& 6 & 8 & =A2*B2 &M=&=C6/B6 \tabularnewline
                      \hline
                      3& 3 & 6 & =A3*B3 && \tabularnewline
                      \hline
                      4&4 & 5 & =A4*B4 && \tabularnewline
                      \hline
                      5&5 & 3 & =A5*B5 && \tabularnewline
                      \hline
                      6&Totali & =somma(B2:B5) & =somma(B2:B5) && \tabularnewline
                      \hline
                      \end{tabular}\\
                      \end{tabular}
                      \end{document}
                      `

                      claudio

                    • #78600
                      OldClaudio
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        Cambia la definizione della colonna N così`\newcolumntype{N}[1]{>{\centering\rule[-1mm]{0pt}{4.75mm}}m{#1}}`

                        Il motivo è questo (e lo puoi verificare meglio nella guida tematica LaTeX handbook commentato, qui sopra nella documentazione): i tre parametri del comando \rule sono:

                        [tt]\rule[ [/tt]innalzamento[tt]]{[/tt]larghezza[tt]}{[/tt]altezza complessiva[tt]}[/tt]

                        Se la larghezza è nulla, come nel nostro caso, il rettangolo prodotto da \rule è invisibile, ma mantiene le altre due caratteristiche; in particolare è alto altezza complessiva; se si applica ribassamento con un valore negativo dell’innalzamento, il rettangolo viene spostato in basso, quindi aquista una profondità, ma la sua altezza sopra la linea di base diminuisce.

                        Se tu usi un’altezza complessiva di 2mm e poi lo abbassi di 1mm, produci uno spazio di sotto alla riga di base, cosicché l’\hline di sotto è adeguatamente distanziato, ma il \rule resta solo 1mm sopra la linea di base; siccome le lettere maiuscole A, B, …, sono più altedi questo \rule, perché sono di circa 2,75mm (un po’ più di 7pt, circa 8pt), questo significa che l’altezza sopra la linea di base deve essere di circa 3,75mm a cui devi aggiungere il millimetro di ribassamento per avere una altezza complessiva di 4,75mm.

                        Certo si potrebbe definire il \rule con un’altezza variabile a seconda del corpo dei caratteri, ma andando per tentativi si trova facilmente con due o tre prove quanto deve valere l’altezza complessiva del “pilastrino” (cosi si chiama in tipografia quell’oggetto che non stampa niente ma distanzia e sostiene quello che c’è sopra o sotto; in inglese si chiama strut; LaTeX dispone del comando \strut, che però normalmente rappresenta un pilastrino di dimensioni definite e non accetta argomenti per variarne le dimensioni — con \rule si ha la massima libertà di creare un pilastrino delle dimensioni che si vogliono).

                        Quindi con il ribassamento di 1mm e un’altezza complessiva di 4,75mm l’\hline sopra le lettere A, B,… è distanziato della stessa quantità del filetto che sta sotto le lettere; con il pilastrino di 2mm, il filetto supeirore quasi tocca le lettere.

                        Alternativamente si potrebbe usare il comando \extrarowheight (vedi pacchetto array) che per la prima riga del tuo Excel simulato andrebbe bene, ma non andrebbe bene per le celle successive.

                      • #78601
                        claudio
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          grazie per la risposta
                          claudio

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

                      Go to top