[Risolto] Problema con \setlength e \addtolength

  • Creatore
    Topic
  • #84315
    Up
    0
    Down
    ::


    Salve a tutti,
    ho un problema nella definizione di nuove lunghezze. Sto scrivendo un documento di classe scrrprt in cui ho definito queste quattro lunghezze, con le quali assegnare la larghezza alle prime quattro colonne di una tabella che ne ha cinque in totale:

    `
    \newlength{\cutwidth}
    \setlength{\cutwidth}{0.11\textwidth}
    \newlength{\imgwidth}
    \setlength{\imgwidth}{0.23\textwidth}
    \newlength{\descwidth}
    \setlength{\descwidth}{0.11\textwidth}
    \newlength{\valwidth}
    \setlength{\valwidth}{0.13\textwidth}
    `

    Dal momento che la tabella la costruisco con l’ambiente tabularx, per l’ultima colonna uso lo specificatore X: mi servirebbe adesso capire quanto è in realtà la larghezza di questa ultima colonna. Ho provato nel seguente modo:

    `
    \newlength{\yearwidth}
    \setlength{\yearwidth}{\textwidth}
    \addtolength{\yearwidth}{-\the\cutwidth}
    \addtolength{\yearwidth}{-\the\imgwidth}
    \addtolength{\yearwidth}{-\the\descwidth}
    \addtolength{\yearwidth}{-\the\valwidth}
    `

    ma la dimensione \yearwidth risulta essere molto più grande di quanto è effettivamente l’ultima cella. Ho controllato che le sottrazioni vengano fatte correttamente (visualizzando i valori di ciascuna lunghezza con il comando \the) ed effettivamente il risultato è corretto.

    Qualcuno saprebbe dirmi dove sbaglio?

    Grazie mille a tutti per la disponibilità.

    Davide

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #84316
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Molto non saprei, ma certamente quella serie di sottrazioni (che potresti rendere meno oscura usando il comando primitivo \dimexpr seguito dagli operandi gisuti e terminato con \relax — vedi la documentazioni con texdoc etex da terminale) non tiene conto degli spazi intercolonna e degli spazi esterni alle due colonne estreme; devi togliere, in sostanza, 2\tabcolsep per ciascuna colonna, compresa quella X.

        Di default \taboclsep vale 6pt, ciò circa due millimetri; con 5 colonne, quattro di larghezza specificata e una di larghezza aggiustata, tu arrivi a circa 20mm di differenza, cioè a 2 \time\6pt \times 5 = 60pt di differenza.

      • #84317
        Up
        0
        Down
        ::

        d.fenucci” post=83618Salve a tutti,
        ho un problema nella definizione di nuove lunghezze. Sto scrivendo un documento di classe scrrprt in cui ho definito queste quattro lunghezze, con le quali assegnare la larghezza alle prime quattro colonne di una tabella che ne ha cinque in totale:

        `
        \newlength{\cutwidth}
        \setlength{\cutwidth}{0.11\textwidth}
        \newlength{\imgwidth}
        \setlength{\imgwidth}{0.23\textwidth}
        \newlength{\descwidth}
        \setlength{\descwidth}{0.11\textwidth}
        \newlength{\valwidth}
        \setlength{\valwidth}{0.13\textwidth}
        `

        Dal momento che la tabella la costruisco con l’ambiente tabularx, per l’ultima colonna uso lo specificatore X: mi servirebbe adesso capire quanto è in realtà la larghezza di questa ultima colonna. Ho provato nel seguente modo:

        `
        \newlength{\yearwidth}
        \setlength{\yearwidth}{\textwidth}
        \addtolength{\yearwidth}{-\the\cutwidth}
        \addtolength{\yearwidth}{-\the\imgwidth}
        \addtolength{\yearwidth}{-\the\descwidth}
        \addtolength{\yearwidth}{-\the\valwidth}
        `

        ma la dimensione \yearwidth risulta essere molto più grande di quanto è effettivamente l’ultima cella. Ho controllato che le sottrazioni vengano fatte correttamente (visualizzando i valori di ciascuna lunghezza con il comando \the) ed effettivamente il risultato è corretto.

        Qualcuno saprebbe dirmi dove sbaglio?

        Grazie mille a tutti per la disponibilità.

        Dovresti mostrare l’uso di quelle lunghezze.

        Ciao
        Enrico

      • #84318
        Up
        0
        Down
        ::

        OldClaudio” post=83628Molto non saprei, ma certamente quella serie di sottrazioni (che potresti rendere meno oscura usando il comando primitivo \dimexpr seguito dagli operandi gisuti e terminato con \relax — vedi la documentazioni con texdoc etex da terminale) non tiene conto degli spazi intercolonna e degli spazi esterni alle due colonne estreme; devi togliere, in sostanza, 2\tabcolsep per ciascuna colonna, compresa quella X.

        Di default \taboclsep vale 6pt, ciò circa due millimetri; con 5 colonne, quattro di larghezza specificata e una di larghezza aggiustata, tu arrivi a circa 20mm di differenza, cioè a 2 \time\6pt \times 5 = 60pt di differenza.

        Grazie mille per i suggerimenti, sembra proprio essere quello il problema.

        Davide

      • #84319
        Up
        0
        Down
        ::

        egreg9″ post=83632
        Dovresti mostrare l’uso di quelle lunghezze.

        Ciao
        Enrico

        Quelle quattro lunghezze le ho usate per definire un nuovo comando e un nuovo ambiente, che riporto di seguito (forse non molto elegante, se aveste suggerimenti anche in questo senso ben vengano):

        `

        %%%%%% Tabella con righe predefinite %%%%%%
        % Utilizzo:
        %
        %\begin{cointable}
        % \InsertCoin{}{}{}{}{}{}
        %\end{cointable}
        %

        \newcommand{\InsertCoin}[6]{
        \multirow{3}*{\parbox{\cutwidth}{\rule{0pt}{15pt}\centering #1}} & \multirow{3}*{\includegraphics[width=\imgwidth]{#2}} & \emph{Materiale} & \ac{#3} & \multirow{3}*{\parbox{\yearwidth}{\rule{0pt}{15pt}\centering #6}} \\
        \cmidrule(lr){3-4}
        & & \emph{\diameter [mm]} & $#4$ & \\
        \cmidrule(lr){3-4}
        & & \emph{Peso [g]} & $#5$ & \\
        }

        %% Tipi di colonna
        \newcolumntype{T}{>{\centering\arraybackslash\hspace{0pt}}m{\cutwidth}}
        \newcolumntype{I}{>{\centering\arraybackslash\hspace{0pt}}m{\imgwidth}}
        \newcolumntype{D}{>{\raggedright\arraybackslash\hspace{0pt}}m{\descwidth}}
        \newcolumntype{V}{>{\raggedleft\arraybackslash\hspace{0pt}}m{\valwidth}}
        \newcolumntype{A}{>{\centering\arraybackslash\hspace{0pt}}X}

        %% CoinTable
        \newenvironment{cointable}
        {\table[!h]
        \centering
        \tabularx{\textwidth}{TIDVA}
        \toprule
        \textbf{Taglio} & \textbf{Immagine} & \multicolumn{2}{c}{\textbf{Caratteristiche}} & \textbf{Anni} \\
        \midrule}
        { \endtabularx
        \endtable}
        %%%%%%
        `

        Tutto funzionava, a parte la \parbox dove inserisco il sesto argomento all’interno del comando \InsertCoin che veniva appunto di larghezza maggiore; con i suggerimenti di Claudio però sembra tutto ok ora.
        Grazie

        Davide

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

    Go to top