Usando \ today nel pacchetto \ hyperref

Oct 03 2020

Pubblica una domanda per la prima volta, quindi fammi sapere se mi sono perso qualcosa.

Sto lavorando su un documento LaTeX ed ecco cosa voglio ottenere usando il pacchetto hyper ref:

Avere un URL collegato al mio sito Web e con la data odierna incorporata per il monitoraggio dei referral. Ad esempio, l'URL dovrebbe essere simile a:

https://example.com?ref=text-2ndOct2020

Fondamentalmente, l'aggiunta di "ref = text-date" mi consente di monitorare da dove è stato fatto clic sul collegamento per accedere al mio sito web. Voglio usarlo per il test A / B manuale del contenuto, la data nel referral mi aiuta a determinare la versione che ha funzionato meglio.

Ecco un MWE:

\documentclass[letter,oneside,10pt]{article}
\usepackage{hyperref}
\usepackage[ddmmyyyy]{datetime}

\begin{document}

\href{https://example.com?ref=text-date}{example.com}

\end{document}

Funziona, ma quello che mi piacerebbe fare idealmente è:

\href{https://example.com?ref=text-\today}{example.com}

in modo che la data possa aggiornarsi automaticamente quando la compilo per quel particolare giorno, la chiave utilizzata \todayper aggiungere automaticamente la data odierna al collegamento.

Quando lo uso \todayin \hrefquesta particolare soluzione, ottengo il seguente errore:

Undefined control sequence. }
line 107: Undefined control sequence. }
line 107: Undefined control sequence. }
.
.
.
line 107: Undefined control sequence. }

Sto usando TeXStudio con una distribuzione TeX-Live del 2019 e sto convincendo il mio documento usando XeLaTeX.

Sono aperto a qualsiasi soluzione, ma l'utilizzo \todayè quello che mi è venuto in mente, sono sicuro che ci sono modi migliori per farlo (se il \hyperrefpacchetto lo supporta). Grazie!

Risposte

1 DonHosek Oct 02 2020 at 22:35

Ecco cosa ho provato:

\documentclass[letter,oneside,10pt]{article}
\usepackage{hyperref}
\usepackage[ddmmyyyy]{datetime}

\begin{document}

\href{https://example.com?ref=text-\today}{example.com}

\end{document}

Eseguendolo (ho un'installazione più recente), non ottengo gli errori che stai ricevendo, ma l'URL risulta come:

https://example.com/?ref=text-%5Cprotect%20%5C@day%20=%5Cday%20%5Crelax%20%5C@month%20=%5Cmonth%20%5Crelax%20%5C@year%20=%5Cyear%20%5Crelax%2000/00/0

che ovviamente non è quello che vogliamo.

Il problema qui è che il datetimepacchetto sta facendo tutti i tipi di cose generalizzate e si aspetta di produrre testo e non una sequenza di token.

Quindi, invece, andiamo per una versione specializzata ma semplificata di ciò che datetimefa. Rilascia il \usepackagee invece fai:

\renewcommand{\today}{\ifnum\day<10 0\fi\the\day \ifnum\month<10 0\fi\the\month\the\year}

che fornisce l'URL desiderato.