\newcommand con argomenti opzionali

  • Creatore
    Topic
  • #11940
    Up
    0
    Down
    ::


    Salve a tutti, e buon 2007.
    Sto provando a usare \newcommand per sveltire l’inserimento di citazioni delle fonti primarie della mia ricerca. Faccio presente che per gestire la mia bibliografia uso biblatex.
    Ecco, per esempio, il comando \dub, che uso per citare Gente di Dublino di James Joyce.

    `\newcommand{\dub}[1]{\footcite[{#1}]{Joyce:2000-518}}`

    Ora, questo comando funziona bene; è sufficiente che nel testo metta
    `\dub{5}`
    Ed appare una citazione a piè di pagina della pagina 5 di Gente di Dublino.

    Vorrei però migliorare il comando. Con biblatex, l comando \footcite consente di inserire un ulteriore parametro opzionale, con questa sintassi:
    `\footcite[testoPrima][testoDopo]{BIBKEY}`
    Se si inserisce un solo parametro, biblatex lo considera ‘testoDopo‘, e lo inserice dopo la citazione; con due parametri biblatex genera una nota con testoPrima citazione testoDopo.
    Mi piacerebbe implementare la stessa funzionalità nel mio comando.
    Così, per esempio, scrivendo \dub{10} dovrei vedere

    Joyce, Dubliners, p. 10.

    Se invece scrivessi \dub{Si veda }{11}, vorrei vedere

    Si veda Joyce, Dubliners, p. 11.

    Ho cercato lumi su internet, ma non sono riuscito a implementare questo secondo parametro opzionale (che, importante, dovrebbe essere il primo se e solo se ce ne sono due).
    Aulcuno mi sa aiutare?

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #11941
      Up
      0
      Down
      ::

      Salve a tutti, e buon 2007.
      Sto provando a usare \newcommand per sveltire l’inserimento di citazioni delle fonti primarie della mia ricerca. Faccio presente che per gestire la mia bibliografia uso biblatex.
      Ecco, per esempio, il comando \dub, che uso per citare Gente di Dublino di James Joyce.

      `\newcommand{\dub}[1]{\footcite[{#1}]{Joyce:2000-518}}`

      Ora, questo comando funziona bene; è sufficiente che nel testo metta
      `\dub{5}`
      Ed appare una citazione a piè di pagina della pagina 5 di Gente di Dublino.

      Vorrei però migliorare il comando. Con biblatex, l comando \footcite consente di inserire un ulteriore parametro opzionale, con questa sintassi:
      `\footcite[testoPrima][testoDopo]{BIBKEY}`
      Se si inserisce un solo parametro, biblatex lo considera ‘testoDopo‘, e lo inserice dopo la citazione; con due parametri biblatex genera una nota con testoPrima citazione testoDopo.
      Mi piacerebbe implementare la stessa funzionalità nel mio comando.
      Così, per esempio, scrivendo \dub{10} dovrei vedere

      Joyce, Dubliners, p. 10.

      Se invece scrivessi \dub{Si veda }{11}, vorrei vedere

      Si veda Joyce, Dubliners, p. 11.

      Ho cercato lumi su internet, ma non sono riuscito a implementare questo secondo parametro opzionale (che, importante, dovrebbe essere il primo se e solo se ce ne sono due).

      Certo, agli ordini. 😀
      `\newcommand{\dub}[2][]{\def\optdub{#1}%
      \ifx\optdub\empty\footcite[#2]{Joyce:2000-518}\else\footcite[#1][#2]{Joyce:2000-518}}`
      Definisci \dub con un argomento opzionale e uno obbligatorio; se l’argomento opzionale non è presente (o è vuoto), il condizionale nella definizione è vero.

      Lo usi come \dub[Si veda]{11} oppure come \dub{5}

      Ciao
      Enrico

    • #11942
      Up
      0
      Down
      ::


      Ciao nutsmuggler.

      Ti faccio un esempio di un nuovo comando (abbastanza idiota) con un parametro opzionale, sperando che possa aiutarti come spunto per realizzare il comando che ti serve:
      `\newcommand{\titolo}[2][dott.]{il #1~#2}`
      Questo comando, in condizioni normali, si aspetta come parametro obbligatorio il cognome di una persona e lo stampa dopo averne specificato il titolo («dott.» è il titolo predefinito).

      Il comando può accettare un parametro opzionale in cui è possibile specificare un titolo diverso, se «dott.» non va bene. Da’ un’occhiata al seguente esempio di utilizzo:
      `\documentclass{article}

      \newcommand{\titolo}[2][dott.]{il #1~#2}

      \begin{document}

      Viva Fantozzi!

      Viva \titolo{Fantozzi}!

      Viva \titolo[rag.]{Fantozzi}!

      \end{document}
      `
      Saluti.

    • #11943
      Up
      0
      Down
      ::


      Vi ringrazio entrambi.
      Ho provato entrambe le soluzioni. Quella di egreg mi bloccava la compilazione quando omettevo il parametro opzionale; il log mi diceva che mancava il comando \fi.
      Alla fine, ho lavorato sul suggerimento di rodimus e ho impostato il comando così:
      `
      \newcommand{\dub}[2][]{\footcite[#1][#2]{Joyce:2000-518}}
      `
      Mi sembra che funzioni bene.
      Voi cosa dite? C’è qualche problema potenziale?
      Grazie ancora per l’aiuto,
      Davide

    • #11944
      Up
      0
      Down
      ::

      Vi ringrazio entrambi.
      Ho provato entrambe le soluzioni. Quella di egreg mi bloccava la compilazione quando omettevo il parametro opzionale; il log mi diceva che mancava il comando \fi.
      Alla fine, ho lavorato sul suggerimento di rodimus e ho impostato il comando così:
      `
      \newcommand{\dub}[2][]{\footcite[#1][#2]{Joyce:2000-518}}
      `
      Mi sembra che funzioni bene.
      Voi cosa dite? C’è qualche problema potenziale?
      Grazie ancora per l’aiuto,
      Davide

      Solito errore di copia-incolla: ci manca un \fi, infatti, prima dell’ultima graffa. 😥

      Dipende da come è definito il comando \footcite: se la presenza di un primo argomento opzionale vuoto non lo disturba, la soluzione che hai è ottima.

      Ciao
      Enrico

    • #11945
      Up
      0
      Down
      ::


      Già, mi sono reso conto che \footcite accetta senza problemi i parametri vuoti, quindi la soluzione ‘pigra’ funziona.
      A questo punto mi chiedo se si possa rendere il comando più flessibile.
      Sarebbe possibile far si che se il comando si trova in un environment \footnote anzichè \footcite diventi un semplice \cite?
      Grazie ancora per l’aiuto,
      Davide

    • #11946
      Up
      0
      Down
      ::

      Già, mi sono reso conto che \footcite accetta senza problemi i parametri vuoti, quindi la soluzione ‘pigra’ funziona.
      A questo punto mi chiedo se si possa rendere il comando più flessibile.
      Sarebbe possibile far si che se il comando si trova in un environment \footnote anzichè \footcite diventi un semplice \cite?

      \footnote è un comando e non un ambiente; questo provoca qualche piccolo problema. Ammesso che \cite accetti gli stessi argomenti di \footcite e che tu abbia caricato il pacchetto color, questo potrebbe funzionare:
      `\makeatletter
      \let\orig@makefntext\@makefntext
      \def\@makefntext{\let\footcite\cite\orig@makefntext}
      \makeatother`
      Se \cite non accetta gli stessi argomenti di \footcite, occorre qualcosa di più.

      Se non hai fra i pacchetti caricati color, è il momento di chiamarlo in causa. Il motivo è un po’ misterioso, ma non difficile.

      Ciao
      Enrico

    • #11947
      Up
      0
      Down
      ::


      Cite accetta gli stessi argomenti di footcite, la sintassi è esattamente uguale.
      Ho aggiunto \usepackage{color} ed ho inserito il tuo codice all’inizio del documento, dopo il caricamento dei pacchetti, ma non ha sortito alcun effetto. Immagino di doverlo mettere in un punto specifico…
      Ciao,
      Davide

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

Go to top