per un millimetro in piu

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


      ho fatto questa tabella ecco il codice
      `
      \documentclass[10pt,a4paper]{article}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage{amsmath}
      \usepackage{amsfonts}
      \usepackage{amssymb}
      \usepackage{booktabs}
      \usepackage{array}

      \newcolumntype{N}[1]{>{\centering\rule[-1mm]{0pt}{4.75mm}}m{#1}}
      \newlength{\gnat}
      \newlength{\gnam}
      \begin{document}

      \settowidth{\gnat}{NUL}
      \settowidth{\gnam}{b1}
      \begin{tabular}{r@{\hspace{0mm}}l}
      &

      \begin{tabular}{|N{\gnam}|*8{N{\gnat}}|}
      \hline
      $b_7$ & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \tabularnewline

      $b_6$ & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \tabularnewline
      $b_5$ & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \tabularnewline
      \hline
      \end{tabular}
      \tabularnewline
      \begin{tabular}{|N{\gnam}|*4{N{\gnam}}}
      \hline
      $h_0$& $b_3$ & $b_2$& $b_1$ & $b_0$ \tabularnewline
      \hline
      0 & 0 & 0 & 0 & 0 \tabularnewline
      1 & 0 & 0 & 0 & 1 \tabularnewline
      2 & 0 & 0 & 1 & 0 \tabularnewline
      3 & 0 & 0 & 1 & 1 \tabularnewline
      4 & 0 & 1 & 0 & 0 \tabularnewline
      5 & 0 & 1 & 0 & 1 \tabularnewline
      6 & 0 & 1 & 1 & 0 \tabularnewline
      7 & 0 & 1 & 1 & 1 \tabularnewline
      8 & 1 & 0 & 0 & 0 \tabularnewline
      9 & 1 & 0 & 0 & 1 \tabularnewline
      A & 1 & 0 & 1 & 0 \tabularnewline
      B & 1 & 0 & 1 & 1 \tabularnewline
      C & 1 & 1 & 0 & 0 \tabularnewline
      D & 1 & 1 & 0 & 1 \tabularnewline
      E & 1 & 1 & 1 & 0 \tabularnewline
      F & 1 & 1 & 1 & 1 \tabularnewline
      \hline
      \end{tabular}
      &
      \begin{tabular}{|N{\gnam}|*8{N{\gnat}}|}
      & 0 & 1 & 2 & 3& 4 & 5 & 6 & 7 \tabularnewline
      \hline
      0 & NUL & DLE & SP & 0 & @ & P & ` & p \tabularnewline
      1 & SOH & DC1 & ! & 1 & A & Q & a & q \tabularnewline
      2 & STX & DC2 & ” & 2 & B & R & b & r \tabularnewline
      3 & ETX & DC3 & \# & 3 & C & S & c & s \tabularnewline
      4 & EOT & DC4 & \$ & 4 & D & T & d & t \tabularnewline
      5 & ENO & NAK & \% & 5 & E & U & e & u \tabularnewline
      6 & ACK & SYN & \& & 6 & F & V & f & v \tabularnewline
      7 & BEL & ETB & ' & 7 & G & W & g & w \tabularnewline
      8 & BS & CAN & ( & 8 & H & X & h & x \tabularnewline
      9 & HT & EM & ) & 9 & I & Y & i & y \tabularnewline
      10 & LF & SUB & * & : & J & Z & j & z \tabularnewline
      11 & VT & ESC & + & ; & K & [ & k & \{ \tabularnewline
      12 & FF & FS & , & < & L & \textbackslash & l & | \tabularnewline 13 & CR & GS & - & = & M & ] & m & \} \tabularnewline 14 & SO & RS & . & > & N & \^{}& n & \~{} \tabularnewline
      15 & SI & US & / & ? & O & \_ & o & DEL \tabularnewline
      \hline
      \end{tabular}
      \tabularnewline
      \end{tabular}

      \end{document}
      `
      mi sembra che sia venuta quasi buona
      c’è solo un particolare che non mi torna
      e che si nota nella parte tagliata: il mancato allineamento.
      In orizzontale ho delegato Latex a fare i conti
      per l’altezza in verticale delle celle ho fatto a mano
      non si può automatizzare anche questo?
      ciao
      claudio

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #79861
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Perché non hai fatto una tabella unica con le celle vuote nella parte tagliata (basta un \multicolumn) e oltre gli \hline che attraversano tutta la tabella, anche i \cline(n-m) che vanno solo dalla colonna n alla colonna m?

          Perché metti il pilastrino in tutte le celle? (pilastrino= \rule[-1mm]{0pt}{4.75mm}) basta mettere un solo pilastrino in altezza in una cella qualsiasi dopo un \hline o \cline, e un pilastrino in profondità in una qualsiasi cella prima di un \hline o \cline.

          @{\hspace{0mm}} è del tutto equivalente a @{}, ma questo è molto più semplice da scrivere; per altro se segui i miei suggerimenti non ne hai bisogno per niente.
          `…
          \newcolumntype{M}[1]{>{\centering}p{#1}}
          \newcommand\pilH{\rule{0pt}{2.5ex}}
          \newcommand\pilD{\rule[-1ex]{0pt}{0pt}}

          \begin{tabular}{|M{\gnam}|*4{M{\gnat}}|M{\gnam}|*8{M{\gnat}}|}
          \cline{6-14}
          \multicolumn5{c|}{\pilH} &$b_7$ & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \tabularnewline
          \multicolumn5{c|}{} &$b_6$ & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \tabularnewline
          \multicolumn5{c|}{\pilD} &$b_5$ & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \tabularnewline
          \hline
          $h_0$& $b_3$ & $b_2$& $b_1$ & $b_0$ && 0 & 1 & 2 & 3& 4 & 5 & 6 & 7\pilH\pilD\tabularnewline
          \hline
          0 & 0 & 0 & 0 & 0 & 0 & NUL & DLE & SP & 0 & @ & P & ` & p\pilH\tabularnewline
          1 & 0 & 0 & 0 & 1 & 1 & SOH & DC1 & ! & 1 & A & Q & a & q \tabularnewline
          2 & 0 & 0 & 1 & 0 & 2 & STX & DC2 & \string” & 2 & B & R & b & r \tabularnewline
          3 & 0 & 0 & 1 & 1 & 3 & ETX & DC3 & \# & 3 & C & S & c & s \tabularnewline
          4 & 0 & 1 & 0 & 0 & 4 & EOT & DC4 & \$ & 4 & D & T & d & t \tabularnewline
          5 & 0 & 1 & 0 & 1 & 5 & ENO & NAK & \% & 5 & E & U & e & u \tabularnewline
          6 & 0 & 1 & 1 & 0 & 6 & ACK & SYN & \& & 6 & F & V & f & v \tabularnewline
          7 & 0 & 1 & 1 & 1 & 7 & BEL & ETB & ' & 7 & G & W & g & w \tabularnewline
          8 & 1 & 0 & 0 & 0 & 8 & BS & CAN & ( & 8 & H & X & h & x \tabularnewline
          9 & 1 & 0 & 0 & 1 & 9 & HT & EM & ) & 9 & I & Y & i & y \tabularnewline
          A & 1 & 0 & 1 & 0 & 10& LF & SUB & * & : & J & Z & j & z \tabularnewline
          B & 1 & 0 & 1 & 1 & 11& VT & ESC & + & ; & K & [ & k & \{ \tabularnewline
          C & 1 & 1 & 0 & 0 & 12& FF & FS & , & < & L & \textbackslash & l & | \tabularnewline D & 1 & 1 & 0 & 1 & 13& CR & GS & - & = & M & ] & m & \} \tabularnewline E & 1 & 1 & 1 & 0 & 14& SO & RS & . & > & N & \textasciicircum& n & \textasciitilde \tabularnewline
          F & 1 & 1 & 1 & 1 & 15& SI & US & / & ? & O & \_ & o & DEL\rule[-1.5ex]{0pt}{0pt}\tabularnewline
          \hline
          \end{tabular}`
          È importante usare la colonna p invece della m; l’ultimo pilastrino esplicito serve per ribassare ulteriormente l’ultimo filetto perché non interferisca con l’underscore. Il comando \string prima del doppio apice garantisce che non sia attivo (lo è praticamente in tutte le lingue, italiano compreso, tranne l’inglese)

          Ora non ti resta che scegliere il font sufficientemente piccolo o mettere la tabella girata di 90°. Con 14 colonne di larghezza specificata è chiaro che esce dai margini.

        • #79862
          claudio
          Partecipante
            Up
            0
            Down
            ::

            OldClaudio” post=79048Perché non hai fatto una tabella unica con le celle vuote nella parte tagliata (basta un \multicolumn) e oltre gli \hline che attraversano tutta la tabella, anche i \cline(n-m) che vanno solo dalla colonna n alla colonna m?

            Perché metti il pilastrino in tutte le celle? (pilastrino= \rule[-1mm]{0pt}{4.75mm}) basta mettere un solo pilastrino in altezza in una cella qualsiasi dopo un \hline o \cline, e un pilastrino in profondità in una qualsiasi cella prima di un \hline o \cline.

            @{\hspace{0mm}} è del tutto equivalente a @{}, ma questo è molto più semplice da scrivere; per altro se segui i miei suggerimenti non ne hai bisogno per niente.
            `…
            \newcolumntype{M}[1]{>{\centering}p{#1}}
            \newcommand\pilH{\rule{0pt}{2.5ex}}
            \newcommand\pilD{\rule[-1ex]{0pt}{0pt}}

            \begin{tabular}{|M{\gnam}|*4{M{\gnat}}|M{\gnam}|*8{M{\gnat}}|}
            \cline{6-14}
            \multicolumn5{c|}{\pilH} &$b_7$ & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \tabularnewline
            \multicolumn5{c|}{} &$b_6$ & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \tabularnewline
            \multicolumn5{c|}{\pilD} &$b_5$ & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \tabularnewline
            \hline
            $h_0$& $b_3$ & $b_2$& $b_1$ & $b_0$ && 0 & 1 & 2 & 3& 4 & 5 & 6 & 7\pilH\pilD\tabularnewline
            \hline
            0 & 0 & 0 & 0 & 0 & 0 & NUL & DLE & SP & 0 & @ & P & ` & p\pilH\tabularnewline
            1 & 0 & 0 & 0 & 1 & 1 & SOH & DC1 & ! & 1 & A & Q & a & q \tabularnewline
            2 & 0 & 0 & 1 & 0 & 2 & STX & DC2 & \string” & 2 & B & R & b & r \tabularnewline
            3 & 0 & 0 & 1 & 1 & 3 & ETX & DC3 & \# & 3 & C & S & c & s \tabularnewline
            4 & 0 & 1 & 0 & 0 & 4 & EOT & DC4 & \$ & 4 & D & T & d & t \tabularnewline
            5 & 0 & 1 & 0 & 1 & 5 & ENO & NAK & \% & 5 & E & U & e & u \tabularnewline
            6 & 0 & 1 & 1 & 0 & 6 & ACK & SYN & \& & 6 & F & V & f & v \tabularnewline
            7 & 0 & 1 & 1 & 1 & 7 & BEL & ETB & ' & 7 & G & W & g & w \tabularnewline
            8 & 1 & 0 & 0 & 0 & 8 & BS & CAN & ( & 8 & H & X & h & x \tabularnewline
            9 & 1 & 0 & 0 & 1 & 9 & HT & EM & ) & 9 & I & Y & i & y \tabularnewline
            A & 1 & 0 & 1 & 0 & 10& LF & SUB & * & : & J & Z & j & z \tabularnewline
            B & 1 & 0 & 1 & 1 & 11& VT & ESC & + & ; & K & [ & k & \{ \tabularnewline
            C & 1 & 1 & 0 & 0 & 12& FF & FS & , & < & L & \textbackslash & l & | \tabularnewline D & 1 & 1 & 0 & 1 & 13& CR & GS & - & = & M & ] & m & \} \tabularnewline E & 1 & 1 & 1 & 0 & 14& SO & RS & . & > & N & \textasciicircum& n & \textasciitilde \tabularnewline
            F & 1 & 1 & 1 & 1 & 15& SI & US & / & ? & O & \_ & o & DEL\rule[-1.5ex]{0pt}{0pt}\tabularnewline
            \hline
            \end{tabular}`
            È importante usare la colonna p invece della m; l’ultimo pilastrino esplicito serve per ribassare ulteriormente l’ultimo filetto perché non interferisca con l’underscore. Il comando \string prima del doppio apice garantisce che non sia attivo (lo è praticamente in tutte le lingue, italiano compreso, tranne l’inglese)

            Ora non ti resta che scegliere il font sufficientemente piccolo o mettere la tabella girata di 90°. Con 14 colonne di larghezza specificata è chiaro che esce dai margini.

            1) alla tabella unica non ci avevo pensato forse era troppo semplice:)
            2) per i pilastrini io ho pensato globalmente o meglio ho sfruttato un tuo vecchio suggerimento
            3) @{} dopo non mi ricordo a che serve
            4) per il finale non sapevo di string è la mia prima tabella di caratteri non stampabili
            5) grazie per il tuo tempo
            claudio

            aggiunta hai messo uno gnam di meno 🙂
            `
            \begin{tabular}{|M{\gnam}|*4{M{\gnam}}|M{\gnam}|*8{M{\gnat}}|}
            `
            ora ci sta

          • #79863
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              1) 😉
              2) però anche il mio suggerimento diceva di usarli nelle righe della tabella preceduti o seguiti da un filetto orizzontale;
              3) @{} serve per non mettere niente fra un colonna e l’altra; @{\hspace{0pt}} invece ci mette uno spazio nullo; fra il niente e lo spazio nullo, all’atto pratico non si vede nessuna differenza, ma concettualmente è diverso;
              4) Bene, ora sai a cosa serve \string
              5) prego 🙂 !

            • #79864
              Up
              0
              Down
              ::


              Se poi non vuoi indovinare esattamente quale sia la sigla più larga (non è NUL nell’esempio), ma non ti serve essere precisissimo, puoi modificare la definizione del tipo di colonna M:
              `\newcolumntype{M}[1]{>{\hbox to\dimexpr#1\relax\bgroup\hss}c<{\hss\egroup}}` Così non avrai messaggi di "Overfull" da varie celle della settima e ottava colonna e la differenza sarà impercettibile. Ciao Enrico

            • #79865
              claudio
              Partecipante
                Up
                0
                Down
                ::

                egreg9″ post=79078Se poi non vuoi indovinare esattamente quale sia la sigla più larga (non è NUL nell’esempio), ma non ti serve essere precisissimo, puoi modificare la definizione del tipo di colonna M:
                `\newcolumntype{M}[1]{>{\hbox to\dimexpr#1\relax\bgroup\hss}c<{\hss\egroup}}` Così non avrai messaggi di "Overfull" da varie celle della settima e ottava colonna e la differenza sarà impercettibile. Ciao Enrico

                scusa ma non ho capito 🙂
                ciao
                claudio

              • #79866
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Provo a spiegartelo io, visto che le soluzioni di Enrico, anche se semplici, hanno qualcosa di sottinteso che è sempre interessante scoprire.

                  Nel caso della definizione della colonna M, infatti puoi definirla con la larghezza misurata di NUL, stivata nella scatola \gnat e scrivere nel preambolo per esempio;`\begin{tabular}{…*8{M{\gnat}}}`, ma se lavorando con la tabella e le colonne così definite ti pare che qualche entry di quelle colonne richiederebbe uno spazio maggiore, puoi scrivere: `\begin{tabular}{…*8{M{\gnat+3pt}}}` perché puoi scrivere un’espressione. Ma nello stesso tempo se ci hai quasi preso ad usare l’entry NUL per prendere la misura, ma ce n’è un’altra leggermente più larga, allora l’entry leggermente più larga entra ugualmente nella scatola della cella, rimanendo centrata, grazie alla lunghezza elastica \hss che è simultaneamente allungabile infinitamente e accorciabile infinitamente, cosicché se il contenuto della scatola sfora un poco la larghezza definita attraverso NUL, non ha importanza e non vengono emessi messaggi d’errore do overful hbox; la tabella risulta ben composta purché la larghezza definita con NUL non sia tanto diversa dalla massima larghezza dei contenuti delle celle.

                  Certo se usi NUL come indicatore della larghezza quasi massima e poi uno degli elementi della tabella in una di quelle colonne vale VERCINGETORIGE, allora questa parola verrà perfettamente centrata, non verranno emessi messaggi d’errore ma la parola si sovrapporrà sulle celle adiacenti con un effetto mica tanto carino 🙁

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

              Go to top