Semplificando newcommand

  • Creatore
    Topic
  • #79460
    Up
    0
    Down
    ::


    Ciao a tutti,
    è un po’ che non scrivo ma non ho mai smesso di seguirvi.
    Dopo la laurea ho trovato lavoro e sto cercando di proporre LaTeX per alcune (piccole) cosette, a questo scopo ho messo su un piccolo pacchetto per la stesura di alcuni tipi rapporti: sostanzialmente contiene solo una serie di RequirePackage, alcune impostazioni particolari, nuove definizioni di titlepage, testatine e piedini.
    Ovviamente tutte queste cose avrebbero tranquillamento trovato un loro posto, forse più naturale, all’interno del preambolo ma sto cercando di semplificare il tutto il più possibile perché gli altri colleghi non abbiano paura di LaTeX.

    Nel preambolo, che ancora incuta timore (a quanto pare), rimangono soltanto
    `
    \newcommand{\codice}{9999999}
    \newcommand{\cliente}{Azienda S.p.A.}
    \newcommand{\indirizzo}{via Tal dei Tali\\
    00000 — , (ZZ), Italia}
    \newcommand{\campioni}{descrizione;}
    \newcommand{\scopo}{scopo del lavoro.}
    `
    i comandi, definiti dall’utente alla creazione di ogni nuovo documento, vengono poi ripresi nella composizione di testatine e titlepage, semplicemente con, ad esempio `\codice`, direttamente inserito nel mio pacchettino.
    Io vorrei semplificare ulteriormente la cosa, di modo che nel preambolo rimanga qualcosa come
    `
    \codice{9999999}
    \cliente{Azienda S.p.A.}
    \indirizzo{via Tal dei Tali\\
    00000 — , (ZZ), Italia}
    \campioni{descrizione;}
    \scopo{scopo del lavoro.}
    `
    Sono certo che si tratta di qualcosa molto semplice ma è la prima volta che mi metto a definire comandi.
    Grazie.

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #79461
      Up
      0
      Down
      ::


      Ciao peppo,

      non ho capito che cosa vuoi fare. In particolare, quale comportamento vorresti ottenere con le seguenti righe?

      peppo” post=78595
      Io vorrei semplificare ulteriormente la cosa, di modo che nel preambolo rimanga qualcosa come
      `
      \codice{9999999}
      \cliente{Azienda S.p.A.}
      \indirizzo{via Tal dei Tali\\
      00000 — , (ZZ), Italia}
      \campioni{descrizione;}
      \scopo{scopo del lavoro.}
      `
      Sono certo che si tratta di qualcosa molto semplice ma è la prima volta che mi metto a definire comandi.
      Grazie.

      Ciao e buona serata,
      Marco.

    • #79462
      franen
      Partecipante
        Up
        0
        Down
        ::


        Io farei una cosa simile:`\documentclass{article}
        \newcommand{\codice}[1]{\def\mycodice{#1}}
        \newcommand{\cliente}[1]{\def\mycliente{#1}}

        %comandi modificabili dai colleghi
        \codice{12456}
        \cliente{Azienda tal dei Tali}

        \begin{document}
        %esempio d'uso dei comandi, che tu inserirai nelle testatine o nella prima pagina
        L'Azienda \textsf{\mycliente} ha il codice \texttt{\mycodice}.
        \end{document} `
        A far bene potresti usare dei comandi tipo \@codice e \@cliente, posti fra \makeatletter e \makeatother, ma credo che ciò potrebbe spaventare i colleghi…

        Fran

      • #79463
        Up
        0
        Down
        ::


        Semplicemente, come nelle righe di codice sopra, vorrei definire un comando di modo che scrivendo \codice mi venga stampato 9999999.
        Il comportamento rimane lo stesso, vorrei solo una sintassi più esplicita e fare a meno di \newcommand che, a quanto ho visto, spaventa i miei colleghi… non chiedermi perché o si andrebbe verso il sottile confine tra psicologia e psichiatria.
        Grazie.

        —–EDIT per franen—–
        Per prima cosa grazie.
        I comandi \@codice e \@cliente potrei nasconderli dentro al mio pacchettino personale?
        Sapresti farmi un piccolo esempio o darmi un link per documentarmi? Purtroppo la @ è sempre rimasta un po’ misteriosa ai miei occhi.

      • #79464
        Up
        0
        Down
        ::


        Ciao peppo,

        potresti fare così. Nel tuo pacchettino definisci questo:
        `\usepackage{xifthen}
        \makeatletter
        \newcommand{\codice}[1]{%
        \@namedef{varCodice}{#1}%
        }
        \newcommand{\usaCodice}{\@nameuse{varCodice}}
        \makeatother`
        Nel documento che dovranno scrivere i tuoi colleghi, scriveranno:
        `\codice{12345}`
        E tu nelle testatine userai [tt]\usaCodice[/tt] per utilizzare quanto memorizzato nella variabile [tt]varCodice[/tt] dal comando [tt]\codice[/tt] (nell’esempio “12345”).

        Spero ti sia utile. Ciao,
        Marco.

      • #79465
        Up
        0
        Down
        ::


        Ciao,

        se hai più codici da far inserire, potresti fare così (riporto un codice minimo compilabile, tu, se lo ritieni utile, usane quello ti serve):
        `\documentclass[a4paper,11pt]{report}

        \usepackage{xifthen}

        \newcounter{contatoreCodice}
        \setcounter{contatoreCodice}{1}

        \makeatletter
        \newcommand{\codice}[1]{%
        \@namedef{varCodice\thecontatoreCodice}{#1}%
        \addtocounter{contatoreCodice}{1}%
        }
        \newcommand{\usaCodice}[1]{\@nameuse{varCodice#1}}
        \makeatother

        \newcommand{\esempio}{\usaCodice{1}}

        \begin{document}
        \codice{12345}
        \codice{54321}

        \usaCodice{1}
        \usaCodice{2}
        \esempio

        \end{document}`

        Ciao,
        Marco.

      • #79466
        Up
        0
        Down
        ::

        peppo” post=78595Ciao a tutti,
        è un po’ che non scrivo ma non ho mai smesso di seguirvi.
        Dopo la laurea ho trovato lavoro e sto cercando di proporre LaTeX per alcune (piccole) cosette, a questo scopo ho messo su un piccolo pacchetto per la stesura di alcuni tipi rapporti: sostanzialmente contiene solo una serie di RequirePackage, alcune impostazioni particolari, nuove definizioni di titlepage, testatine e piedini.
        Ovviamente tutte queste cose avrebbero tranquillamento trovato un loro posto, forse più naturale, all’interno del preambolo ma sto cercando di semplificare il tutto il più possibile perché gli altri colleghi non abbiano paura di LaTeX.

        Nel preambolo, che ancora incuta timore (a quanto pare), rimangono soltanto
        `
        \newcommand{\codice}{9999999}
        \newcommand{\cliente}{Azienda S.p.A.}
        \newcommand{\indirizzo}{via Tal dei Tali\\
        00000 — , (ZZ), Italia}
        \newcommand{\campioni}{descrizione;}
        \newcommand{\scopo}{scopo del lavoro.}
        `
        i comandi, definiti dall’utente alla creazione di ogni nuovo documento, vengono poi ripresi nella composizione di testatine e titlepage, semplicemente con, ad esempio `\codice`, direttamente inserito nel mio pacchettino.
        Io vorrei semplificare ulteriormente la cosa, di modo che nel preambolo rimanga qualcosa come
        `
        \codice{9999999}
        \cliente{Azienda S.p.A.}
        \indirizzo{via Tal dei Tali\\
        00000 — , (ZZ), Italia}
        \campioni{descrizione;}
        \scopo{scopo del lavoro.}
        `
        Sono certo che si tratta di qualcosa molto semplice ma è la prima volta che mi metto a definire comandi.
        Grazie.

        Nel preambolo avrai certo [tt]\usepackage{peppo}[/tt]
        nel quale sostituirai tutti gli usi di [tt]\codice[/tt], [tt]\cliente[/tt] eccetera con [tt]\@codice[/tt], [tt]\@cliente[/tt] eccetera.

        Nel pacchetto aggiungerai
        `\newcommand{\codice}[1]{\gdef\@codice{#1}}
        \newcommand{\cliente}[1]{\gdef\@cliente{#1}}

        \def\@codice{???}
        \def\@cliente{???}
        …`
        Ai tuoi colleghi basterà scrivere
        `\codice{12345}
        \cliente{Tal de' Tali}
        …`
        (naturalmente dopo [tt]\usepackage{peppo}[/tt]).

        Ciao
        Enrico

      • #79467
        Up
        0
        Down
        ::


        Grazie mille.
        Ora però mi pare che non posso più usare né \codice\@codice all’interno del mio documento principale per richiamare in modo automatico, ad esempio, codice del campione e nome dell’azienda cliente. È sicuramente un problema minore ma è risolvibile?Come?
        Grazie ancora.

        —OT—
        Come fai a scrivere, qui sul forum, formattando il testo come sans serif?

      • #79468
        Up
        0
        Down
        ::

        peppo” post=78644Grazie mille.
        Ora però mi pare che non posso più usare né \codice\@codice all’interno del mio documento principale per richiamare in modo automatico, ad esempio, codice del campione e nome dell’azienda cliente. È sicuramente un problema minore ma è risolvibile?Come?

        Non userei [tt]\codice[/tt] per due scopi diversi. Probabilmente meglio dire
        `\inseriscicodice{123456}`
        nel documento e
        `\RequirePackage{xspace}
        \def\inseriscicodice#1{\gdef\@codice{#1}\gdef\codice{#1\xspace}}`
        nel pacchetto; potrai usare [tt]\@codice[/tt] nelle macro interne, mentre l’utente può adoperare [tt]\codice[/tt] senza preoccuparsi dello spazio seguente (meglio così, visto che si tratta di “quasi illetterati in LaTeX).

        peppo” post=78644—OT—
        Come fai a scrivere, qui sul forum, formattando il testo come sans serif?

        😕

        Ciao
        Enrico

      • #79469
        Up
        0
        Down
        ::

        peppo” post=78644—OT—
        Come fai a scrivere, qui sul forum, formattando il testo come sans serif?

        Se intendi in [tt]typewriter[/tt] devi utilizzare i tag:
        `[tt]parola[/tt]`

        Ciao
        Claudio

      • #79470
        Up
        0
        Down
        ::


        Perfetto, grazie ad entrambi (in effetti le “grazie” ci sono).
        Vi preannuncio che se sul lavoro l’idea dovesse piacere verrò a disturbarvi ancora per inserire le opzioni all’interno del pacchetto.
        Ciao.

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

    Go to top