如果我想在 LaTeX 文档中使用第二、第三等缩写,我目前的做法是:2$^{nd}$
这似乎不令人满意。我是不是漏掉了什么宏?我确信我可以自己定义一个,而且相当容易。但这看起来应该已经涵盖了……
答案1
当它是普通文本时,您不应该使用数学。请改用\textsuperscript
:2\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
包的替代方案nth
是fmtcount
。
在这种情况下,命令是\ordinalnum
。默认情况下,序数被格式化为上标,但这是可选的,因为它也在nth
:
\usepackage{fmtcount} % equivalent to \usepackage[super]{nth}
\usepackage[level]{fmtcount} % equivalent to \usepackage{nth}
但相比之下也有一些优势nth
:
有限的多语言支持(英语、法语、西班牙语、葡萄牙语、德语和意大利语)。例如,在西班牙语文档中,
\nth{3}
格式错误为“3th”,但\ordinalnum{3}
几乎正确呈现为“3º”(参见附录)。可选性别。例如,
\ordinalnum{3}[f]
在西班牙语中产生阴性序数词“3ª”(tercera)。还有一个中性选项(n
)。默认情况下,性别为m
(阳性)。如果可能的话,可以在同一个文档中切换序数的
raise
和level
版本(我不知道为什么,但谁知道!)使用\fmtcountsetoptions{fmtord=raise}
或\fmtcountsetoptions{fmtord=level}
对于仅讲英语的用户,显然 (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
命令会智能地决定宏后是否应该有空格。