Hyperref รบกวนมาโครที่กำหนดเอง

Aug 21 2020

พิจารณา MWE ต่อไปนี้:

\documentclass{article}

\usepackage{amsmath}
\renewcommand{\d}{\text{d}}
\usepackage{hyperref}

\begin{document}

$\d x$

$\text{d} x$

\end{document}

หากhyperrefถูกโหลดหลังจากการกำหนดค่าใหม่ของ\dนิพจน์แรกจะแสดงผลเป็นแบบตั้งตรงxโดยมีจุดด้านล่างเหมือนกับว่ามาโครไม่ได้ถูกกำหนดใหม่ นอกจากนี้ฉันได้รับคำเตือน

LaTeX Warning: Command \d invalid in math mode on input line 12.

ในทางกลับกันถ้าฉันไม่โหลดhyperrefหรือโหลดก่อนการกำหนดนิยามใหม่\dทุกอย่างจะเป็นไปตามที่คาด

ทำไมสิ่งนี้ถึงเกิดขึ้น?

คำตอบ

2 Noname Aug 21 2020 at 19:54

ฉันไม่ใช่ผู้เชี่ยวชาญและไม่ทราบสาเหตุของข้อผิดพลาดทั้งหมด คุณไม่ได้รับอนุญาตให้ใช้ (และอาจกำหนดใหม่) สิ่งต่อไปนี้หลังจากhyperrefบรรจุภัณฑ์:

  • (แบ็กสแลช + `)
  • \^
  • \~
  • \"
  • \r
  • \v
  • \.
  • \c
  • \=
  • \b
  • \d

และข้อผิดพลาดอาจเป็นเพราะเหตุนี้ตามที่อธิบายไว้ในความคิดเห็นและคำตอบอื่น ๆ ควรใช้คำสั่งอื่นหรือคุณสามารถใช้diffcoefแพ็คเกจแทนได้ ดูตัวอย่างที่นี่และความคิดเห็นนี้