Re: Mathematica!

#64651
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Perdonami, ma poiché il primo intervento l’ho scritto un po’ di tempo fa, non ricordavo più bene a che livello di dettaglio eravamo arrivati e sono stato superficiale.
    Ti ho fatto usare array proprio perché questo ambiente tabulare tratta prevalentemente matematica e va per forza inserito tra \[ \], il che ti garantisce che comandi come \times o ^, che sono matematici, verranno riconosciuti senza problemi.
    Con questo metodo, dando per scontato che nel preambolo abbia inserito \usepackage{booktabs} per avere le linee orizzontali, ciò che devi scrivere nel corpo del documento è esattamente:

    `
    \[\begin{array}{ccccccc}
    \toprule
    \rho & q_0 & q_1 & q_2 & q_3 & q_4 & q_5\\
    \midrule
    % qui copia i dati
    \bottomrule
    \end{array}\]
    `
    Longtable non lo devi usare, perché con array non funziona, e credo che nell’esempio che hai riportato non serva. Se la tabella non riesce a stare in una pagina, prima di usare Longtable puoi provare una o entrambe le soluzioni seguenti:
    1) ridurre il corpo del font utilizzando le dichiarazioni opportune. Per esempio potresti inserire tutto quanto tra {\footnotesize e };
    2) inserire tutto quanto in un ambiente flottante in modo che LaTeX trovi una pagina con spazio sufficiente. In tal caso, nel preambolo devi aggiungere queste due righe:

    `
    \usepackage{caption}
    \captionsetup[table]{position=top}
    `
    e nel corpo del documento devi scrivere esattamente:

    `
    \begin{table}
    \caption[Distribuzione di equilibrio del Modello $A$]{Distribuzione di equilibrio del Modello $A$\rule{0pt}{4ex}}\label{tab:table2}
    \centering
    \[\begin{array}{ccccccc}
    \toprule
    \rho & q_0 & q_1 & q_2 & q_3 & q_4 & q_5\\
    \midrule
    % qui copia i dati
    \bottomrule
    \end{array}\]
    \end{table}
    `
    Se proprio non riesci a far stare la tabella su una sola pagina, devi necessariamente usare Longtable e il codice va modificato in modo da poter usare l’ambiente tabular. Nel preambolo devi aggiungere queste righe:

    `
    \usepackage{array}
    \newcolumntype{C}{>{$}c<{$}} \usepackage{longtable} \usepackage{caption} \captionsetup[table]{position=top} ` e nel corpo del documento devi scrivere qualcosa del genere: ` \begin{longtable}{CCCCCCC} \caption[Distribuzione di equilibrio del Modello $A$]{Distribuzione di equilibrio del Modello $A$\rule{0pt}{4ex}}\label{tab:table2} \toprule \rho & q_0 & q_1 & q_2 & q_3 & q_4 & q_5\\ \midrule \endfirsthead \multicolumn{7}{l}{\footnotesize\itshape Continua dalla pagina precedente}\\ \toprule \rho & q_0 & q_1 & q_2 & q_3 & q_4 & q_5\\ \midrule \endhead \midrule \multicolumn{7}{r}{\footnotesize\itshape Continua nella pagina seguente}\\ \endfoot \bottomrule \endlastfoot % qui copia i dati \end{longtable} ` Visto che siamo arrivati fin qui e diventa sempre più difficile, se vuoi provare qualcosa di più personalizzabile, te la senti di fare qualche passo avanti? Scrivi in Mathematica questo codice: ` \[Rho] = {0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95}; Q = Table[((\[Rho]^n)/n!)*Exp[-\[Rho]], {n, 0, 5}]; NumberForm[TableForm[Join[{\[Rho]}, Q]\[Transpose]], NumberFormat -> (Row[{#, “e”, #3}] &), ExponentFunction -> (# &)]
    `
    Dai il solito shift + invio, seleziona la tabella e cliccando col pulsante destro del mouse scegli “copia come testo normale”.
    Apri un editor di testo, incolla la tabella appena copiata e salvala nella cartella del sorgente LaTeX con il nome “mathematica.txt”, ad esempio.

    Nel preambolo devi inserire (se mancano) le seguenti righe:

    `
    \usepackage{booktabs}
    \usepackage{pgfplotstable}
    `
    e nel corpo del documento devi inserire esattamente questo codice:

    `
    \pgfplotstableread{mathematica.txt}\tabella
    \pgfplotstabletypeset[columns/0/.style={column name=$\rho$},
    columns/1/.style={column name=$q_0$},
    columns/2/.style={column name=$q_1$},
    columns/3/.style={column name=$q_2$},
    columns/4/.style={column name=$q_3$},
    columns/5/.style={column name=$q_4$},
    columns/6/.style={column name=$q_5$},
    precision=5, use comma, dec sep align,
    every head row/.style={before row=\toprule, after row=\midrule},
    every last row/.style={after row=\bottomrule}]{\tabella}
    `
    Che te ne pare? Hai i numeri incolonnati alla virgola e non hai più il problema del \times. Inoltre è proprio LaTeX che si occupa di prendere 5 cifre decimali, ma solo dove sono significative (se vuoi anche gli zeri non significativi, basta aggiungere “zerofill” dopo “precision=5”). Puoi cambiare automaticamente il separatore decimale (“use comma”) o la notazione esponenziale e, se vuoi, puoi anche usare una longtable. Per tutte le possibilità di personalizzazione, ti rimando al manuale di pgfplotstable.

    Ciao

    P.S.: ma a che serve la riga “res =” nel codice di Mathematica? Non ti basta la precedente?

    Go to top