在 LaTeX 中,最快写出“2nd”、“3rd”等的方法是什么?

在 LaTeX 中,最快写出“2nd”、“3rd”等的方法是什么?

如果我想在 LaTeX 文档中使用第二、第三等缩写,我目前的做法是:2$^{nd}$这似乎不令人满意。我是不是漏掉了什么宏?我确信我可以自己定义一个,而且相当容易。但这看起来应该已经涵盖了……

答案1

当它是普通文本时,您不应该使用数学。请改用\textsuperscript2\textsuperscript{nd}。您还可以为此定义快捷方式,例如

\newcommand{\ts}{\textsuperscript}

然后你就可以2\ts{nd}在文中使用了。

编辑
一个更好的解决方案是加载包第 n 个使用选项super并使用\nth命令:

\usepackage[super]{nth}
\nth{1}, \nth{2}, \nth{3}, \nth{4}

答案2

我想最快捷、最简单的解决办法就是简单地写“2nd”、“3rd”等等。

上标实际上不是必需的。

答案3

包的替代方案nthfmtcount

在这种情况下,命令是\ordinalnum。默认情况下,序数被格式化为上标,但这是可选的,因为它也在nth

\usepackage{fmtcount} % equivalent to \usepackage[super]{nth}
\usepackage[level]{fmtcount} % equivalent to \usepackage{nth}

但相比之下也有一些优势nth

  1. 有限的多语言支持(英语、法语、西班牙语、葡萄牙语、德语和意大利语)。例如,在西班牙语文档中,\nth{3}格式错误为“3th”,但 \ordinalnum{3}几乎正确呈现为“3º”(参见附录)。

  2. 可选性别。例如,\ordinalnum{3}[f]在西班牙语中产生阴性序数词“3ª”(tercera)。还有一个中性选项(n)。默认情况下,性别为m(阳性)。

  3. 如果可能的话,可以在同一个文档中切换序数的raiselevel版本(我不知道为什么,但谁知道!)使用\fmtcountsetoptions{fmtord=raise}\fmtcountsetoptions{fmtord=level}

  4. 对于仅讲英语的用户,显然 (1) 和 (2) 功能是没用的,但该ftmcount软件包还包含许多其他序数命令,例如\ordinal{counter}\ordinalstring{counter}计数器打印为section序数(“第 3 个”)或文本序数(“第三个”)等等。

第三个包裹,engord,还可以打印数字(\engordnumber{12})、计数器( )并且可以使用或\engord{page}切换样式,但不支持多语言或性别。\engordraisetrue\engordraisefalse

另一方面,对于枚举列表,您可以使用moreenum包装上贴有标签\raisenth\levelnth。MWE:

\documentclass{article}
\usepackage{moreenum}
\begin{document}
\begin{enumerate}[label=\raisenth* --- ,start=1]
\item one
\item two
\item three
\end{enumerate}
\end{document}

附录:西班牙语中的序数词。

尽管通常不被使用,但根据放射学会上标前必须有一个点,正如任何以上标结尾的缩写所解释的那样这里那么,正确的序数是“3. o ”(tercero)或“3. er ”(tercer),而不是“3º”。

在大多数情况下,只需输入1.º或即可1.ª,因为西班牙语键盘上有一个º ª \符号键。但是,问题仍然存在,因为数字可以以 .结尾(1、3、13、21、23、31、33 等)。此外,在某些字体中, ºª符号带有下划线(如键盘中所示),这在西班牙语中是正确的,但如果输入 ,例如 ,则会产生不一致1º,2º,3\textsuperscript{er},4º。另一个问题是,即使使用 ,这些符号也只能以小写形式显示\MakeUppercase

babel软件包处理带有上标后缀的西班牙语缩写的格式,因此spanish可以使用选项n\sptext{os}来获取例如 n.os “数字”的复数形式),但此外还提供了阳性和阴性序数的简写(也为大写),使用"LaTeX 中不用于引号的缩写。这样,就可以使用 1\sptext{er} 而不是 1\sptext{er} 来1"er举例。总结:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{bera}
\usepackage[spanish,es-noindentfirst]{babel}
\begin{document}

\subsubsection*{Lowercase}

1º, 2º, 3º ... 1ª, 2ª, 3ª \dotfill 
Keyboard input, incorrect (no dots). \\
1.º, 2.º, 3.º ... 1.ª, 2.ª, 3.ª 
\dotfill Keyboard input, correct but underlined.\\ 
1\sptext{o}, 2\sptext{o}, 3\sptext{o} ... 
1\sptext{a}, 2\sptext{a}, 3\sptext{a} 
\dotfill With Babel \verb|\sptext{}| command.\\
1"o, 2"o, 3"o ... 1"a 2"a 3"a \dotfill 
With "\ Babel shorthand.\\
1"er 2"o 3"er ... 1"a 2"a 3"a 
\dotfill Apocopate version (primer, tercer, etc.).

\subsubsection*{Upppercase}

\MakeUppercase{1.º, 2.ª, 3.\textsuperscript{er}} ...  
or ... 1.º, 2.ª, 3.\textsuperscript{ER}  
\dotfill (wrong way)\\
1"o 2"a  3"er  $\neq$ \MakeUppercase{1"o 2"a  3"er ... }  
or ...  1"O 2"A  3"ER 
\dotfill (babel way, correct)

\end{document}

平均能量损失

答案4

如果你追求写作速度,这个解决方案似乎是最快的打字方式

\documentclass{article}
\usepackage{xspace}

\newcommand\nd{\textsuperscript{nd}\xspace}
\newcommand\rd{\textsuperscript{rd}\xspace}
\newcommand\nth{\textsuperscript{th}\xspace} %\th is taken already
\begin{document}
This is the 2\nd of December. Or the 4\nth of July. Or 3\rd place in a race.
\end{document}

\xspace命令会智能地决定宏后是否应该有空格。

平均能量损失

相关内容