Innumerevoli problemi, generare file latex [PHP]

  • Creatore
    Topic
  • #76145
    Up
    0
    Down
    ::


    So che il titolo è un po’ poco specifico e me scuso, ma non so proprio come definire il mio problema, che ormai penso sia la somma di innumerevoli problemi eheh, sono alla mia prima esperienza con questa libreria, specifico subito ehe..

    devo gestire la stampa di etichette, per un gestionale php che sto’ realizzando, l’idea generale è quella di dare all’utente la possibilità di scegliere dove stampare, su quale etichetta specificando riga e colonna e poi generare il template.
    Sono riuscito a fare quasi tutto.
    Ho creato un template da 12 righe e 3 colonne che occupano tutto un foglio A4, ed ho una libreria php che converte i file da template tex a pdf, che funziona molto bene, il problema pero’ è questo non riesco a stampare correttamente i dati all’interno della tabella.

    devo stampare 6 righe, ho provato in tutti i modi ma non riesco ad adnare a capo, ho provato con
    \newline \\ \\* ma niente da fare.

    Non so se conosce anche il php quindi provo a postare i codici cosi’ come li ho scritti se poi ci sono difficoltà li adatto mettendo ‘puro latex’ 😀

    `\documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage[top=0cm, bottom=0cm, left=-0.58cm, right=0cm]{geometry}
    \begin{document}
    \begin{tabular}{|p{6.7cm}|p{6.7cm}|p{6.7cm}|}

    $indiceUtente,
    'indiceCella' => $indiceCella
    );
    $etichetta = new Lace_DbStrumenti_Etichetta();
    $etichetta->fromArray($dato);
    $etichetta->PrintCell($dbh, $id);
    ?> &

    &

    \\[11.97ex] \hline



    \end{tabular}
    \end{document}`

    Questo è il template generale, praticamente genero la tabella da 12×3, semplice e pulita, $etichetta->PrintCell($dbh, $id); con questo comando ignetto questo codice

    `public function PrintCell($dbh, $id) {
    if ($this->indiceCella == $this->indiceUtente) {
    $n = new Lace_DbStrumenti_TabEtichetta($dbh);
    $costruzioneEtichetta = $n->SelectAttivitProgrammata($id);
    $etichetta = $costruzioneEtichetta->getAttivitProgrammata();
    $escaper = new Comcom\Filter\LatexEscaper();
    $denominazione = $escaper->filter($etichetta['denominazione']);
    $codiceStrumento = $escaper->filter($etichetta['codiceStrumento']);
    $dataProssimaAttivit = $escaper->filter($etichetta['dataProssimaAttivit']);
    $soggettoTaratura = $escaper->filter($etichetta['soggettoTaratura']);
    ?>
    \begin{tabular}{ l }
    \\
    \\
    \\
    \\
    Dava Verifica e Firma \\
    Limitazione \\
    \end{tabular}

Visualizzazione 10 filoni di risposte
  • Autore
    Risposte
    • #76146
      Up
      0
      Down
      ::


      Meglio se mostri un esempio del codice LaTeX generato.

      Ciao
      Enrico

    • #76147
      Up
      0
      Down
      ::


      \documentclass[a4paper,11pt]{article}
      \usepackage[utf8]{inputenc}
      \usepackage[italian]{babel}
      \usepackage[top=0cm, bottom=0cm, left=-0.58cm, right=0cm]{geometry}
      \begin{document}
      \begin{tabular}{|p{6.7cm}|p{6.7cm}|p{6.7cm}|}
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      prima cella & seconda cella & terza cella \\[11.97ex] \hline
      \end{tabular}
      \end{document}

      Questo è il template generato da latex le celle sono vuote e vorrei rimpirle in questo scrivendo
      Denominazione strumento
      data ultimo inserimento
      Soggetto a tartura
      Contrllo e firla
      Limitazioni

      questo è quello che va scritto, ho provato a scriverlo inserendo questa tabella nella cella giusta

      \begin{tabular}{ l }
      denominazione\\
      codice strumento \\
      soggetto a taratura \\
      data \\
      firma \\
      Limitazione \\
      \end{tabular}

      Il problema è che la cella non rispetta più le dimensioni fissate, e si allarga, lasciando dei margini che non riesco ad azzerare

    • #76148
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Spero che tu ti renda conto di quale tabella hai composto: Hai tre colonne di 67mm ciascuna che complessivamente, compreso lo spazio intercolonna ed esterno (complessivamente 3 volte 12pt, cioè circa 12mm) porta ad un totale di 212mm, più largo della carta UNI A4.

        Inoltre metti 11.97ex di spazio sotto ad ogni riga della cella e ci metti anche un filetto orizzontale, tipograficamante molto obbiettabile; ma quel che stupisce sono quei quasi 12ex di spazio fra una riga e la successiva; Primo: quanto vale un ex di spazio? dipende dla font, ma approssimativamente vale da 4.5pt a 5.5pt per font di copo normale; o se preferisci dal 45% al 55% del corpo del font in uso; dunque con il copro 10 e un font con un occhio mediano pun po’ più grande di quello dei font di default, diciamo 4.8pt, cioè 1.4mm, hai uno spazio fra le righe pari a circa 17mm, quasi due centimetri; sei sicuro? sicuro al 100% ?

        Siccome hai 6 informazioni ti occorrerebbe una tabella di 6 colonne; hai pensato di usare l’ambiente tabulare tabularx e di definire le colonne con
        `\begin{tabularx}{\textwidth}{*6X}`
        in modo da mettere le sei informazioni sulla stessa riga?

        Puoi leggere la documentazione di tabularx dando nel terminale il comando in linea texdoc tabularx

      • #76149
        Up
        0
        Down
        ::


        No non ci ho pensato, perchè non è quello che vorrei ottenere eheh..

        Allora conosco niente latex e quindi mi sono andato completamente a naso, le righe orizzontali sono li perchè devo orientarmi nella tabella, io pensavo di aver composto qualcosa di corretto perchè stampando il mio layout ottengo quello che mi servirebbe per partire..

        Ovvero una tabella con 12 righe e 3 colonne (stà dentro un A4 non chiedermi perchè eheh)..
        Consigli sul come realizzare una tabella di 3 colonne e 12 righe che stia in un foglio a4? quindi senza margini e niente? grazie 1000
        e scusate per gli errori forse banali, ma ho letto la doc anche se forse non si vede ehhe.. solo che non ho afferrato bene tutte le opzioni, sono tantissime!

      • #76150
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          No, non ti sei spiegato bene per niente.

          Questo è quello che ho capito rileggendo i tuoi oscuri messaggi, fitti di eheh, ma scarni di informazioni utili.

          Vorresti fare una tabella di 12 righe e 3 colonne; vuoi che la tabella sia larga 210 mm perché stia dentro la larghezza di un foglio A4; dici che la tua tabellona sta in un foglio A4 anche se è larga 212mm, ma non sai spiegare il perché.
          Andiamo avanti: in ogni cella della tabella vuoi mettere una tabellina di sei righe con 17mm di spazio sotto alla riga formata dalle tre tabelline e poi un filettino che attraversi tutta la tabellona.
          Perciò componendo in corpo 10pt, 6 righe occupano 72pt in verticale, cioè quasi un pollice, cioè 25mm; aggiungendo i 17mm e il filettino ogni riga della tabellona occupa quindi almeno 42 mm; di queste righe nella tabellona ce ne sono 12, che quindi occupano complessivamente 504 mm; giusto? come fanno a starci 12 di tali righe in un foglio A4 la cui altezza è di 297 mm?

          Io probabilmente sono duro di comprendonio, ma o ti spieghi meglio, magari ti fai un disegno su un foglio di carta A4, lo scandisci e lo alleghi al messaggio come immagine png, oppure con le tue scarne informazioni un po’ confuse io certamente non riesco a darti una mano, e suppongo che anche altri incontrino le difficoltà che ho incontrato io.

        • #76151
          Up
          0
          Down
          ::


          Allora devi ripulire la pagina da ogni margine, perchè il layout che devo metterci dentro deve occupare tutto un foglio A4,

          \documentclass[a4paper,11pt]{article}
          \usepackage{geometry}
          \geometry{a4paper,top=0cm, bottom=0cm, left=0cm, right=0cm, %
          heightrounded, bindingoffset=5mm}
          \begin{document}

          \end{document}

          Per farlo ho provato a scrivere una cosa del genere, leggendo la guida “l’arti di scrivere con LaTeX”
          Ora vorrei inserire una tabella, da 12 righe e 3 colonne, che occupi tutto il foglio A4
          `\documentclass[a4paper,11pt]{article}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{geometry}
          \geometry{a4paper,top=0cm, bottom=0cm, left=-0.6cm, right=0cm, %
          heightrounded, bindingoffset=0mm}
          \begin{document}
          \begin{tabular}{|p{7cm}|p{7cm}|p{7cm}|}
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          prima colonna & seconda colonna & terza colonna \\
          \end{tabular}
          \end{document}`

          Domanda, come assegno un altezza a queste righe? io pensavo di poter usare [3ex] per esempio come ho fatto precedentemente..
          Ha più o meno senso quello che ho scritto?

        • #76152
          franen
          Partecipante
            Up
            0
            Down
            ::


            Mettiamo a posto un po’ di cose…
            1. dai un margine sinistro negativo perché altimenti la tabella viene spostata sulla destra rispetto al margine del foglio. Questo è dovuto al fatto che la prima riga di un capoverso viene rientrata di una lunghezza \parindent. Se usi \noindent eviti il problema.
            2. Se misuri la larghezza delle colonne che ottieni col to codice non ottieni 7 cm, perché LaTeX aggiunge automaticamente una spaziatura a destra e a sinistra, che elimini con “@{}” (nelle parentesi potresti mettere la dimensione che preferisci).
            3. Non puoi assegnare un’altezza alle righe di una tablella, almeno non in maniera diretta (si potrebbe inserire uno strut, cioè un oggetto invisibile di altezza nota, ma questo fisserebbe solo l’altezza minima della riga, non la massima.) La dimensione che inserisci fra parentesi qualdre indica solo la spaziatura fra la riga e la successiva.

            Detto questo, non so se usare una tabular sia la scelta migliore, probabilmente con Tikz sarebbe più semplice (ma non mi è mai servito e non ho mai imparato a usarlo), vedi ad esempio qui.

            Il tuo codice un po’ ripulito risulta:
            `\documentclass[11pt]{article}
            \usepackage[utf8]{inputenc}
            \usepackage[T1]{fontenc}
            \usepackage[italian]{babel}
            \usepackage[a4paper,top=0cm, bottom=0cm, left=0cm, right=0cm,heightrounded, bindingoffset=0mm]{geometry}
            \begin{document}
            \noindent
            \begin{tabular}{|@{}p{7cm}@{}|@{}p{7cm}@{}|@{}p{7cm}@{}|}
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            prima colonna & seconda colonna & terza colonna \\
            \end{tabular}
            \end{document}`

          • #76153
            Up
            0
            Down
            ::


            Cavolo ammiro questa community, siete veramente preparati e presentissimi 😀
            Ti ringrazio per aver pulito il mio codice volevo solo segnalare che mi dava un problema

            ! Emergency stop.
            <*> …ljfour; mag:=1; nonstopmode; input ecrm1095

            Transcript written on mfput.log.
            grep: ecrm1095.log: No such file or directory
            mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input ecrm1095′ failed to make ecrm1095.tfm.
            kpathsea: Appending font creation commands to missfont.log.

            ! Font T1/cmr/m/n/10.95=ecrm1095 at 10.95pt not loadable: Metric (TFM) file not
            found.

            relax
            l.100 \fontencoding\encodingdefault\selectfont

            ho tolto questa riga \usepackage[T1]{fontenc} e tutto funziona.

            Per risolvere il problema dell’altezza, io all’interno di queste celle devo inserire, (in 1 sola di esse) un testo di 6 righe, se posso impostare il blocco testo con un altezza fissa, nelle altre ci metto la figura vuota come mi hai consigliato @franen, ed il tutto dovrebbe funzionare, si puo’ fare?

          • #76154
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Questa è la prima volta che dici che la tabellina di 6 righe è da usare una sola volta nella tabellona.

              L’errore che hai eliminato togliendo il riferimento alla codifica T1 dipende dal fatto che disponi di una distribuzione di TeX “antica” oppure di una distribuzione più basic del normale. Certo eliminando quella riga risolvi il problema, ma è come scopare un pavimento e nascondere la spazzatura sotto il tappeto.
              Abbiamo sempre detto in questo forum che bisogna sempre disporre di distribuzioni TeX aggiornate e complete.

              Se metti la tabellina dentro una sola delle celle, con gli aggiustamenti di @franen ce la fai a far stare tutto in una pagina, ma un foglio A4 ripeno fino ai bordi (bordi della carta, non bordi dello specchio di stampa) è una cosa improponibile; riduci ancora un poco la larghezza delle colonne p[ Magari mettendoci “solo” 60mm, invece di 70mm e recuperi abbastanza per non snaturare la tabellona, ma mantenendo dei margini di circa 15mm, non immensi, ma presentabili.

            • #76155
              franen
              Partecipante
                Up
                0
                Down
                ::



                @OldClaudio
                , la tabella così è certamente inguardabile, ma da quel che ho capito si sta parlando di preparare un file da stampare su carta da etichette, fogli A4 con sopra 24,36,.. etichette adesive di dimensione predefinita, quindi credo che la tabella debba occupare tutto il foglio.
                Propongo una soluzione che non mi piace molto, resto dell’idea che con tikz o con gli strumenti di picture si potrebbe fare meglio!
                Alcune spiegazioni: `\rule[-32pt]{0.10pt}{70pt}` la prima dimensione indica di quanto la linea viene abbassata rispetto alla linea di base, la seconda ne indica la larghezza, la terza l’altezza totale. In questo caso il nostro strut avrà 38 pt sopra alla linea di base e 32 sotto. Misure prese assolutamente a occhio. L’altezza totale è 70 pt è stata calcolata.
                La tabular viene inserita in modo da essere centrata rispetto alla linea di base, per questo lo strut è stato definito in quel modo.

                Ecco il codice.
                Fran
                `\documentclass[11pt]{article}
                \usepackage[utf8]{inputenc}
                %\usepackage[T1]{fontenc}
                \usepackage[italian]{babel}
                \usepackage[a4paper,top=0cm, bottom=0cm, left=0cm, right=0cm,heightrounded, bindingoffset=0mm]{geometry}
                \newcommand{\mystrut}{\ \rule[-32pt]{0.0pt}{70pt}}%cambia 0.1 con 0 per far sparire le linee

                \newcommand{\mytable}{%
                \begin{tabular}{l}
                denominazione\\ [-3pt]
                codice strumento\\[-3pt]
                soggetto a taratura\\[-3pt]
                data\\[-3pt]
                firma\\[-3pt]
                Limitazione
                \end{tabular}
                }
                \begin{document}
                \noindent
                \begin{tabular}{|@{}p{7cm}@{}|@{}p{7cm}@{}|@{}p{7cm}@{}|}
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mytable& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                testo & testo & \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \mystrut& \mystrut& \mystrut \\ \hline
                \end{tabular}
                \end{document}`

              • #76156
                Up
                0
                Down
                ::

                con il quale sto’ provando a inserrie i dati all’interno della cella scelta, ho provato a iddentare due tabelle perchè non riuscendo ad andare a capo, è l’unica soluzione che mi è venuta in mente, ma la cella che ospita la tabella si allarga e non riesco a limitarla alle dimensioni della cella madre..

                é qui che tento di spiegare la motivazione per cui inserirei una tabella all’interno di un altra tabella, comunque mi sono spulciato i pacchetti di LaTeX ho installato quelli che potevano sevire, avevo installato solo livetex-base ho aggiunto l’estensione ed ora non ho più l’errore.

                Purtroppo sono vincolato da quelle dimensioni, che tra l’altro, @franen hai azzeccato al mellimetro! Il template risulta perfetto. Ormai era da un po’ che ci stavo impazzendo dietro..
                Grazie 1000 e scusate se vi ho fatto tirare giù qualche santo! Ora pero’ avete un utente in più che vi seguirà ❗ ❗ ❗ ❗

                Debug -> provando il template ho notato che se una riga ( dellla tabella mytable) è troppo lunga non va a capo a fine colonna, ma va nella colonna a fianco, esiste un modo per fixare la dimensione? in modo che sia il testo ad adattarsi e non la cella?

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

            Go to top