ambiente per dimostrazioni

  • Creatore
    Topic
  • #48179
    Up
    0
    Down
    ::


    Salve a tutti, per emulare l’ambiente proof di LaTeX, ho pensato di fare cos\`i:

    `
    \definedescription
    [proof]
    [text=Dimostrazione.]

    \setupdescriptions[proof]
    [width=broad,distance=0.5em,
    location=serried,
    headstyle=it,
    headcolor=black,
    style=normal,
    indentnext=yes,
    closesymbol=$\square$]
    `

    Se la dimostrazione finisce per\`o con una formula in display il simbolo di chiusura (\square) lo mette a capo.
    Qualcuno sa come fare ad ovviare a queto? in LaTeX c’era il comando \qedhere che serviva proprio a questo.

    Grazie

    ES

Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #48180
      Up
      0
      Down
      ::


      ecco una soluzione che funziona solo per mkiv:
      `\definedescription
      [proof]
      [text=Proof.]

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      closesymbol=\mathematics{\square},
      closecommand=\ifmmode\eqno\else\wordright\fi]`

      ES

    • #48181
      Up
      0
      Down
      ::


      C’è anche un comando
      `\placeclosesymbol`
      che in teoria dovrebbe essere l’equivalente di \qedhere.
      A me, in mkii, dentro ad una formula mi da errore (funziona per esempio se la dimostrazione finisce con un itemize).

      Ciao

      ES

    • #48182
      Up
      0
      Down
      ::

      ecco una soluzione che funziona solo per mkiv:
      `\definedescription
      [proof]
      [text=Proof.]

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      closesymbol=\mathematics{\square},
      closecommand=\ifmmode\eqno\else\wordright\fi]`

      ES

      Non riesco a capire la differenza tra mkii e mkiv: a me il simbolo qed sembra finire nello stessa posizione in entrambi i casi.

    • #48183
      Up
      0
      Down
      ::


      Per quanto riguarda mkiv non so perché non ho mai provato (riportavo una soluzione data in mailing list).
      Per mkii invece a me da errore e non compila neanche 🙁

      ES

    • #48184
      Up
      0
      Down
      ::

      C’è anche un comando
      `\placeclosesymbol`
      che in teoria dovrebbe essere l’equivalente di \qedhere.
      A me, in mkii, dentro ad una formula mi da errore (funziona per esempio se la dimostrazione finisce con un itemize).

      Ciao

      ES

      Una cosa di questo tipo ?

      `

      \definedescription
      [proof]
      [text=Proof.]

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      %closesymbol=\square,
      after={\nobreak\vskip-1.75\lineheight\nobreak\hbox to \hsize{\hfill$\square$}\vskip1.75\lineheight},
      ]

      \starttext

      \startproof
      Questa \'e una dimostrazione
      \startformula
      a=b
      \stopformula
      \stopproof
      \input tufte
      \stoptext
      `

    • #48185
      Up
      0
      Down
      ::


      Si funziona! sei troppo bravo.
      Se proprio si vuole essere precisi, l’allineamento verticale non è sempre corretto, per esempio se si sostituisce la formula con
      `a=\int_\sum b^2`
      si vede abbastanza bene.

      Infine ci sarebbe da sistemare la questione se la formula finale \`e numerata.

      Comunque mi ritengo soddisfatto.

      Grazie

      ES

    • #48186
      Up
      0
      Down
      ::

      Si funziona! sei troppo bravo.
      Se proprio si vuole essere precisi, l’allineamento verticale non è sempre corretto, per esempio se si sostituisce la formula con
      `a=\int_\sum b^2`
      si vede abbastanza bene.

      Infine ci sarebbe da sistemare la questione se la formula finale \`e numerata.

      Comunque mi ritengo soddisfatto.

      Grazie

      ES

      Era solo un esempio per vedere se avevo capito: \vskip-1.75\lineheight è fatto per tentativi
      CMQ ci penso, ci sono alcune cose interessanti.

    • #48187
      Up
      0
      Down
      ::

      Era solo un esempio per vedere se avevo capito.

      Hai capito perfettamente.

    • #48188
      Up
      0
      Down
      ::

      Era solo un esempio per vedere se avevo capito.

      Hai capito perfettamente.

      `
      \setupcolors[state=start]
      \definedescription
      [proof]
      [text=Proof.]

      \newdimen\RecordPos
      \newdimen\TempPos
      \def\QEDHERE{\rlap{\vrule width\textwidth height1pt depth0pt}\global\RecordPos=\the\pagetotal}
      \def\PutQED{%
      %\par\nointerlineskip\vskip0pt
      \rlap{\color[blue]{\vrule width\textwidth height1sp depth0pt}}%
      \TempPos=\the\pagetotal%
      \nobreak\vskip-\the\dimexpr(\TempPos-\RecordPos)%
      \nobreak\hbox to \textwidth{\hfill$\square$}\vskip\the\dimexpr(\TempPos-\RecordPos-\lineheight)
      }

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      after=\PutQED,
      ]

      \starttext

      \startproof
      Questa \'e una dimostrazione
      \startformula
      a=\int_{\sum_{\int_\sum^6}}^{100}\sum b^2\QEDHERE
      \stopformula
      \stopproof

      \startproof
      Questa \'e una dimostrazione
      \startformula
      a=b \QEDHERE
      \stopformula
      \stopproof

      \startproof
      Questa \'e una dimostrazione
      \startformula
      a=\frac{1}{c} \QEDHERE
      \stopformula
      \stopproof

      \startproof
      Questa \'e una dimostrazione
      \startformula
      a=\sum b\QEDHERE
      \stopformula
      \stopproof

      \stoptext

      `

      L’idea è semplice: memorizza con \QEDHERE il punto dove appare la formula,
      una volta chiuso proof torna su fino al punto, metti $\square$, e ritorna alla fine di proof.

      Ma deve esserci qualche altro spazio che mi sfugge, quindi come realizzazione non è un granchè
      (se non vuoi vedere le rule mettile ad altezza 0pt).

    • #48189
      Up
      0
      Down
      ::

      L’idea è semplice:

      \`e la realizzazione che è difficile 🙂
      Apparte gli scherzi, appena ho un po’ di tempo la leggo attentamente.
      Intanto avevo pensato ad un trucchetto probabilmente non molto elegante visto che bisogna usare due comandi, comunque funziona

      `\definedescription
      [proof]
      [text=Proof.]

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      closesymbol=\mathematics{\square}]

      \def\QEDhere{\eqno\mathematics{\square}}
      \def\NOsymbol{\setupdescriptions
      [proof][closesymbol=]}
      \starttext
      \startproof
      Questa \`e una dimostrazione che finisce cos\`i.
      \stopproof

      \startproof
      Questa \`e una dimostrazione che finisce con formula
      \startformula
      a=\int_{\sum_{\int_\sum^6}}^{100}\sum b^2\QEDhere
      \stopformula\NOsymbol
      \stopproof

      \startproof
      Questa \`e una dimostrazione che finisce cos\`i.
      \stopproof

      \stoptext`

      Che ne dici?

      ES

    • #48190
      Up
      0
      Down
      ::


      anche se non riesco a gestire adeguatamente il caso di una formula numerata (in LaTeX con il comando \qedhere il quadratino si situava immediatamente sotto al numero)

      ES

    • #48191
      Up
      0
      Down
      ::


      Probabilmente, se riuscissi a capire questo codice
      `\def\@@resetdescriptionclosesymbol
      {\global\@EA\settrue\csname\??dd\currentdescription:mrk\endcsname
      \let\placeclosesymbol\@@placedescriptionclosesymbol
      \let\qed \@@placedescriptionclosesymbol}

      \def\@@placedescriptionclosesymbol
      {\ifconditional\csname\??dd\currentdescription:mrk\endcsname
      \global\@EA\setfalse\csname\??dd\currentdescription:mrk\endcsname
      \doifsomething{\descriptionparameter\c!closesymbol}{\descriptionparameter\c!closecommand{\descriptionparameter\c!closesymbol}}%
      \fi}
      `
      Potrei anche fare un comando solo..

      ES

    • #48192
      Up
      0
      Down
      ::


      E perché non due “proof” ?

      `
      \definedescription
      [proof]
      [text=Proof.]

      \setupdescriptions
      [proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      closesymbol=\mathematics{\square}]

      \definedescription[Proof][text=Proof.]
      \setupdescriptions
      [Proof]
      [width=broad,
      distance=0.5em,
      location=serried,
      headstyle=it,
      indentnext=yes,
      indenting=yes,
      closesymbol=]

      \def\QEDhere{\eqno\mathematics{\square}}

      \starttext
      \startproof
      Questa \`e una dimostrazione che finisce cos\`i.
      \stopproof

      \startProof
      Questa \`e una dimostrazione che finisce con formula
      \startformula
      a=\int_{\sum_{\int_\sum^6}}^{100}\sum b^2\QEDhere
      \stopformula
      \stopProof

      \startProof
      Questa \`e una dimostrazione che finisce cos\`i.
      \stopProof

      \startproof
      Questa \`e una dimostrazione che finisce cos\`i.
      \stopproof

      \stoptext

      `

    • #48193
      Up
      0
      Down
      ::

      E perché non due “proof” ?

      Nel pacchetto amsthm il problema è risolto con un condizionale: se c’è \qedhere il condizionale cambia valore e \end{proof} non stampa nulla. Naturalmente il \qedhere non viene stampato per mezzo di \eqno, perché sarebbe incompatibile con la numerazione: non ci possono essere \eqno e \leqno nella stessa formula. È chiaro che \qedhere non può essere usato se i numeri delle equazioni sono a destra.

      Ciao
      Enrico

    • #48194
      Up
      0
      Down
      ::

      È chiaro che \qedhere non può essere usato se i numeri delle equazioni sono a destra.

      Ti riferisci al \qedhere di amsthm o al mio \QEDhere?
      Il primo mi sembrava si potesse usare anche per formule numerate a destra (il quadratino andava subito sotto il numero) ma forse mi sbaglio.
      Per il mio in effetti non si può..

      Ciao

      ES

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

Go to top