ambiente ‘widebox’ – argomento facoltativo non funzionante

  • Creatore
    Topic
  • #121511
    MatteoF
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno a tutti,
      la guida tematica «Le tabelle in LaTeX» presenta l’ambiente [tt]widebox[/tt], che permette di modificare la posizione di una tabella che supera la larghezza della gabbia.

      Il problema è che non funzionano gli argomenti facoltativi [tt]l[/tt] e [tt]r[/tt]. Dunque, la tabella rimane sempre centrata rispetto alla gabbia.
      `
      \documentclass{book}
      \usepackage{showframe}

      \newbox{\Wbox}
      \NewDocumentEnvironment{widebox}{ O{c} }{%
      \linewidth=\dimexpr \textwidth + \marginparsep + \marginparwidth\relax
      \begin{lrbox}{\Wbox}%
      }{\end{lrbox}%
      \noindent
      \ifdim\wd\Wbox < \linewidth \makebox[\textwidth][c]{\box\Wbox}% \else \makebox[\textwidth][#1]{\box\Wbox}% \fi} \begin{document} \begin{widebox}[r] % opzione non funzionante \begin{tabular}{*{20}{c}} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\ \end{tabular} \end{widebox} \end{document} ` Matteo

    Visualizzazione 2 filoni di risposte
    • Autore
      Risposte
      • #121512
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Matteo, la mai intenzione era quella di far sporgere la tabella solo neo margine destro se e solo se la tabella era più larga della giustezze ma poteve stere nelle giustezza allargata fino a riempire anche lo spazio delle note marginali.
          In raltà non so perché a me funzionasse con la classe per le gide tematiche, per il quale l’ambiente widebox era stato concepito e per il quale funzionava come previsto nel’esempio svolto e descritto nel testo circostAnte.

          Era solo un esempio, una specie di modello su cui basarsi per creare il proprio ambiente adatta alla classe in uso.

          L’idea, probabilmente non spiegata bene, er ache se la tabella era inverirore alla massima larghezza fose centrata, in modo chhe sporgesse in modo uguale da entrambi i margini; Volendo si potrebbe reare un altro ambiente widebox personale come quello che compare nell’EMC seguente
          `% !TEX TS-program = pdflatex
          \documentclass{book}
          \usepackage{showframe}

          \newbox{\Wbox}\newdimen\Wboxmaxwidth
          \NewDocumentEnvironment{widebox}{ O{c} }{%
          \Wboxmaxwidth=\dimexpr \textwidth + \marginparsep + \marginparwidth\relax
          \begin{lrbox}{\Wbox}%
          }{\end{lrbox}%
          \noindent
          \ifdim\wd\Wbox > \Wboxmaxwidth
          \makebox[\linewidth][c]{\box\Wbox}%
          \else
          \makebox[\linewidth][#1]{\box\Wbox}%
          \fi}

          \begin{document}

          \begin{widebox}[l]
          \begin{tabular}{*{20}{c}}
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 \\
          \end{tabular}
          \end{widebox}

          \begin{widebox}[l]
          \begin{tabular}{*{30}{c}}
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27& 28 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27& 28 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27& 28 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27& 28 \\
          1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27& 28 \\
          \end{tabular}
          \end{widebox}

          \end{document}
          `Come vedi la tua tabella con 20 colonne obbedisce al posizionatore l; puoi coambialer ilcodice l in c e continea a funzionare; ci metti r e la tabella sporge a sinsitra dove il margine è troppo stretto, e quindi smargina; Nota che la pagina nei due esemi è sempre la pagina 1, pagina dispari di destra, con margine interno di sinistra decisamente più stretto del marine destro, come il paccheeto showframe mostra chiaramente.
          Se l’esempio fosse fatto su una pagina pri i codici r e c funzionarebero e l non funzionerabe.

          Nell test che ho lasciato nel secondo esempio, le colonne dichiarate sono 30, ma effettivamante usae solo 28. La tabella è larginssima e come vedi sporge in modo unguael si nel margine destro sia nel margine sinisto, perdando la prima colonna che smargina a sinistra;

          Il test potrebbe essere modificato, in due sensi:
          A} se la tabella e di larghezza maggiore di \Wboxmaxwidth la fa smarigniare comunqueo nel margine esterno, lasciandoche smagini, ma emettesse un messaggio d’errore per lo smarignamanto, affinche l’auotre proveeda diversamante’
          B) potrebbe verificare i numero di pagina e pur lasciando operativa la centrattura se la tabella è poco più larga della gisutezza delle gabbia, quando l’opzione specificata è o r o c, faccia comunque sporgere la tabella solo nel margine esterne

          Quindi vedi che con pochi tocchi personali e con l’aiuto della nuova larghezza massima quellesempieto su tabelle.pdf permette di creare alre soluzioni più intelligenti e adatte ad alre classi.

          Ti ringrazio moltissimo; grazie a te posso aggiornare la guida tematica in modo più chiaro.

        • #121513
          MatteoF
          Partecipante
            Up
            0
            Down
            ::


            Se posso dare un suggerimento, nel caso di tabella poco più larga della gabbia (test B) sarebbe più intelligente che il comportamento di default fosse quello di farla sporgere nel margine esterno (senza la possibilità di scegliere tra allineamento destro o sinistro). Rimarrebbe l’argomento facoltativo [tt]c[/tt] per la centratura della tabella.

            Infine, sarebbe utile se questo ambiente (assieme alla macro [tt]ruotascatola[/tt]) fosse integrato nel pacchetto [tt]widetable[/tt], visto che tutte queste soluzioni mirano al medesimo scopo di migliorare l’aspetto tipografico della tabella.

            Matteo

          • #121514
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Matteo, grazie dei suggerimenti. Per il primo lo stavo riguardando qualche minuto fa e avevo lo stesso dubbio. Per il secondo la cosa è più complicata ma provo a lavorarci su.

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

          Go to top