program.2 has been referenced but does not exist!!! Ufffffff

  • Creatore
    Topic
  • #53864
    Up
    0
    Down
    ::


    Ciao a tutti…. nuovo problema…..
    `
    \begin{program}[!ht] \small
    \begin{verbatim}

    #include

    int main()
    {
    ……
    return 0;
    }
    \end{verbatim}
    \caption{Dimensioni dei tipi in memoria.}
    \label{prog-ampiezza-puntatori}
    \end{program}
    `
    Ma come mai il \ref{} punta alla pagina 1???

    Grazie in anticipo e buone feste!
    Ciao

    phantomsection risolve il problema…

    `
    \begin{program}[!h]
    \caption{Hello C.}
    \phantomsection
    \small
    \begin{verbatim}
    #include

    int main()
    {
    printf(“Hello C.\n”);
    return 0;
    }
    \end{verbatim}
    \label{hello-c}
    \end{program}
    `

Visualizzazione 14 filoni di risposte
  • Autore
    Risposte
    • #53865
      Up
      0
      Down
      ::

      Ciao a tutti…. nuovo problema…..
      `
      \begin{program}[!ht] \small
      \begin{verbatim}

      #include

      int main()
      {
      ……
      return 0;
      }
      \end{verbatim}
      \caption{Dimensioni dei tipi in memoria.}
      \label{prog-ampiezza-puntatori}
      \end{program}
      `
      Ma come mai il \ref{} punta alla pagina 1???

      Grazie in anticipo e buone feste!
      Ciao

      Senza sapere come definisci l’ambiente program è difficile dire qualcosa. Azzardo una definizione prima che sia stato caricato hyperref.

      Ciao
      Enrico

    • #53866
      Up
      0
      Down
      ::


      😳 …pardon…
      `\floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}
      `
      l’invertire l’ordine di caricamento di float ed hyperref sembra non sortire alcun cambiamento…

    • #53867
      Up
      0
      Down
      ::

      😳 …pardon…
      `\floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}
      `
      l’invertire l’ordine di caricamento di float ed hyperref sembra non sortire alcun cambiamento…

      Non è l’ordine di caricamento, quanto il punto della definizione con \newfloat:
      `…
      \usepackage{float}

      \usepackage{hyperref}

      \newfloat{program}{hp}{lop}
      …`
      Quasi certamente il problema è lì.

      Ciao
      Enrico

    • #53868
      Up
      0
      Down
      ::


      Mmmmmm no, è già così…. ecco l’inizio del mio file:
      `\documentclass[12pt,pdftex,oneside]{scrbook}

      \usepackage[numbers]{natbib}
      \usepackage{classicthesis-ldpkg}
      \usepackage[parts, pdfspacing, linedheaders, listsseparated]{classicthesis}
      \usepackage{amsmath, amsfonts, amssymb, amsbsy, amsthm, fixmath}
      \usepackage[italian]{babel}
      \usepackage{bbm}
      \usepackage{calc, cancel, colortbl}
      \usepackage[T1]{fontenc}
      \usepackage{fancyvrb, fullpage, float}
      \usepackage[pdftex]{graphicx}
      \usepackage{hyperref}
      \usepackage{ifthen}
      \usepackage[utf8x]{inputenc}
      \usepackage{longtable, linearA} %listings,
      \usepackage{marvosym}
      \usepackage{paralist}
      \usepackage{setspace, skak, shorttoc}
      \usepackage{textcomp, textcase, titletoc}
      \usepackage{url}
      \usepackage{verbatim}
      \usepackage{wasysym, wrapfig}
      \usepackage{xcolor}

      \VerbatimFootnotes %necessario x inserire verb++ in footnote

      \floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}`
      grazie ancora

    • #53869
      Up
      0
      Down
      ::

      Mmmmmm no, è già così…. ecco l’inizio del mio file:
      `\documentclass[12pt,pdftex,oneside]{scrbook}

      \usepackage[numbers]{natbib}
      \usepackage{classicthesis-ldpkg}
      \usepackage[parts, pdfspacing, linedheaders, listsseparated]{classicthesis}
      \usepackage{amsmath, amsfonts, amssymb, amsbsy, amsthm, fixmath}
      \usepackage[italian]{babel}
      \usepackage{bbm}
      \usepackage{calc, cancel, colortbl}
      \usepackage[T1]{fontenc}
      \usepackage{fancyvrb, fullpage, float}
      \usepackage[pdftex]{graphicx}
      \usepackage{hyperref}
      \usepackage{ifthen}
      \usepackage[utf8x]{inputenc}
      \usepackage{longtable, linearA} %listings,
      \usepackage{marvosym}
      \usepackage{paralist}
      \usepackage{setspace, skak, shorttoc}
      \usepackage{textcomp, textcase, titletoc}
      \usepackage{url}
      \usepackage{verbatim}
      \usepackage{wasysym, wrapfig}
      \usepackage{xcolor}

      \VerbatimFootnotes %necessario x inserire verb++ in footnote

      \floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}`
      grazie ancora

      Sicuro di volere tutta quella roba? Fra l’altro titletoc è incompatibile con classicthesis (che usa tocloft); graphicx, xcolor, textcase sono già inclusi; verbatim e fancyvrb fanno a pugni; fullpage è insensato; url è inutile. Ho dubbi anche su paralist, visto che le classi KoMa hanno il loro metodo per le liste.

      I pacchetti fontenc, inputenc e babel vanno caricati per primi, in quest’ordine. Dopo classicthesis non va caricato niente.

      Ho provato, comunque, e non ottengo alcun messaggio; se do \listof{program}{Elenco dei programmi}, ottengo il corretto riferimento.

      Ciao
      Enrico

    • #53870
      Up
      0
      Down
      ::


      Enrico, sì, i numeri di pagina riportati nell’indice risultano corretti…. ma qualsivoglia link ipertestuale frutto di hyperref punta verso la pag.1…. lo stesso problema si ha con l’uso di \label e \ref e \pageref…. il problema è lì…
      Per inciso grazie comunque per le annotazioni sui vari pacchetti…. ho alleggerito il carico… 🙂

    • #53871
      Up
      0
      Down
      ::

      Enrico, sì, i numeri di pagina riportati nell’indice risultano corretti…. ma qualsivoglia link ipertestuale frutto di hyperref punta verso la pag.1…. lo stesso problema si ha con l’uso di \label e \ref e \pageref…. il problema è lì…
      Per inciso grazie comunque per le annotazioni sui vari pacchetti…. ho alleggerito il carico… 🙂

      No, non solo il riferimento alla pagina è corretto; anche il link mi porta al posto giusto.

      Prova a costruire un esempio minimo.

      Ciao
      Enrico

    • #53872
      Up
      0
      Down
      ::


      ok, il problema perdura nei \ref e \pageref…. ecco il ‘breve’ esempio:
      `\documentclass[12pt,pdftex,oneside]{scrbook} % ,draft {book}{scrreprt}{scrartcl}
      \usepackage[numbers]{natbib}
      \usepackage{classicthesis-ldpkg}
      \usepackage[parts, pdfspacing, linedheaders, listsseparated]{classicthesis}
      \usepackage{amsmath, amsfonts, amssymb, amsbsy, amsthm, fixmath}
      \usepackage[italian]{babel}
      \usepackage{bbm}
      \usepackage{calc, cancel, colortbl}
      \usepackage[T1]{fontenc}
      \usepackage{fancyvrb, fullpage, float}
      \usepackage{hyperref}
      \usepackage{ifthen}
      \usepackage[utf8x]{inputenc}
      \usepackage{longtable, linearA}
      \usepackage{marvosym}
      \usepackage{paralist}
      \usepackage{setspace, skak, shorttoc}
      \usepackage{textcomp, tocloft}
      \usepackage{verbatim}
      \usepackage{wasysym, wrapfig}

      \floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}

      %RI-DEFINIZIONE PERSONALI
      \renewcommand{\cftpartleader}{\footnotesize\cftdotfill{\cftnodots}} \renewcommand{\cftpartafterpnum}{}
      \renewcommand{\cftchapleader}{\footnotesize\cftdotfill{3\cftdot}} \renewcommand{\cftchapafterpnum}{}
      \renewcommand{\cftsecleader}{\footnotesize\cftdotfill{3\cftdot}} \renewcommand{\cftsecafterpnum}{}
      \renewcommand{\cftsubsecleader}{\footnotesize\cftdotfill{3\cftdot}} \renewcommand{\cftsubsecafterpnum}{}

      %\titleformat{\chapter}{\normalfont\bfseries}{\thechapter}{10pt}{} %\chaptertitlename\
      \titleformat{\section}{\normalfont\bfseries}{\thesection}{10pt}{}
      \titleformat{\subsection}{\normalfont\bfseries}{\thesubsection}{10pt}{}
      \titleformat{\subsubsection}{\normalfont\bfseries}{\thesubsubsection}{10pt}{}

      %sezioni su nuove pagine
      \let\oldpart\part
      \renewcommand{\part}[1]{\cleardoublepage\oldpart{#1}}
      %
      \let\oldsection\section
      \newcounter{section_in_chapter}[chapter]
      \setcounter{section_in_chapter}{0}
      \renewcommand{\section}[1]
      {
      \ifthenelse{\equal{\arabic{section_in_chapter}}{0}}{}{\clearpage}
      \oldsection[#1]{#1}
      \stepcounter{section_in_chapter}
      }

      %spessore linee
      \makeatletter
      \def\thickhrulefill{\leavevmode \leaders \hrule height 1pt\hfill \kern \z@}
      \makeatother

      \begin{document}

      \section{Linguaggio C}
      \subsection{Struttura delle funzioni in C}

      \begin{program}[!h] \small
      \begin{verbatim}

      tipo nome_funzione(tipo argomento, tipo argomento, …)
      {
      operazioni varie….
      }
      \end{verbatim}
      \end{program}

      \begin{program}[!h] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“Hello C.\n”);
      return 0;
      }
      \end{verbatim}
      \caption{Hello C.}
      \end{program}

      I puntatori sono essenzialmente dei dati contenenti indirizzi di memoria;
      poiché l'indirizzamento della memoria richiede una stessa quantità di byte
      relativamente ad ogni possibile dato associato,
      i puntatori hanno medesima ampiezza qualunque sia il dato associato;
      verificheremo questo nel programma
      numero~\ref{prog-ampiezza-puntatori}
      a pagina~\pageref{prog-ampiezza-puntatori}
      grazie alla funzione \verb+sizeof()+
      che restituisce il numero di byte di memoria occupati da un tipo di dato, sia esso fondamentale o derivato.

      \begin{program}[!ht] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“La dimensione di int è %d, di puntatori ad int %d;\n”,
      sizeof(int), sizeof(int *));

      printf(“La dimensione di char è %d, di puntatori a char %d;\n”,
      sizeof(char), sizeof(char *));

      printf(“La dimensione di float è %d, di puntatori a float %d;\n”,
      sizeof(float), sizeof(float *));

      printf(“La dimensione di double è %d, di puntatori a double %d.\n”,
      sizeof(double), sizeof(double *));
      return 0;
      }
      \end{verbatim}
      \caption{Dimensioni dei tipi in memoria.}
      \label{prog-ampiezza-puntatori}
      \end{program}

      \end{document}`
      Grazie!

    • #53873
      Up
      0
      Down
      ::

      ok, il problema perdura nei \ref e \pageref…. ecco il ‘breve’ esempio:

      Se tolgo tutti i pacchetti tranne float e inputenc, ottengo i riferimenti corretti e nessun avviso.

      Ciao
      Enrico

    • #53874
      Up
      0
      Down
      ::

      ok, il problema perdura nei \ref e \pageref…. ecco il ‘breve’ esempio:

      Se tolgo tutti i pacchetti tranne float e inputenc, ottengo i riferimenti corretti e nessun avviso. Comincia a vedere tu.

      Ciao
      Enrico

    • #53875
      Up
      0
      Down
      ::


      Allora, ho fatto mille prove ed ho scoperto cosa porta all’errore anche se non conosco il motivo profondo….

      Il listato`\documentclass[12pt,pdftex,oneside]{scrbook}

      \usepackage{hyperref}
      \usepackage{verbatim}
      %\usepackage{classicthesis-ldpkg}
      \usepackage[italian]{babel}
      \usepackage[T1]{fontenc}
      \usepackage{float}
      \usepackage[utf8x]{inputenc}

      \floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}

      \begin{document}

      \begin{program}[!h] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“Hello C.\n”);
      return 0;
      }
      \end{verbatim}
      \caption{Hello C.}
      \end{program}

      I puntatori sono essenzialmente dei dati contenenti indirizzi di memoria;
      poiché l'indirizzamento della memoria richiede una stessa quantità di byte
      relativamente ad ogni possibile dato associato,
      i puntatori hanno medesima ampiezza qualunque sia il dato associato;
      verificheremo questo nel programma
      numero~\ref{prog-ampiezza-puntatori}
      a pagina~\pageref{prog-ampiezza-puntatori}
      grazie alla funzione \verb+sizeof()+
      che restituisce il numero di byte di memoria occupati da un tipo di dato, sia esso fondamentale o derivato.

      \newpage

      \begin{program}[!ht] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“La dimensione di int è %d, di puntatori ad int %d;\n”,
      sizeof(int), sizeof(int *));

      printf(“La dimensione di char è %d, di puntatori a char %d;\n”,
      sizeof(char), sizeof(char *));

      printf(“La dimensione di float è %d, di puntatori a float %d;\n”,
      sizeof(float), sizeof(float *));

      printf(“La dimensione di double è %d, di puntatori a double %d.\n”,
      sizeof(double), sizeof(double *));
      return 0;
      }
      \end{verbatim}
      \caption{Dimensioni dei tipi in memoria.}
      \label{prog-ampiezza-puntatori}
      \end{program}

      \end{document}`
      si comporta a dovere… se invece pongo`%\usepackage{hyperref}
      \usepackage{verbatim}
      \usepackage{classicthesis-ldpkg}`ecco che iniziano gli errori…. mi chiedo come mai classicthesis-ldpkg porti ad erronei collegamenti….

    • #53876
      Up
      0
      Down
      ::

      Allora, ho fatto mille prove ed ho scoperto cosa porta all’errore anche se non conosco il motivo profondo….

      Il listato`\documentclass[12pt,pdftex,oneside]{scrbook}

      \usepackage{hyperref}
      \usepackage{verbatim}
      %\usepackage{classicthesis-ldpkg}
      \usepackage[italian]{babel}
      \usepackage[T1]{fontenc}
      \usepackage{float}
      \usepackage[utf8x]{inputenc}

      \floatstyle{ruled}
      \newfloat{program}{hp}{lop}
      \floatname{program}{Programma}

      \begin{document}

      \begin{program}[!h] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“Hello C.\n”);
      return 0;
      }
      \end{verbatim}
      \caption{Hello C.}
      \end{program}

      I puntatori sono essenzialmente dei dati contenenti indirizzi di memoria;
      poiché l'indirizzamento della memoria richiede una stessa quantità di byte
      relativamente ad ogni possibile dato associato,
      i puntatori hanno medesima ampiezza qualunque sia il dato associato;
      verificheremo questo nel programma
      numero~\ref{prog-ampiezza-puntatori}
      a pagina~\pageref{prog-ampiezza-puntatori}
      grazie alla funzione \verb+sizeof()+
      che restituisce il numero di byte di memoria occupati da un tipo di dato, sia esso fondamentale o derivato.

      \newpage

      \begin{program}[!ht] \small
      \begin{verbatim}

      #include

      int main()
      {
      printf(“La dimensione di int è %d, di puntatori ad int %d;\n”,
      sizeof(int), sizeof(int *));

      printf(“La dimensione di char è %d, di puntatori a char %d;\n”,
      sizeof(char), sizeof(char *));

      printf(“La dimensione di float è %d, di puntatori a float %d;\n”,
      sizeof(float), sizeof(float *));

      printf(“La dimensione di double è %d, di puntatori a double %d.\n”,
      sizeof(double), sizeof(double *));
      return 0;
      }
      \end{verbatim}
      \caption{Dimensioni dei tipi in memoria.}
      \label{prog-ampiezza-puntatori}
      \end{program}

      \end{document}`
      si comporta a dovere… se invece pongo`%\usepackage{hyperref}
      \usepackage{verbatim}
      \usepackage{classicthesis-ldpkg}`ecco che iniziano gli errori…. mi chiedo come mai classicthesis-ldpkg porti ad erronei collegamenti….

      Bene, hai scoperto il colpevole dell’inghippo, il pacchetto verbatim. Non usarlo: fancyvrb è enormemente più potente.

      Ciao
      Enrico

    • #53877
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        In ogni caso prendi l’abitudine di caricare il pacchetto hyperref per ultimo. Per poter costruire i collegamenti ipertestuali hyperref deve ridefinire una moltitudine di comandi interni alle classi e ai pacchetti; se lo carichi per primo, i pacchetti posso ridefinire quello che hyperref ha ridefinito fra i comandi interni della classe, e in sostanza combinare un gran pasticcio.

        Può andarti bene, per puro caso, anche quando non segui questa regola aurea; ma prendi l’abitudine di caricare hyperref per ultimo.

      • #53878
        Up
        0
        Down
        ::


        sì, però questa volta è innocente…. anzi quando caricato al posto di classicthesis-ldpg, tutto funziona…. invece l’escluderlo a vantaggio dell’ultimo detto, porta all’errore che non è frutto di verbatim…. la conferma mi è stata dato non servendomi dello stesso pacchetto in entrambe le circostanze…. il mistero resta insoluto…. ma me lo tengo così! Grazie comunque a tutti del tentativo

      • #53879
        Up
        0
        Down
        ::


        A futura memoria: dopo tanto tempo ho trovato il motivo: l’aggiunta di \phantomsection là dove c’è il caption dei programmi risolve il problema.

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

    Go to top