Nuovo comando con argomenti facoltativi

  • Creatore
    Topic
  • #82835
    Up
    0
    Down
    ::


    Ciao a tutti,

    tempo fa, su questo forum, mi pare di aver letto la definizione che un utente aveva fatto di un nuovo comando che accettava un (o più, non ricordo) argomento facoltativo. Purtroppo non riesco più a trovare quella discussione. Ho provato anche a cercare sulle guide (Arte e Guida GuIT), ma non ho capito come fare quello che vorrei.

    Vorrei creare un comando che accetta, diciamo, 5 argomenti. Uno o due di questi dovrebbe essere facoltativo. Nel caso in cui questi argomenti facoltativi non venissero usati, allora il comando dovrebbe usare dei valori predefiniti. È possibile fare questo?

    Grazie mille e buon week end,
    Marco.

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #82836
      Up
      0
      Down
      ::

      Marco87″ post=82209Ciao a tutti,

      tempo fa, su questo forum, mi pare di aver letto la definizione che un utente aveva fatto di un nuovo comando che accettava un (o più, non ricordo) argomento facoltativo. Purtroppo non riesco più a trovare quella discussione. Ho provato anche a cercare sulle guide (Arte e Guida GuIT), ma non ho capito come fare quello che vorrei.

      Vorrei creare un comando che accetta, diciamo, 5 argomenti. Uno o due di questi dovrebbe essere facoltativo. Nel caso in cui questi argomenti facoltativi non venissero usati, allora il comando dovrebbe usare dei valori predefiniti. È possibile fare questo?

      Grazie mille e buon week end,
      Marco.

      Certo. Per un solo argomento facoltativo al primo posto c’è il semplice
      `\newcommand{\foo}[3][default]{#1–#2–#3}`
      Così [tt]\foo{A}{B}[/tt] stamperà “default–A–B”, mentre [tt]\foo[X]{A}{B}[/tt] stamperà “X–A–B”.

      Per più argomenti facoltativi puoi usare xparse:
      `\usepackage{xparse}
      \NewDocumentCommand{\foo}{ O{def1} m O{def2} m } {#1–#2–#3–#4}`
      Le possibilità sono
      `\foo{A}{B}
      \foo[X]{A}{B}
      \foo{A}[Y]{B}
      \foo[X]{A}[Y]{B}`
      Ma meno argomenti facoltativi usi meglio vivi. 🙂

      Ciao
      Enrico

    • #82837
      Up
      0
      Down
      ::


      Ciao Enrico,

      grazie mille! 🙂

      egreg9Ma meno argomenti facoltativi usi meglio vivi. 🙂

      Hai sicuramente ragione. Non ne abuserò!

      Ciao,
      Marco.

    • #82838
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        In ogni caso abbi sempre a portata di mano la guida tematica LaTeX Reference manual commentato, dove c’è la prima spiegazione che ti ha dato Enrico; quella GuidaTeMatica non è la stessa cosa dell’appendice G della precedente versione della GuidaGuIT o del capitolo 29 dell’attuale versione; dove c’è la spiegazione. Anche il capitolo Nuovi comandi, contiene le definizioni e le sintassi di \newcoomand e di \renewcommand, che appunto servono per definire un comando con un solo argomento facoltativo.

        Il consiglio di Enrico di non abusare dei comandi con argomenti facoltativi è quanto mai opportuno; “quanno ce vò, ce vò” ma non bisogna abusarne.

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

    Go to top