Comando per teoremi con nome del teorema [RISOLTO]

  • Creatore
    Topic
  • #58618
    Up
    0
    Down
    ::


    Salve a tutti, sono un pivellino del forum, quindi spero di non fare fesserie aggiungendo un nuovo argomento.

    Il mio intento era, tra l’esercizio di LaTeX e l’effettiva utilità dello stesso, quello di creare un comando che creasse il teorema a partire dal solito comando, mi spiego meglio: normalmente si fa in questa maniera

    `
    \documentclass[12pt, a4paper, twoside]{article}
    \newtheorem{teorema}{Teorema}[section]

    \begin{document}

    \begin{teorema}[di Pitagora rivisitato] La somma di qualche quadrato dà il quadrato di qualcos'altro \end{teorema}
    \end{document}
    `

    ma volevo creare un comando a due argomenti di questo tipo

    `\newcommand{\Teor}[2][]{\begin{teorema}[#1]#2\end{teorema}}
    …%in seguito nel documento
    \Teor{di Pitagora rivisitato}{La somma di qualche quadrato dà il quadrato di qualcos'altro}
    `

    Rifacendomi ai comandamenti dell’Arte di Scrivere con Latex, la prima parentesi quadra dice il numero di argomenti che il comando si deve aspettare, e se il primo argomento è lasciato vuoto gli viene assegnato il valore della seconda parentesi quadra, in questo caso niente se ad esempio il teorema non ha nome o simili.

    Il punto è che, provare per credere, non c’è combinazione che gli piaccia…come posso fare?

    Vi ringrazio in anticipo

    Martino

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #58619
      Up
      0
      Down
      ::

      Salve a tutti, sono un pivellino del forum, quindi spero di non fare fesserie aggiungendo un nuovo argomento.

      Il mio intento era, tra l’esercizio di LaTeX e l’effettiva utilità dello stesso, quello di creare un comando che creasse il teorema a partire dal solito comando, mi spiego meglio: normalmente si fa in questa maniera

      `
      \documentclass[12pt, a4paper, twoside]{article}
      \newtheorem{teorema}{Teorema}[section]

      \begin{document}

      \begin{teorema}[di Pitagora rivisitato] La somma di qualche quadrato dà il quadrato di qualcos'altro \end{teorema}
      \end{document}
      `

      ma volevo creare un comando a due argomenti di questo tipo

      `\newcommand{\Teor}[2][]{\begin{teorema}[#1]#2\end{teorema}}
      …%in seguito nel documento
      \Teor{di Pitagora rivisitato}{La somma di qualche quadrato dà il quadrato di qualcos'altro}
      `

      Rifacendomi ai comandamenti dell’Arte di Scrivere con Latex, la prima parentesi quadra dice il numero di argomenti che il comando si deve aspettare, e se il primo argomento è lasciato vuoto gli viene assegnato il valore della seconda parentesi quadra, in questo caso niente se ad esempio il teorema non ha nome o simili.

      Il punto è che, provare per credere, non c’è combinazione che gli piaccia…come posso fare?

      Benvenuto.

      Il problema è che tu specifichi sempre un argomento opzionale all’ambiente “teorema”, che se non dai un argomento opzionale a \Teor sarà vuoto; questo comunque provocherà l’apparizione della coppia di parentesi senza niente dentro.

      Ma il problema maggiore è un altro: dov’è il vantaggio di definire un comando come \Teor? Io non ne vedo alcuno: la forma “ad ambiente” è più comoda, più facilmente gestibile e più evidente nel codice.
      `\begin{teorema}[di Murphy]\label{teor.murphy}
      Se qualcosa può andare storto, lo farà.
      \end{teorema}`
      I comandi e dichiarazioni ausiliarie del teorema stanno su una riga, il testo su quelle successive, il comando di fine sta su un’altra riga. Il comando a due argomenti ti costringe invece a tenere conto delle graffe ed è facile perdersene una.

      Ciao
      Enrico

    • #58620
      Up
      0
      Down
      ::


      Ciao enrico

      In realtà l’utilità non è poi granchè, ma sicuramente è un buon esercizio per capire la questione degli argomenti opzionali nei nuovi comandi.

      Comunque il punto è che si comporta in modo diverso nei seguenti casi, prova a compilare direttamente questo per rendertene conto

      `
      \documentclass[12pt, a4paper, twoside]{article}
      \usepackage[T1]{fontenc}
      \newtheorem{teorema}{Teorema}[section]
      \newcommand{\Teor}[2][]{\begin{teorema}[#1]#2\end{teorema}}

      \begin{document}

      Questi due dovrebbero essere uguali, in testa mia:

      \Teor{di Murphy}{Se qualcosa può andare storto, lo farà.}

      \begin{teorema}[di Murphy]
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      E anche questi due dovrebbero, ma non lo sono!

      \Teor{}{Se qualcosa può andare storto, lo farà.}

      \begin{teorema}
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      E ti dirò di più: guarda che succede se lascio le parentesi quadre ma vuote

      \begin{teorema}[]
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      \end{document}`

      risultato: lui prende l’argomento della prima parentesi e lo ritiene come l’enunciato del teorema, mentre la seconda parentesi è semplicemente presa come testo, cioè non come argomento del comando \Teor, e dato che il mio esercizio è mirato a capire perchè si comporta così più che a trovare un modo alternativo, non riesco a capacitarmi…anche se indubbiamente la forma di ambiente evita molti problemi e distrazioni…

      [/code]

    • #58621
      Up
      0
      Down
      ::

      Ciao enrico

      In realtà l’utilità non è poi granchè, ma sicuramente è un buon esercizio per capire la questione degli argomenti opzionali nei nuovi comandi.

      Comunque il punto è che si comporta in modo diverso nei seguenti casi, prova a compilare direttamente questo per rendertene conto

      `
      \documentclass[12pt, a4paper, twoside]{article}
      \usepackage[T1]{fontenc}
      \newtheorem{teorema}{Teorema}[section]
      \newcommand{\Teor}[2][]{\begin{teorema}[#1]#2\end{teorema}}

      \begin{document}

      Questi due dovrebbero essere uguali, in testa mia:

      \Teor{di Murphy}{Se qualcosa può andare storto, lo farà.}

      \begin{teorema}[di Murphy]
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      E anche questi due dovrebbero, ma non lo sono!

      \Teor{}{Se qualcosa può andare storto, lo farà.}

      \begin{teorema}
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      E ti dirò di più: guarda che succede se lascio le parentesi quadre ma vuote

      \begin{teorema}[]
      Se qualcosa può andare storto, lo farà.
      \end{teorema}

      \end{document}`

      risultato: lui prende l’argomento della prima parentesi e lo ritiene come l’enunciato del teorema, mentre la seconda parentesi è semplicemente presa come testo, cioè non come argomento del comando \Teor, e dato che il mio esercizio è mirato a capire perchè si comporta così più che a trovare un modo alternativo, non riesco a capacitarmi…anche se indubbiamente la forma di ambiente evita molti problemi e distrazioni…

      Hai definito il comando \Teor con un argomento opzionale e uno obbligatorio: la sintassi è
      `\Teor[opzionale]{obbligatorio}`
      Quindi
      `\Teor[di Murphy]{Se qualcosa può andare storto, lo farà.}`
      Ciao
      Enrico

    • #58622
      Up
      0
      Down
      ::


      Ottimo! grazie mille, ora forse ho capito il concetto!!! grazie mille!

      Martino

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

Go to top