comando con un numero variabile di argomenti

  • Creatore
    Topic
  • #27569
    Up
    0
    Down
    ::


    Ciao a tutti.
    Volevo sapere se è possibile usare il comando \newcommand (o qualcosa del genere) non specificando il numero di argomenti. Mi spiego meglio. Supponiamo di dover scrivere delle ricette e di voler fare il comando \ingredienti da utilizzare con un numero di argomenti diversi (non è detto che ogni ricetta abbia lo stesso numero di ingredienti). Qualcuno a qualche idea?

    Grazie in anticipo

    ES

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #27570
      Up
      0
      Down
      ::

      Ciao a tutti.
      Volevo sapere se è possibile usare il comando \newcommand (o qualcosa del genere) non specificando il numero di argomenti. Mi spiego meglio. Supponiamo di dover scrivere delle ricette e di voler fare il comando \ingredienti da utilizzare con un numero di argomenti diversi (non è detto che ogni ricetta abbia lo stesso numero di ingredienti). Qualcuno a qualche idea?

      Ho qualche idea. 😀 (Cerca il rosso. :D)
      `\newenvironment{ingredienti}[1]
      {\textbf{Ingredienti} (Dosi per #1 persone)\obeylines}
      {\par}

      \begin{ingredienti}[1500]
      700 kg gnu
      200 kg armadillo
      600 kg farina
      1254 uova

      \end{ingredienti}`
      Ciao
      Enrico

    • #27571
      Up
      0
      Down
      ::


      Hai perfettamente ragione!!! In effetti pensavo ad un altra cosa, ovvero a fare un itemize con un numero indefinito di item in modo da richiamare poi qualcosa del tipo

      \ingredienti{primo ingrediente}{secondo}{terzo}{quarto}

      che mi producesse appunto gli ingredienti in un itemize.

      Comunque grazie mille!

    • #27572
      Up
      0
      Down
      ::

      Hai perfettamente ragione!!! In effetti pensavo ad un altra cosa, ovvero a fare un itemize con un numero indefinito di item in modo da richiamare poi qualcosa del tipo

      \ingredienti{primo ingrediente}{secondo}{terzo}{quarto}

      che mi producesse appunto gli ingredienti in un itemize.

      Mi chiedo dove sia la differenza fra scrivere come vorresti tu e
      `\begin{itemize}
      \item 700 kg gnu
      \item 200 kg armadillo
      \item 600 kg farina
      \item 1254 uova

      \end{itemize}`
      Ciao
      Enrico

    • #27573
      Up
      0
      Down
      ::


      secondo me un po’ di differenza c’è. Pensa di dover scrivere un libro con 1000 ricette; nel modo che dici tu si usano all’incirca 80000 caratteri in più rispetto a quello che pensavo io.
      In più se decidi di cambiare il modo in cui mostrare l’itemize (se con un pallino o con un quadretto … ) nel modo che dici tu andrebbe fatto per ogni ricetta, mentre nel modo che pensavo io una volta sola.
      Comunque grazie mille dei consigli, io conosco poco il tex e spero di imparare molto,[/code]

    • #27574
      Up
      0
      Down
      ::

      secondo me un po’ di differenza c’è. Pensa di dover scrivere un libro con 1000 ricette; nel modo che dici tu si usano all’incirca 80000 caratteri in più rispetto a quello che pensavo io.

      Che cosa sono rispetto all’eternità? 🙂
      `\newenvironment{ingredienti}[1]
      {\par\medskip Dosi per #1 persone
      \begin{itemize}}
      {\end{itemize}}
      \newcommand{\I}{\item}

      \begin{ingredienti}[1500]
      \I 700 kg gnu
      \I 200 kg armadillo
      \I 600 kg farina
      \I 1254 uova

      \end{ingredienti}`
      Scegli un nome più breve per l’ambiente e sei a posto.

      In più se decidi di cambiare il modo in cui mostrare l’itemize (se con un pallino o con un quadretto … ) nel modo che dici tu andrebbe fatto per ogni ricetta, mentre nel modo che pensavo io una volta sola.

      `\renewcommand\labelitemi{quello che vuoi tu}`
      Ciao
      Enrico

    • #27575
      Up
      0
      Down
      ::


      grazie! mi hai convinto.

    • #27576
      Up
      0
      Down
      ::

      grazie! mi hai convinto.

      Naturalmente si può fare come vuoi, sebbene occorra qualche nozione di programmazione TeX a basso livello:
      `\def\testforend{\fine}
      \def\catchone#1{\def\decide{#1}%
      \ifx\decide\testforend
      \end{itemize}
      \else
      \item\relax#1
      \expandafter\catchone
      \fi}
      \def\ingredienti{\begin{itemize}\catchone}

      \ingredienti{acqua}{farina}{uova}\fine`
      È necessario un comando “sentinella” alla fine degli argomenti, perché altrimenti TeX non saprebbe quando fermarsi.

      Ciao
      Enrico

    • #27577
      Up
      0
      Down
      ::


      Magnifico voglio imparare a programmare in tex!!!
      Sai consigliarmi qualche guida per principianti.
      Grazie mille

      ES

    • #27578
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        Magnifico voglio imparare a programmare in tex!!!
        Sai consigliarmi qualche guida per principianti.
        Grazie mille

        http://www.guit.sssup.it/phpbb/viewtopic.php?t=4276

        Ciao,
        L.

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

    Go to top