equazione matematica

  • Creatore
    Topic
  • #75315
    Up
    0
    Down
    ::


    Ciao a tutti,
    Il codice seguente produce 2 righe:

    \documentclass{article}

    \begin{document}

    \section{Prova}
    Equazione di prova

    \begin{eqnarray}
    \Delta y_{t} &=& 1.323 + 2.432 \Delta x_{1t} + 3.579 \Delta x_{2t} \\
    & & (0.01) (0.76) (0.98)
    \end{eqnarray}
    \end{document}

    vorrei che i punti che separano i numeri decimali nella righe numerate con (1) e (2) fossero allineati verticalmente.
    Così ad esempio il punto di “1.323” nell’equazione (1) dovrebbe essere esattamente sopra al punto di “(0.01)” nella riga (2).
    Vorrei evitare di “aggiustare a mano” gli spazi orizzontali con \qquad \hspace{}, \,\,\,\ e simili
    perchè una situazione simile è piuttosto ricorrente in quello che sto facendo.

    Grazie mille !
    Carlo

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #75316
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Cominica col NON usare eqnarray; qualunque guida ti dice di non usarlo.

        Secondo non puoi allineare du stringhe di numeri come richiedi se il secondo è fra parentesi; le parentesi occumano spazio, quindi spostano il numero della seconda riga più a destra. Certo puoi nasconderne la larghezza, oppure inserire nella prima riga una parentesi fantasma ([tt]\phantom{(}[/tt]), ma è fatto a mano, non lo si può fare automaticamante e la cosa dipende dalla lunghezza dei numeri, dal numero di cifre nella parte intera, e compagnia.

        Volendo assolutamente fare una cosa del genere puo ricorrere all’ambiente array definendo adeguatamente le colonne e i loro separatori.

        In ogni caso non con eqnarray 😡

      • #75317
        Up
        0
        Down
        ::


        grazie per la riposta.
        eqnarray mi è servito a mo’ di esempio per illustrare il problema.
        grazie per avermi ricordato che è fortemente sconsigliato.

        nell’equazione (1) ho sempre 3 cifre decimali ; mentre nell’equazione (2) ho sempre 2 cifre decimali.
        nella parte intera ho in genere una cifra e (raramente) due cifre.

        ho messo in attach. un esempio simile preso da un libro della situazione.
        comunque ora provo con array oppure con vari \phantom.

        ancora grazie,
        c.

      • #75318
        Up
        0
        Down
        ::


        [attachment]EsempioEquazione.pdf[/attachment]

      • #75319
        Up
        0
        Down
        ::


        per ora ho risolto così con array
        grazie !!
        c.

        \documentclass{article}

        \begin{document}

        \section{Prova}
        Equazione di prova (wrong)

        \begin{eqnarray}
        \Delta y_{t} &=& 1.323 + 2.432 \Delta x_{1t} + 3.579 \Delta x_{2t} \\
        & & (0.01) (0.76) (0.98)
        \end{eqnarray}

        Equazione di prova con array

        \[ \begin{array}{ccccccccc}
        \Delta y_{t} &=& 1.323 &+& 2.432& \Delta x_{1t}& + &3.579 &\Delta x_{2t} \\
        & & (0.01)& &(0.76)& & &(0.98)& \\
        \end{array} \]

        \end{document}

      • #75320
        Up
        0
        Down
        ::

        guitcc” post=74432Ciao a tutti,
        Il codice seguente produce 2 righe:

        \documentclass{article}

        \begin{document}

        \section{Prova}
        Equazione di prova

        \begin{eqnarray}
        \Delta y_{t} &=& 1.323 + 2.432 \Delta x_{1t} + 3.579 \Delta x_{2t} \\
        & & (0.01) (0.76) (0.98)
        \end{eqnarray}
        \end{document}

        vorrei che i punti che separano i numeri decimali nella righe numerate con (1) e (2) fossero allineati verticalmente.
        Così ad esempio il punto di “1.323” nell’equazione (1) dovrebbe essere esattamente sopra al punto di “(0.01)” nella riga (2).
        Vorrei evitare di “aggiustare a mano” gli spazi orizzontali con \qquad \hspace{}, \,\,\,\ e simili
        perchè una situazione simile è piuttosto ricorrente in quello che sto facendo.

        Grazie mille !
        Carlo

        `\documentclass[a4paper]{article}
        \usepackage{amsmath}

        % i numeri vengono allineati per mezzo di un array
        \newcommand{\numberwithtolerance}[2]{%
        \begingroup\mathcode`.=\string”8000
        \changeperiodfornumberwithtolerance
        \begin{array}[t]{@{}r@{\periodfornumberwithtolerance}l@{}}
        #1\\\hidewidth(#2)\hidewidth
        \end{array}
        \endgroup}
        % la magia per far diventare il punto decimale equivalente a &
        \begingroup\lccode`\~=`\. \lowercase{\endgroup
        \edef\changeperiodfornumberwithtolerance{\def\noexpand\periodfornumberwithtolerance{\mathchar\the\mathcode`.}\def\noexpand~{&}}}

        \begin{document}
        \begin{equation}
        \Delta y_{t} = \numberwithtolerance{1.323}{0.01}
        + \numberwithtolerance{2.432}{0.76} \Delta x_{1t}
        + \numberwithtolerance{3.579}{0.98} \Delta x_{2t}
        \end{equation}
        \end{document}`
        Ciao
        Enrico

      • #75321
        Up
        0
        Down
        ::


        ubi maior ….,
        grazie !
        c.

      • #75322
        Up
        0
        Down
        ::


        Scusa Enrico, dove sbaglio ?
        Ho compilato ed ottengo (estratto dal file di log) quanto segue :
        grazie,
        c.

        `! Undefined control sequence.
        …har \the \mathcode `.}\def .
        {&}}
        l.14 …erance{\mathchar\the\mathcode`.}\def~{&}}}`

      • #75323
        Up
        0
        Down
        ::


        Scusa, mancava un [tt]\noexpand[/tt]. Ho corretto nel codice di prima.

        Penso che ora ti andrà meglio. La sintassi mi pare un po’ più amichevole; non è obbligatorio usare un nome così lungo per la macro; in quelle ausiliarie ho usato nomi astrusi per non rischiare di toccare niente che sia già definito.

        Ciao
        Enrico

      • #75324
        Up
        0
        Down
        ::


        ora funziona perfettamente.
        grazie,
        c.

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

    Go to top