ใช้ \ today ใน \ hyperref package

Oct 03 2020

โพสต์คำถามเป็นครั้งแรกโปรดแจ้งให้เราทราบหากพลาดสิ่งใดไป

ฉันกำลังทำงานในเอกสาร LaTeX และนี่คือสิ่งที่ฉันต้องการบรรลุโดยใช้แพ็คเกจไฮเปอร์อ้างอิง:

มี URL ที่เชื่อมโยงกับเว็บไซต์ของฉันและมีวันที่ของวันนี้ฝังไว้สำหรับการติดตามการอ้างอิง ตัวอย่างเช่น URL ควรมีลักษณะดังนี้:

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

โดยพื้นฐานแล้วการเพิ่ม "ref = text-date" ทำให้ฉันสามารถติดตามว่าลิงก์ถูกคลิกจากที่ใดเพื่อไปยังเว็บไซต์ของฉัน ฉันต้องการใช้สิ่งนี้สำหรับการทดสอบ A / B ด้วยตนเองของเนื้อหาวันที่ในการอ้างอิงช่วยให้ฉันระบุเวอร์ชันที่ทำได้ดีกว่า

นี่คือ MWE:

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

\begin{document}

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

\end{document}

วิธีนี้ได้ผล แต่สิ่งที่ฉันอยากทำคือ:

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

เพื่อให้วันที่สามารถอัปเดตอัตโนมัติเมื่อฉันรวบรวมสำหรับวันนั้น ๆ คีย์ที่ใช้\todayเพื่อเพิ่มวันที่ของวันนี้โดยอัตโนมัติในลิงก์

เมื่อฉันใช้\todayใน\hrefโซลูชันเฉพาะนี้ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ฉันใช้ TeXStudio กับการแจกจ่าย TeX-Live ปี 2019 และทำให้เอกสารของฉันน่าสนใจโดยใช้ XeLaTeX

ฉันเปิดรับโซลูชันใด ๆ แต่การใช้\todayคือสิ่งที่อยู่ในใจฉันแน่ใจว่ามีวิธีที่ดีกว่านี้ในการดำเนินการนี้ (หาก\hyperrefแพ็คเกจรองรับ) ขอบคุณ!

คำตอบ

1 DonHosek Oct 02 2020 at 22:35

นี่คือสิ่งที่ฉันลอง:

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

\begin{document}

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

\end{document}

เรียกใช้สิ่งนี้ (ฉันติดตั้งใหม่กว่า) ฉันไม่ได้รับข้อผิดพลาดที่คุณได้รับ แต่ URL ออกมาเป็น:

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

ซึ่งเห็นได้ชัดว่าไม่ใช่สิ่งที่เราต้องการ

ปัญหาคือdatetimeแพคเกจทำสิ่งทั่วไปทุกประเภทและคาดว่าจะสร้างข้อความไม่ใช่ลำดับโทเค็น

ดังนั้นเรามาดูเวอร์ชันพิเศษ แต่เรียบง่ายdatetimeแทนกันดีกว่า วาง\usepackageและทำแทน:

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

ซึ่งให้ URL ที่ต้องการ