Stampare orario [Risolto]

  • Creatore
    Topic
  • #44800
    Daniele
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno a tutti,
      stò impostando un documento e fino a quando dovrò stampare la versione definitiva voglio che in fondo alla pagina compaiano data e ora di compilazione, come fa l’opzione drafting di classicthesis. Con \today riesco a stampare la data, ma no ho trovato nulla per stampare l’ora.
      Se qualcuno conoscesse il comando mi farebbe un grosso favore.
      Grazie mille

    Visualizzazione 3 filoni di risposte
    • Autore
      Risposte
      • #44801
        lorenzo.pantieri
        Partecipante
        • #44802
          Up
          0
          Down
          ::

          Buongiorno a tutti,
          stò impostando un documento e fino a quando dovrò stampare la versione definitiva voglio che in fondo alla pagina compaiano data e ora di compilazione, come fa l’opzione drafting di classicthesis. Con \today riesco a stampare la data, ma no ho trovato nulla per stampare l’ora.
          Se qualcuno conoscesse il comando mi farebbe un grosso favore.
          Grazie mille

          Senza bisogno di scomodare un pacchetto aggiuntivo, se sai già mettere al suo posto \today, aggiungi al preambolo:
          `\newcommand\now{{%
          \count0=\time
          \count2=\time
          \divide\count2 by 60
          \number\count2:%
          \multiply\count2 by 60
          \advance\count0 by -\count2
          \ifnum\count0<10 0\fi\number\count0 }}`
          e usa “Printed \today\ at \now”. Alternativamente, scrivi
          `\def\NOW{\expandafter\NOWA\pdfcreationdate}
          \def\NOWA#1:#2#3#4#5#6#7#8#9{%
          Printed on #8#9/#6#7/#2#3#4#5 at \NOWB}
          \def\NOWB#1#2#3#4#5'#6'{#1#2:#3#4}`
          e con \NOW avrai “Printed on 28/04/2010 at 16:47”

          Ciao
          Enrico

        • #44803
          Daniele
          Partecipante
            Up
            0
            Down
            ::


            Grazie mille a tutti e due.

            A beneficio di altri indico che il pacchetto scrtime mette a disposizione il comando \thistime che stampa l’ora corrente.

          • #44804
            Up
            0
            Down
            ::

            Buongiorno a tutti,
            stò impostando un documento e fino a quando dovrò stampare la versione definitiva voglio che in fondo alla pagina compaiano data e ora di compilazione, come fa l’opzione drafting di classicthesis. Con \today riesco a stampare la data, ma no ho trovato nulla per stampare l’ora.
            Se qualcuno conoscesse il comando mi farebbe un grosso favore.
            Grazie mille

            Senza bisogno di scomodare un pacchetto aggiuntivo, se sai già mettere al suo posto \today, aggiungi al preambolo:
            `\newcommand\now{{%
            \count0=\time
            \count2=\time
            \divide\count2 by 60
            \number\count2:%
            \multiply\count2 by 60
            \advance\count0 by -\count2
            \ifnum\count0<10 0\fi\number\count0 }}`
            e usa “Printed \today\ at \now”. Alternativamente, scrivi
            `\def\NOW{\expandafter\NOWA\pdfcreationdate}
            \def\NOWA#1:#2#3#4#5#6#7#8#9{%
            Printed on #8#9/#6#7/#2#3#4#5 at \NOWB}
            \def\NOWB#1#2#3#4#5'#6'{#1#2:#3#4}`
            e con \NOW avrai “Printed on 28/04/2010 at 16:47”[/quote]
            Una versione molto più generale:
            `\begingroup
            \catcode`\:=12
            \def\timeA#1:#2#3#4#5#6#7#8#9{%
            \def\noexpand\Year{#2#3#4#5}%
            \def\noexpand\Month{#6#7}%
            \def\noexpand\Day{#8#9}%
            \timeB}
            \def\timeB#1#2#3#4#5#6#7{%
            \def\noexpand\Hours{#1#2}%
            \def\noexpand\Minutes{#3#4}%
            \def\noexpand\Seconds{#5#6}%
            \def\noexpand\UTCDiff{#7}%
            \timeC}
            \def\timeC#1#2#3#4#5#6{%
            \def\noexpand\DHours{#1#2}%
            \def\noexpand\DMinutes{#4#5}}
            \edef\inittime{\expandafter\timeA\pdfcreationdate}
            \expandafter\endgroup\inittime`
            A questo punto si hanno a disposizione \Year, \Month, \Day, \Hours, \Minutes, \Seconds, \UTCDiff, \DHours, \DMinutes. Per esempio, la data di compilazione può essere scritta
            `Versione del \Day/\Month/\Year, ore \Hours:\Minutes\ (UTC~$\UTCDiff$\DHours:\DMinutes)`
            Mi piace più di quello di prima perché si definiscono solo i comandi strettamente necessari e il numero di espansioni è ridotto. La macro \timeA attiva la lettura della stringa ottenuta espandendo \pdfcreationdate dentro \edef\inittime; alla fine dell’espansione dentro \edef avremo come testo di sostituzione
            `\def\Year{2010}\def\Month{04}…\def\DMinutes{00}`
            (ovviamente i valori cambiano leggendo l’effettiva data). Il gruppo viene chiuso subito dopo aver dato \edef\inittime, ma \inittime è effettivamente espanso prima della chiusura del gruppo; le definizioni \def\Year{2010} e successive vengono eseguite dopo la chiusura del gruppo e così \timeA, \timeB, \timeC e \inittime spariscono dalla memoria, così come l’impostazione del codice di categoria del carattere “due punti” (che è necessaria perché, per esempio, il modulo del francese di babel lo rende attivo).

            Ciao
            Enrico

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

        Go to top▲