“命令 \th 已定义。”

“命令 \th 已定义。”

我尝试定义\th在序数词的上标中放置字母“th”。LaTeX 告诉我这\th已经定义。它是如何定义的?重新定义它会很糟糕吗?

答案1

如果你跑

\documentclass{article}
\usepackage[T1]{fontenc}

\begin{document}

\meaning\th

\th

\end{document}

你得到

在此处输入图片描述

\th在内核中定义为

\DeclareTextSymbol{\th}{T1}{254}

并产生thorn(古英语、哥特语、古挪威语和现代冰岛语字母表以及一些中古英语方言中的字母。)

是的,重新定义已定义的宏,尤其是内核宏,通常是一个坏主意(在某些情况下,可能的例外是您确切知道自己在做什么以及为什么要这样做);这就是为什么\newcommand(与 不同\def)首先检查命令是否已定义。我建议您为命令选择另一个名称(\Th例如)。

但是,如果你坚持重新定义\th(假设你认为你不需要刺,并且你确定重新定义不会产生除了抑制对刺的访问之外的不良影响),至少我建议你先保存原始定义:

\let\oldth\th
\renewcommand\th{<your definition>}

在您的特定情况下,将“th”放置在序数词中,您可以使用fmtcount包裹:

\documentclass{article}
\usepackage{fmtcount}

\begin{document}

\ordinalnum{3}, \ordinalnum{4}

\end{document}

在此处输入图片描述

相关内容