Accettare solo argomenti non nulli

  • Creatore
    Topic
  • #48285
    robitex
    Amministratore del forum
      Up
      0
      Down
      ::


      Ciao,
      vorrei discriminare tra un argomento nullo e non. Ciò deriva da alcune necessità sintattiche per la classe basata su report che sto elaborando. Ecco il codice di esempio su cui vorrei confrontarmi con voi:

      `\documentclass[11pt,a4paper]{report}
      \makeatletter
      \def\setmark#1{%
      \def\temp{#1}%
      \ifx\temp\space
      Spazio imbroglione!%
      \else
      \ifx\temp\@empty
      Vuoto maleducato!%
      \else
      \def\mymark{#1}\mymark Ok%
      \fi
      \fi
      }
      \makeatother

      \begin{document}

      1: \setmark{ Valore non nullo }

      2: \setmark{}

      3: \setmark{
      }

      4: \setmark{ }
      \end{document}`

      La domanda è: il codice è corretto? Ci sono delle possibili migliorie oppure, controindicazioni?

      Grazie mille.
      R.

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #48286
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Credo che a meno di uno spazio dopo \mymark il codice possa essere considerato corretto per una analisi a tre vie come quello che proponi:
          `
          \documentclass[11pt,a4paper]{report}
          \makeatletter
          \def\setmark#1{%
          \def\temp{#1}%
          \ifx\temp\space
          Spazio imbroglione!%
          \else
          \ifx\temp\@empty
          Vuoto maleducato!%
          \else
          \def\mymark{#1}\mymark\ Ok%
          \fi
          \fi
          }
          \makeatother

          \begin{document}

          1: \setmark{ Valore non nullo }

          2: \setmark{}

          3: \setmark{
          }

          4: \setmark{ }
          \end{document}
          `

          Altrimenti hai la possibilità di usare \newcommand con l’argomento facoltativo
          `
          \newcommand\setmark[1][]{%
          \def\mymark{#1}\ifx\mymark\empty …
          \else \ifx\mymark\space …
          \else \mymark\ OK
          \fi
          \fi
          }
          `

          Se lo usi con \setmark senza argomento ti scrive la frase specificate per il caso empty; se ti sbagli e scrivi \setmark[] succede la stessa cosa; se scrivi \setmark[ ] ti scrive la frase per lo spazio; se scrivi \setmark[Pippo] ti scrive Pippo OK.

        • #48287
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Grazie per la risposta.
            Il codice fa parte delle modalità previste per l’accettazione dei valori da sistemare nelle testatine e nei piè di pagina.
            Vorrei che la classe rispondesse con un Warning se viene chiesto di stampare, in una delle posizioni previste, un valore vuoto od uno contenente spazi.

            Passo quindi al prossimo problema da risolvere. Grazie ed a presto.
            R.

        Visualizzazione 1 filone di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top