Soluzioni di esercizi

  • Creatore
    Topic
  • #64422
    Up
    0
    Down
    ::


    Sfrutto l’occasione per togliermi un dubbio che, casualmente, mi è venuto proprio ieri e che avevo lasciato perdere…fino ad oggi quando leggendo questo post ho avuto un’idea su come risolverlo ma non ci sono riuscito!

    Ho definito quanto segue:

    `\newtheorem{esercizio}{Esercizio}[section]
    \newtheorem{soluzione}{Soluzione}
    `

    e l’idea era quella di fare una sezione con gli esercizi e una con le soluzioni. Vorrei che le soluzioni si riferissero agli esercizi, con la possibilità anche di non metterle tutte ma di conservarne il riferimento nella numerazione. In questo modo potrei avere cose del tipo:
    \section{Esercizi}
    Esercizio 2.1
    Esercizio 2.2
    Esercizio 2.3
    \section{Soluzioni}
    Soluzione 2.1
    Soluzione 2.3
    Ieri ho risolto semplicemente non richiamando l’ambiente “soluzione” e scrivendo: “quanto segue è la soluzione all’esercizio \vref{ex}”.
    Adesso però ho provato a scrivere questo:

    `
    \section
    \begin{esercizio}\label{ex:1}
    problema
    \end{esercizio}

    \section{Soluzioni}
    \begin{soluzione}\label{sol:1}\tag{\ref{ex:1}}
    risolto
    \end{soluzione}
    `

    ma il risultato è un errore `! Package amsmath Error: \tag not allowed here.

    See the amsmath package documentation for explanation.
    Type H for immediate help.

    l.12 \begin{soluzione}\label{sol:1}\tag
    {\ref{eq:1}}
    `

    ho provato anche (che forse è addirittura più carina come soluzione…)

    `\newenvironment{soluzione}{\begin{proof}[Soluzione]}{\end{proof}}`

    ma il \tag continua a non funzionare.

    In ogni modo, al di là di come risolvere il problema che è comunque interessante, pensate possa essere una buona idea oppure una cosa del tipo

    `\newtheorem{esercizio}{Esercizio}
    \newenvironment{soluzione}{\begin{proof}[Soluzione]}{\end{proof}}


    \section
    \begin{esercizio}\label{ex:1}
    problema
    \end{esercizio}

    \section{Soluzioni}
    \begin{soluzione}[Esercizio \vref{ex:1}]
    risolto
    \end{soluzione}
    `

    sarebbe meglio comunque, anche se non potrei di sicuro riferirmi alla soluzione con un \vref{sol:1}?

    grazie mille 🙂

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #64423
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Ho recuperato questo codice scritto una ventina di anni fa:
        `
        \newenvironment{Soluzioni}{\cleardoublepage
        \pagestyle{myheadings}\chapter{Soluzioni}
        \markboth{Soluzioni}{Soluzioni}\linespread{.95}\small
        \def\soluzione##1{\subsubsection*{Esercizio \ref{##1}}}
        }{\par\clearpage}
        `

        Mi serviva per raccogliere le soluzioni di tutti gli esercizi del libro di testo che avevo scritto alla fine dei vari capitoli, in modo che le soluzioni non fossero proprio due pagine dopo, altrimenti la tentazione di leggere le soluzioni sarebbe stata troppo forte (In realtà la tentazione non era affatto diminuita mettendo il capitolo delle soluzioni fra le appendici).

        Quini l’idea era di farne un capitolo/appendice a se stante. Perché un environment? perché cosi tutte le definizioni all’interno restano locali, compreso il comando \soluzione che serve per dare un titolino al paragrafo che contiene la soluzione; e come vedi questo titolino contiene proprio \ref e l’argomento del comando \soluzione è proprio l’etichetta dell’esercizio di cui si propone la soluzione.

        Anche gli esercizi erano contenuti in un environment che cambiava anche la numerazione delle figure e delle tabelle per non confonderle con la numerazione degli analoghi oggetti contenuti nel capitolo. Quindi un capitolo poteva essere formato così:

        \chapter{Titolo}

        \section{…}

        \begin{Esercizi}
        \esercizio{…}\label{es:primo}

        \esercizio{…}\label{es:secondo}

        \end{Esercizi}

        e la parte delle soluzioni sarebbe stata:

        \begin{Soluzioni}

        \soluzione{es:primo}

        \soluzione{es:secondo}

        \end{Soluzioni}

        A quei tempi amsmath non esisteva ancora e si lavorava ancora con LaTeX209, quindi oggi le stesse cose si possono fare in modo più elegante ed efficiente.

        La risposta alla tua domanda è un’altra domanda: Perché \vref{…} non dovrebbe funzionare?

      • #64424
        Up
        0
        Down
        ::


        Forse il mio commento è da [OT] :razz:, ma credo che distanziare eccessivamente le soluzioni dai testi degli esercizi non sia una grande idea. Il mio è, chiaramente, un parere personale, però durante lo studio avere vicini testo e soluzione è comodissimo per non perdersi dei dati (si può ovviare re-inserendoli in fase di soluzione, certo) e per vedere se ci sono “trabocchetti” nel testo (parti inutilizzate o sottointese).

      • #64425
        Up
        0
        Down
        ::

        Dork” post=63491Sfrutto l’occasione per togliermi un dubbio che, casualmente, mi è venuto proprio ieri e che avevo lasciato perdere…fino ad oggi quando leggendo questo post ho avuto un’idea su come risolverlo ma non ci sono riuscito!

        Ho definito quanto segue:

        `\newtheorem{esercizio}{Esercizio}[section]
        \newtheorem{soluzione}{Soluzione}
        `

        e l’idea era quella di fare una sezione con gli esercizi e una con le soluzioni. Vorrei che le soluzioni si riferissero agli esercizi, con la possibilità anche di non metterle tutte ma di conservarne il riferimento nella numerazione. In questo modo potrei avere cose del tipo:
        \section{Esercizi}
        Esercizio 2.1
        Esercizio 2.2
        Esercizio 2.3
        \section{Soluzioni}
        Soluzione 2.1
        Soluzione 2.3
        Ieri ho risolto semplicemente non richiamando l’ambiente “soluzione” e scrivendo: “quanto segue è la soluzione all’esercizio \vref{ex}”.
        Adesso però ho provato a scrivere questo:

        `
        \section
        \begin{esercizio}\label{ex:1}
        problema
        \end{esercizio}

        \section{Soluzioni}
        \begin{soluzione}\label{sol:1}\tag{\ref{ex:1}}
        risolto
        \end{soluzione}
        `

        ma il risultato è un errore `! Package amsmath Error: \tag not allowed here.

        See the amsmath package documentation for explanation.
        Type H for immediate help.

        l.12 \begin{soluzione}\label{sol:1}\tag
        {\ref{eq:1}}
        `

        ho provato anche (che forse è addirittura più carina come soluzione…)

        `\newenvironment{soluzione}{\begin{proof}[Soluzione]}{\end{proof}}`

        ma il \tag continua a non funzionare.

        In ogni modo, al di là di come risolvere il problema che è comunque interessante, pensate possa essere una buona idea oppure una cosa del tipo

        `\newtheorem{esercizio}{Esercizio}
        \newenvironment{soluzione}{\begin{proof}[Soluzione]}{\end{proof}}


        \section
        \begin{esercizio}\label{ex:1}
        problema
        \end{esercizio}

        \section{Soluzioni}
        \begin{soluzione}[Esercizio \vref{ex:1}]
        risolto
        \end{soluzione}
        `

        sarebbe meglio comunque, anche se non potrei di sicuro riferirmi alla soluzione con un \vref{sol:1}?

        grazie mille 🙂

        Il modo è abbastanza standard:
        `\usepackage{amsthm}
        \theoremstyle{definition} % corpo in tondo
        \newtheorem*{soluzione*}{Soluzione \dellesercizio}
        \newenvironment{soluzione}[1]
        {\def\dellesercizio{\ref{#1}}\begin{soluzione*}}
        {\end{soluzione*}}

        \begin{esercizio}\label{somma}
        Calcolare $1+2$.
        \end{esercizio}

        \begin{soluzione}{somma}
        $1+2=1+s(1)=s(1+1)=s(1+s(0))=s(s(1+0))=s(s(1))=s(2)=3.
        \end{soluzione}`
        Ciao
        Enrico

        Ho creato una nuova discussione.

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

    Go to top