[RISOLTO]chiamare il numero dell’ultima pagina in un calcolo

  • Creatore
    Topic
  • #40692
    Up
    0
    Down
    ::


    salve,

    sto modificando la classe report per mie esigienze personali.
    Ho due due quesiti:

      1) nella testatina voglio una linea che man mano che le pagine aumentano si allunga fino ad arrivare a fine riga. L’algoritmo, con i pacchetti tikz e calc, è semplice:
      `
      \draw (0,0)–(\textwidth*\thepage/?>,0);
      `
      dove ?> è il numero più alto del counter page. visto però che il counter aumenta e non rimane fisso, come faccio a richiamare l’utimo.

      I pacchetti lastpage, zref-lastpage e zref-totpages non soddifanno le mie esigienze perché il primo ed il secondo servono solo per fare dei riferimenti incrociati (tipo pag.1 di 4) mentre l’ultimo mi conta tutte le pagine del documento e siccome l’indice e l’introduzione hanno numerazione romana, risultano più pagine del dovuto e non va bene perché divide per un numero più alto non facendo arrivare così la linea in fondo alla riga.

      2) come faccio a mettere il numero, il nome del capitolo nel piedino ed il numero della pagina?

    grazie in anticipo a chi potrà aiutarmi.

    P.S. non mi è ancora arrivato il texbook 🙁

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #40693
      Up
      0
      Down
      ::

      salve,

      sto modificando la classe report per mie esigienze personali.
      Ho due due quesiti:

        1) nella testatina voglio una linea che man mano che le pagine aumentano si allunga fino ad arrivare a fine riga. L’algoritmo, con i pacchetti tikz e calc, è semplice:
        `
        \draw (0,0)–(\textwidth*\thepage/?>,0);
        `
        dove ?> è il numero più alto del counter page. visto però che il counter aumenta e non rimane fisso, come faccio a richiamare l’utimo.

        I pacchetti lastpage, zref-lastpage e zref-totpages non soddifanno le mie esigienze perché il primo ed il secondo servono solo per fare dei riferimenti incrociati (tipo pag.1 di 4) mentre l’ultimo mi conta tutte le pagine del documento e siccome l’indice e l’introduzione hanno numerazione romana, risultano più pagine del dovuto e non va bene perché divide per un numero più alto non facendo arrivare così la linea in fondo alla riga.

        2) come faccio a mettere il numero, il nome del capitolo nel piedino ed il numero della pagina?

      `\usepackage{zref-user,zref-lastpage,zref-runs}

      \draw (0,0)–(\textwidth*\thepage/\ifnum\zruns=0 1\else\zpageref{LastPage}\fi,0);
      …`
      Il condizionale serve per dare un valore numerico anche se manca il file .aux.

      Per lavorare sul piedino, usa il pacchetto fancyhdr.

      Ciao
      Enrico

    • #40694
      Up
      0
      Down
      ::


      Grazie per la risposta.

      La soluzione che mi hai dato non mi permette di compilare il documento.

      Ti spiego cosa ho fatto: ho copiato il file report.cls, l’ho rinominato ed ho eliminato tutte le
      parti riguardanti le opzioni che non mi sevono(twocolumn e twoside).
      Successivamente ho cambiato i margini come servono a me.
      Una volta fatto queste modifiche mi voluto dedicare alle testatine ad al piedino.

      Per quanto riguarda il piedino, sono riusctito ad ottenere ciò che voglio.

      Per quanto riguarda la testatina, questa è la storia:

      Il codice della mia prima soluzione era
      `
      \RequirePackage{graphicx}
      \RequirePackage{tikz}
      \RequirePackage{color}
      \RequirePackage{calc}
      \RequirePackage{lastpage}
      \RequirePackage{zref-user}
      \RequirePackage{zref-lastpage}
      \RequirePackage{zref-runs}
      \RequirePackage{zref-totpages}

      \def\ps@headings{%
      \def\@oddfoot{{\slshape\rightmark}\hfil\thepage}
      \def\@oddhead{%
      \ifnum\ztotpages=0
      \else
      \begin{tikzpicture}
      \def\cost{\ratio{\thepage}{\ztotpages}}
      \draw (0,2.502pt)–(\textwidth*\cost,2.502pt);
      \end{tikzpicture}
      \fi}%
      \let\@mkboth\markboth
      \def\chaptermark##1{%
      \markright {\MakeUppercase{%
      \ifnum \c@secnumdepth >\m@ne
      \@chapapp\ \thechapter. \ %
      \fi}}}}
      `
      Questa soluzione non va bene perché il comando \ztotpages conta tutte le pagine del documento, quindi anche quelle con carattere romano che invece non voglio includere nel conteggio. Il condizionale l’ho dovuto mettere perché alla prima compilazione non si conosce ancora il numero totale delle pagine.

      Il codice che mi hai proposto tu è:
      `
      \RequirePackage{graphicx}
      \RequirePackage{tikz}
      \RequirePackage{color}
      \RequirePackage{calc}
      \RequirePackage{lastpage}
      \RequirePackage{zref-user}
      \RequirePackage{zref-lastpage}
      \RequirePackage{zref-runs}
      \RequirePackage{zref-totpages}

      \def\ps@headings{%
      \def\@oddfoot{{\slshape\rightmark}\hfil\thepage}
      \def\@oddhead{%
      \begin{tikzpicture}
      \draw (0,2.502pt)–(\textwidth*\thepage/\ifnum\zruns=0 1\else\zpageref{LastPage}\fi,2.502pt);
      \end{tikzpicture}}%
      \let\@mkboth\markboth
      \def\chaptermark##1{%
      \markright {\MakeUppercase{%
      \ifnum \c@secnumdepth >\m@ne
      \@chapapp\ \thechapter. \ %
      \fi}}}}
      `

      Quest’ultimo non mi permette di compilare il documento perché fornisce questo errore
      `
      !Undefined Control Sequence
      \@@cls

      1.23

      ?
      `

      Se dal file che utilizza questa classe elimino tutti i comandi che suddivide il documento in parti (\part, \chapter…etc) allora lo compila senza però scrivere niente nella testatina e nel piedino.

      Non pensavo che cercare l’utima pagina fosse così difficile!!

      Ohi Ohi quanto ho scritto!!

      Come sempre ringrazio in anticipo chi potrà aiutarmi.

      Saluti di buon anno.

      Michele

    • #40695
      Up
      0
      Down
      ::

      Grazie per la risposta.

      La soluzione che mi hai dato non mi permette di compilare il documento.

      Ti spiego cosa ho fatto: ho copiato il file report.cls, l’ho rinominato ed ho eliminato tutte le
      parti riguardanti le opzioni che non mi sevono(twocolumn e twoside).
      Successivamente ho cambiato i margini come servono a me.
      Una volta fatto queste modifiche mi voluto dedicare alle testatine ad al piedino.

      Sbagli approccio. Modificare una classe come fai tu è un lavoro che rischia di creare più problemi di quanti ne risolva. Ecco come puoi fare per eliminare opzioni indesiderate; crea un file myreport.cls (o con il nome che preferisci):
      `\NeedsTeXFormat{LaTeX2e}
      \ProvidesClass{myreport}[2010/01/02 v. 0.1]
      \DeclareOption{twoside}{\OptionNotUsed}
      \DeclareOption{twocolumn}{\OptionNotUsed}
      \DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
      \ProcessOptions\relax
      \LoadClass[a4paper]{report}

      \RequirePackage{geometry}
      \geometry{}

      \RequirePackage{fancyhdr}


      \endinput`
      In ogni caso, senza un esempio vero e compilabile non possiamo aiutarti. Prima di riportare qui la versione modificata di report.cls, prova a ricostruire le tue modifiche secondo lo schema che ti ho indicato.

      Ciao
      Enrico

    • #40696
      Up
      0
      Down
      ::


      Ciao,

      grazie per il tuo consiglio super efficiente.

      Tuttavia mi sono intestardito a voler cambiare direttamente la classe. Dopo aver scoperto che la classe memoir possiede di default il comando \thelastpage, ho copiato la parte di codice che lo riguardava nella mia classe.

      Sicuramente potrà sembrare una eresia ciò che scrivo però ho trovato una bella soddisfazione nel capire il codice e poterlo gestire secondo le mie esigenze.

      Per quanto riguarda il calcolo ho scoperto che c’è una bella differenza tra scrivere
      `
      (\textwidth/\thelastpage)*\thepage
      `
      e
      `
      \textwidth*(\thepage/\thelastpage)
      `

      Un saluto

      Michele

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

Go to top