Fabio

Risposte nei forum create

Stai visualizzando 6 risposte – dal 1 al 6 (di 6 totali)
  • Autore
    Risposte
  • in risposta a: Numero di righe in una tabella #67684
    Up
    0
    Down
    ::

    egreg9″ post=66672

    Un modo di grazie a tutti ed in particolare un ringraziamento speciale al prof. Gregorio per la sua soluzione.
    Perfetta, era proprio quella che cercavo e a cui non sarei mai arrivato da solo.

    Devo dire che la sintassi mi è ancora piuttosto oscura e per questo cercherò di migliorare in futuro e di approfondire le mie conoscenze.

    Per il momento però non posso che ringraziarvi ancora e augurarvi una felice giornata.

    Fabio

    Ho definito un ambiente apposito per includere l’azzeramento del contatore. Nell’esempio le colonne in cui eseguire i conteggi sembrano essere solo due; perciò definisco un comando da eseguire alla fine di ogni cella della seconda colonna: si esegue un \par e si conta quante righe sono state composte (con \prevgraf) e si rende globalmente disponibile questo numero. Nella terza faccio lo stesso: se il numero di righe qui è maggiore che nella seconda colonna, aumento il contatore di questo numero, altrimenti uso il precedente. Ci sono un paio di faccende tecniche (\@finalstrut) da mettere a posto, ma è (quasi) routine: no, ci ho messo un po’ a sistemarlo. 🙂

    Se le colonne sono di più bisogna fare un po’ di lavoro supplementare.

    Ciao
    Enrico

    Salve prof. Gregorio,
    mi scusi se la disturbo nuovamente, ma negli ultimi giorni sono incappato in un problema dalla difficile soluzione che spero di poter risolvere, magari grazie a qualche suo intervento o suggerimento.
    Non so se ricorda, ma qualche tempo fa lei riuscì a risolvere un problema che prevedeva il calcolo delle righe effettivamente occupate da una tabella. Negli ultimi giorni ho però notato che la soluzione trovata fallisce nel momento in cui vengano inseriti dei ritorni a capo all’interno di una cella della tabella (in questo caso inserisco \par avendo dei paragraph box).

    `
    \documentclass[a4paper]{article}
    \usepackage[italian,english]{babel}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[scaled]{helvet}
    \usepackage{booktabs,array}

    \newenvironment{numtabular}[1][c]
    {\setcounter{tabnumlines}{0}\begin{tabular}[#1]}
    {\end{tabular}}

    \newcounter{tabnumlines}
    \makeatletter
    \newcommand{\updatecountA}{\@finalstrut\@arstrutbox\par
    \xdef\tempA{\the\prevgraf}\let\@finalstrut\@gobble}
    \newcommand{\updatecountB}{\@finalstrut\@arstrutbox\par
    \addtocounter{tabnumlines}{%
    \ifnum\prevgraf>\tempA
    \prevgraf
    \else
    \tempA
    \fi}\let\@finalstrut\@gobble
    }
    \makeatother

    \begin{document}

    \begin{numtabular}{lp{7cm}<{\updatecountA}p{2cm}<{\updatecountB}} \toprule \small\bfseries Codice & \small\bfseries Descrizione & \small\bfseries Altro\\ \midrule 1 & Una riga molto molto molto molto molto molto molto molto molto molto \par lungaaaaaaaaaaaaaaa & Altra cosa\\ 2 & Una riga molto molto molto molto molto molto molto molto molto molto lungaaaaaaaaaaaaaaa & Altra cosa\\ \bottomrule \end{numtabular} La tabella precedente ha \thetabnumlines~righe. \end{document} ` Se nota, a differenza dell'ultima volta, nel codice ho inserito un \par nella seconda cella della prima riga della tabella. Il numero delle righe senza \par era 7, ora mi sarei aspettato un 8, ed invece il risultato risulta essere 5. Il problema credo sia dovuto al fatto che si esegue un \par e si conta quante righe sono state composte (con \prevgraf). Ora però, il numero che viene utilizzato non è il numero di tutte le righe nel record, ma esclusivamente il numero di righe a partire dall'ultimo \par ritrovato (spero di esser stato un minimo chiaro). Il risultato è che quindi per il primo record si conteggia esclusivamente un'unica riga (praticamente la riga occupata dalla sola parola " lungaaaaaaaaaaaaaaa"); per il secondo record sono conteggiate correttamente 3 righe e quindi viene tirato fuori il risultato finale di 5 (l'ultima linea non ho ancora ben capito se sia quella dell'intestazione della tabella o una riga vuota aggiuntiva non voluta di cui si parla nella documentazione finstrut.sty). Ora per risolvere il problema non so se si possa definire una sorta di "delimitatore" differente dal \par oppure se si possa in un qualche modo conteggiare ed aggiornare il numero di righe in una cella fino a che non si raggiunga una nuova riga della tabella. Spero di non aver fatto troppa confusione nell'esposizione del problema e spero vivamente che possa darmi qualche consiglio o al limite suggerirmi della documentazione che possa aiutarmi. Nel frattempo la ringrazio in anticipo per il tempo che ancora una volta mi concede e la saluto. Fabio

    in risposta a: Numero di righe in una tabella #67683
    Up
    0
    Down
    ::

    egreg9″ post=66672
    Ho definito un ambiente apposito per includere l’azzeramento del contatore. Nell’esempio le colonne in cui eseguire i conteggi sembrano essere solo due; perciò definisco un comando da eseguire alla fine di ogni cella della seconda colonna: si esegue un \par e si conta quante righe sono state composte (con \prevgraf) e si rende globalmente disponibile questo numero. Nella terza faccio lo stesso: se il numero di righe qui è maggiore che nella seconda colonna, aumento il contatore di questo numero, altrimenti uso il precedente. Ci sono un paio di faccende tecniche (\@finalstrut) da mettere a posto, ma è (quasi) routine: no, ci ho messo un po’ a sistemarlo. 🙂

    Se le colonne sono di più bisogna fare un po’ di lavoro supplementare.

    Ciao
    Enrico

    Ancora grazie infinite.

    Purtroppo date le mie ancora scarse conoscenze ci ho messo un po’ per capire, ma il suo ultimo post è stato illuminante.
    In effetti nel mio caso ho una tabella con 8 colonne, ma di queste solo una presenta un campo descrizione il cui contenuto mi è sconosciuto a priori e che quindi mi creava non pochi problemi.
    La sua soluzione è andata ben oltre le mie aspettative. Infatti un unico \updatecountA è stato più che sufficiente alle mie esigenze. L’esempio è stato comunque interessante dato che sicuramente in futuro mi si ripresenterà un caso in cui effettuare più controlli ed anche perché ho imparato nuove macro a me totalmente sconosciute e che saranno da approfondire.

    Detto questo le rinnovo i miei più vivi ringraziamenti e la saluto augurandole una felice giornata.

    Fabio

    in risposta a: Numero di righe in una tabella #67681
    Up
    0
    Down
    ::


    Un modo di grazie a tutti ed in particolare un ringraziamento speciale al prof. Gregorio per la sua soluzione.
    Perfetta, era proprio quella che cercavo e a cui non sarei mai arrivato da solo.

    Devo dire che la sintassi mi è ancora piuttosto oscura e per questo cercherò di migliorare in futuro e di approfondire le mie conoscenze.

    Per il momento però non posso che ringraziarvi ancora e augurarvi una felice giornata.

    Fabio

    in risposta a: Longtable con empty rows #65050
    Up
    0
    Down
    ::

    egreg9″ post=64111Difficile aiutarti se non ci permetti di compilare il documento.

    Ciao
    Enrico

    Ciao….allora ho creato una cartella con i file necessari alla compilazione….il master file è fattura.tex

    [attachment=51]guit_help_me.tar.bz2[/attachment]

    l’obiettivo è quello di riempire l’ultima pagina con delle righe vuote fino alla terza tabella….

    fammi sapere se hai qualche idea

    Ciao
    Fabio

    Attachments:
    You must be logged in to view attached files.
    in risposta a: Longtable con empty rows #65048
    Up
    0
    Down
    ::

    egreg9″ post=64108Non è affatto chiaro perché tu voglia un ambiente table: non ce n’è alcun bisogno.

    Intanto penso al tuo problema.

    Ciao
    Enrico

    Considera sempre che non sono un espertissimo…..ho visto degli esempi fatti in quel modo ed ho palesemente scopiazzato 😀

    Grazie anche a te per l’aiuto

    in risposta a: Longtable con empty rows #65046
    Up
    0
    Down
    ::


    Prima di tutto grazie per la risposta, anche se forse ho trovato una edizione differente del testo che mi consigliavi, visto che non trovo nulla in quella pagina, cmq ora ti posto i codici….

    allora questo è il master file:

    `

    \documentclass[a4paper]{article}
    \usepackage[a4paper, top=2.5cm, bottom=3.5cm, right=1.5cm, left=1.5cm]{geometry}
    \usepackage[english]{babel}
    \usepackage{makeidx}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    %\usepackage{courier}
    \usepackage[scaled]{helvet}
    \renewcommand*\familydefault{\sfdefault} %% Only if the base font of the document is to be sans serif
    \usepackage{color}
    \usepackage[pdftex]{graphicx}
    \usepackage{MioStile}
    \usepackage{genmpage}
    \usepackage{multirow}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \spettle{Spett.le}
    \destCorrispondenza{Destinazione corrispondenza}
    %%%%%%%% COMANDI DI IMPAGINAZIONE %%%%%%%
    \testatina
    \piedino
    \pagestyle{fancy}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %
    \input{dati_in_tabella_prima_riga_fattura}%
    %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \begin{document}
    \SpazioVuoto
    \intestazione
    %\SpazioVuoto
    \fattura
    \end{document}

    `

    Negli input passo i dati già formattati correttamente

    Nel file MioStile.sty ho definito i vari comandi che vedi nel master file…..senza riportare proprio tutto il codice che sarebbe troppo dispersivo metto la parte relativa al comando \fattura

    `

    \newcommand{\fattura}
    {
    \begin{table}[!h]
    \centering
    % sottotabella per dati contabili cliente
    %\begin{tabular}{|l|l|l|l|l|}\hline\hline
    \begin{tabular}{|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{3.5cm}|}\hline%\hline
    % prima riga fattura
    \cambiaFont{Cod.Cliente}\rb & \cambiaFont{Cod.Fornitore}\rb & \cambiaFont{Partita IVA} & \cambiaFont{Num. documento} & \cambiaFont{Data documento} & \cambiaFont{Agente}\\
    % valori prima riga fattura
    \textbf{\@codCliente} & & \textbf{\@partitaIVA} & \textbf{\@numDoc} & \textbf{\@dataDoc} & \textbf{\@agente}\\ \hline
    % seconda riga fattura
    \multicolumn{2}{|l|}{\cambiaFont{Cod. e descr. pagamento}\rb} & \multicolumn{2}{l|}{\cambiaFont{Codice~IBAN}} & \multicolumn{2}{p{6cm}|}{\cambiaFont{Banca d'appoggio}}\\
    % valori seconda riga fattura
    \multicolumn{2}{|l|}{\textbf{\@codiceTipoPagamento}} & \multicolumn{2}{l|}{\textbf{\@codiceIBAN}} & \multicolumn{2}{p{6cm}|}{\textbf{\@bancaAppoggio}} \\ \hline
    % terza riga fattura
    \multicolumn{2}{|l|}{\cambiaFont{telefono}\rb} & \multicolumn{1}{l|}{\cambiaFont{Valuta}} & \multicolumn{3}{l|}{\cambiaFont{Tipo documento}}\\
    % valori terza riga fattura
    \multicolumn{2}{|l|}{\textbf{\@telefono}} & \multicolumn{1}{l|}{\textbf{\@valuta}} & \multicolumn{3}{l|}{\textbf{\@tipoDocumento}} \\ \hline\hline
    %\multicolumn{6}{|c|}{}
    %\hline
    %\end{longtable}
    \end{tabular}
    %\end{table}
    % sottotabella per descrizione merci
    \end{table}
    % sottotabella per descrizione merci
    \vspace{-0.43cm}

    \begin{longtable}{|p{1.5cm}|p{6.9cm}|p{.5cm}|p{1cm}|p{1.73cm}|p{1cm}|p{1.5cm}|p{1cm}|}\hline%\hline
    % quarta riga fattura
    \small{\textbf{Codice}}\rb & \small{\textbf{Descrizione}} & \small{\textbf{U.M.}} & \small{\textbf{Q.t}} & \small{\textbf{Prezzo Un.}} & \small{\textbf{Sc.~\%}} & \small{\textbf{Imp.~Netto}} & \small{\textbf{IVA~\%}}\\ \hline
    \endfirsthead
    % continuazione della longtable in pagine successive
    \multicolumn{8}{c}{ — Continued} \\[.5ex]
    \hline
    \small{\textbf{Codice}}\rb & \small{\textbf{Descrizione}} & \small{\textbf{U.M.}} & \small{\textbf{Quantit}} & \small{\textbf{Prezzo Un.}} & \small{\textbf{Sc.~\%}} & \small{\textbf{Imp.~Netto}} & \small{\textbf{IVA~\%}}\\
    \hline
    \endhead
    %This is the footer for all pages except the last page of the table…
    \multicolumn{8}{c}{\vspace{.4cm}{Continued on Next Page\ldots}} \\
    \endfoot
    %This is the footer for the last page of the table…
    \hline\hline
    \endlastfoot
    %Now the data…
    \input{dati_in_tabella_descrizione_merci}
    \hline
    \end{longtable}

    %sottotabella per riepilogo finale dati contabili
    % quinta riga fattura
    \begin{table}[!b]
    \begin{tabularx}{18.3cm}{|X|X|X|X|}
    \hline\hline
    \small{\cambiaFont{Totale merce}}\rb & \small{\cambiaFont{\%~Sconto}} & \small{\cambiaFont{Importo sconto}} & \small{\cambiaFont{Netto merce}}\\
    % valori dei campi
    {\textbf{\@totaleMerce}}\rb & \textbf{\@percSconto} & \textbf{\@importoSconto} & \textbf{\@NettoMerce} \\ \hline
    \end{tabularx}
    \begin{tabularx}{18.3cm}{|X|X|X|X|}
    \hline
    \small{\cambiaFont{Bolli}}\rb & \small{\cambiaFont{Spese Incasso}} & \small{\cambiaFont{Varie}} & \small{\cambiaFont{Acconto}}\\
    % valori dei campi
    {\textbf{\@bolli}}\rb & \textbf{\@speseIncasso} & \textbf{\@varie} & \textbf{\@acconto} \\ \hline
    \end{tabularx}
    \begin{tabularx}{18.3cm}{|X|X|X|}
    \hline
    \small{\cambiaFont{Imponibile}}\rb & \small{\cambiaFont{Aliquota IVA}} & \small{\cambiaFont{Importo IVA}}\\
    %Now the data…
    \input{dati_in_tabella_imponibile}
    \hline
    \end{tabularx}
    % settima riga fattura
    \begin{tabular}{|p{8.5cm}c|p{8.5cm}|}\hline
    \small{\textbf{TOTALE A PAGARE}}\rb && \small{\textbf{TOTALE DOCUMENTO}}\\
    % valori settima riga
    {\textbf{\@TotaleAPagare}}\rb & &\textbf{\@TotaleDocumento} \\ \hline
    \end{tabular}
    % ottava riga fattura
    \begin{tabular}{|p{3.5cm}|p{3.5cm}|p{10cm}|}\hline
    \small{\cambiaFont{Scadenze}}\rb & \small{\cambiaFont{Rd}} & \small{\cambiaFont{Annotazioni}} \\
    %valori dei campi
    \textbf{\@dataScadenza} & \textbf{\@TotaleAPagare} & \textbf{\@annotazioni}\\
    &&\\ \hline\hline
    \end{tabular}
    \end{table}
    }

    `

    Il risultato che ottengo è corretto ma la longtable come detto è dinamica, ossia se gli passo in input 3 righe, la tabella viene chiusa dopo 3 righe, se gliene passo 80, la tabella si spezza correttamente (anche se c’è un problema sul \piedino che viene spostato in basso, che magari si risolve dopo), e se, per esempio, nell’ultima pagina rimangono 6 righe, dopo quelle 6 righe la tabella viene chiusa.

    Spero che ora sia più chiaro….fammi sapere se hai delle idee

Stai visualizzando 6 risposte – dal 1 al 6 (di 6 totali)

Go to top