Stampare orario [Risolto]

  • Creatore
    Topic
  • #44800
    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
        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