Verwenden von \ today in \ hyperref package

Oct 03 2020

Wenn Sie zum ersten Mal eine Frage stellen, lassen Sie mich bitte wissen, wenn ich etwas verpasst habe.

Ich arbeite in einem LaTeX-Dokument und möchte Folgendes mit dem Hyper-Ref-Paket erreichen:

Haben Sie eine URL, die mit meiner Website verlinkt ist und in die das heutige Datum für die Nachverfolgung von Empfehlungen eingebettet ist. Die URL sollte beispielsweise folgendermaßen aussehen:

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

Grundsätzlich kann ich durch Hinzufügen von "ref = text-date" verfolgen, von wo aus auf den Link geklickt wurde, um zu meiner Website zu gelangen. Ich möchte dies für manuelle A / B-Tests des Inhalts verwenden. Das Datum in der Überweisung hilft mir dabei, die Version zu bestimmen, die besser abschneidet.

Hier ist ein MWE:

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

\begin{document}

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

\end{document}

Das funktioniert, aber im Idealfall möchte ich:

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

Damit das Datum automatisch aktualisiert werden kann, wenn ich es für diesen bestimmten Tag kompiliere. Der Schlüssel wird verwendet \today, um das heutige Datum automatisch zum Link hinzuzufügen.

Wenn ich zu tun \todayin \hrefdieser speziellen Lösung, bekomme ich folgende Fehlermeldung:

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

Ich verwende TeXStudio mit einer TeX-Live-Distribution für 2019 und überzeugen mein Dokument mit XeLaTeX.

Ich bin offen für jede Lösung, aber \todayich dachte, es gibt bessere Möglichkeiten, dies zu tun (wenn das \hyperrefPaket dies unterstützt). Vielen Dank!

Antworten

1 DonHosek Oct 02 2020 at 22:35

Folgendes habe ich versucht:

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

\begin{document}

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

\end{document}

Wenn ich dies ausführe (ich habe eine neuere Installation), erhalte ich nicht die Fehler, die Sie erhalten, aber die URL lautet wie folgt:

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

Das ist offensichtlich nicht das, was wir wollen.

Das Problem hierbei ist, dass das datetimePaket alle Arten von verallgemeinerten Dingen ausführt und erwartet, Text und keine Token-Sequenz zu erzeugen.

Lassen Sie uns stattdessen eine spezielle, aber vereinfachte Version dessen datetimewählen, was funktioniert. Lassen Sie das fallen \usepackageund tun Sie stattdessen:

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

welches die gewünschte URL gibt.