Problema con una condizione

  • Creatore
    Topic
  • #19751
    Up
    0
    Down
    ::


    Ho definito tramite un comando i seguenti parametri

    `
    \def\pagespan#1#2{
    \def\start@page{#1}
    \def\end@page{#2}
    \ifx\start@page\@empty
    \def\start@page{\pageref{artinizio\thearticle}}
    \fi
    \ifx\end@page\@empty
    \def\end@page{\pageref{artfine\thearticle}}
    \fi
    }`
    che uso come puntatori per costruire le testatine dei vari articoli.
    Prima non utilizzavo il comando pagref ma definivo il numero di pagina con il comando pagespan.
    Il problema che la condizione che usavo per la costruzione delle testatine
    `
    \ifx\start@page\end@page
    \start@page\
    \else
    \start@page\,–\,\end@page\
    \fi
    `
    funziona se definisco i numeri di pagina con il comando \pagespan{3}{3}, ma non funziona più se deve confrontare start@page e end@page non espansi. Hoo provato a sostituire \ifx con \if ma la condizione onn è comunque vera.
    Qualche suggerimento?

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #19752
      Up
      0
      Down
      ::

      Ho definito tramite un comando i seguenti parametri
      `\def\pagespan#1#2{
      \def\start@page{#1}
      \def\end@page{#2}
      \ifx\start@page\@empty
      \def\start@page{\pageref{artinizio\thearticle}}
      \fi
      \ifx\end@page\@empty
      \def\end@page{\pageref{artfine\thearticle}}
      \fi
      }`
      che uso come puntatori per costruire le testatine dei vari articoli.
      Prima non utilizzavo il comando pagref ma definivo il numero di pagina con il comando pagespan.
      Il problema che la condizione che usavo per la costruzione delle testatine
      `
      \ifx\start@page\end@page
      \start@page\
      \else
      \start@page\,–\,\end@page\
      \fi
      `
      funziona se definisco i numeri di pagina con il comando \pagespan{3}{3}, ma non funziona più se deve confrontare start@page e end@page non espansi. Hoo provato a sostituire \ifx con \if ma la condizione onn è comunque vera.
      Qualche suggerimento?

      No, \if proprio non ci va. Probabilmente ciò che ti serve è usare \edef nella definizione di \pagespan:
      `\def\pagespan#1#2{%
      \def\start@page{#1}%
      \def\end@page{#2}%
      \ifx\start@page\@empty
      \edef\start@page{\pageref{artinizio\thearticle}}%
      \fi
      \ifx\end@page\@empty
      \edef\end@page{\pageref{artfine\thearticle}}%
      \fi
      }`
      Ciao
      Enrico

    • #19753
      Up
      0
      Down
      ::


      Ci avevo già provato, ma mi da un errore
      )
      Missing control sequence inserted.
      (inserted text)
      \inacessible

      il cui significato mi è oscuro.

    • #19754
      Up
      0
      Down
      ::


      Ho provato con la definizione protetta di edef (credo che ci sia un problema di protezione da qualche parte)
      `\protected@edef`
      E in effetti adesso compila, ma il riferimento incrociato che al momento della definizione non è ancora stato definito non funziona, mette i classici ??.

    • #19755
      Up
      0
      Down
      ::

      Ho provato con la definizione protetta di edef (credo che ci sia un problema di protezione da qualche parte)
      `\protected@edef`
      E in effetti adesso compila, ma il riferimento incrociato che al momento della definizione non è ancora stato definito non funziona, mette i classici ??.

      È vero, occorre stare attenti a ciò che si espande e \protected@edef è ciò che ci vuole.

      Alla compilazione successiva LaTeX troverà il riferimento giusto; come può sapere ciò che ancora non sa nessuno, cioè il numero di pagina finale?

      Ciao
      Enrico

    • #19756
      Up
      0
      Down
      ::


      Scusa, in realtà il problema sono io che chiamavo il comando prima di far avanzare il contatore, risultato il riferimento era a un inesistente articolo 0.
      Grazie mille per la pronta consulenza.

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

Go to top