如何用上标重新定义 \today?

如何用上标重新定义 \today?

我如何重新定义\today以便今天的当前日期采用以下格式

May 26th, 2016

我需要将“th”作为上标。

它应该出现在页面的右下角。当我在以下环境 XeLaTeX 中使用它时,代码不起作用。

%  Preamble:
\NeedsTeXFormat{LaTeX2e}
\LoadClass{article}
\usepackage[head=12pt, foot=12pt, top=18mm, bottom=15mm, left=12.7mm, right=12.7mm]{geometry}
\usepackage[absolute]{textpos}
\usepackage[UKenglish]{babel}
\usepackage[en-US]{datetime2}
\DTMlangsetup{ord=raise}
\usepackage{rotating}

%  Main Tex:

\begin{document}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
\textblockorigin{0mm}{5mm} 
\begin{textblock}{60}(205,207)
\begin{turn}{90} 
Last Updated on
\today
\end{turn}
\end{textblock}
\end{document}

我需要将其作为 [最后更新于 2016 年 5 月 26 日]。“th / st /nd”提升到上标高度。旋转 90 度。页面右下角。请查看下面的 MWE 链接。

我还不断收到此警告:

Package datetime2 Warning: Region `english-base' has ignored (datetime2) the following settings: (datetime2) ord=raise on input line 13.

链接至 MWE: https://www.overleaf.com/5308800stsrzk#/16764374/

答案1

我建议你使用datetime2带有选项的包en-US

在此处输入图片描述

该指令\DTMlangsetup{ord=raise}指示datetime2将日期数字视为序数,并将st/ nd/rd粒子提升至上标高度。

\documentclass{article}
\usepackage[en-US]{datetime2}
\DTMlangsetup{ord=raise}
\begin{document}
\today
\end{document}

附录回答 OP 的补充问题:看起来您正在使用UKenglish作为主要语言选项babel,但还想要一个美国风格的日期字符串(“2016 年 5 月 26 日”--“th”升高),而不是英国风格的日期字符串(“2016 年 5 月 26 日”--“th”未升高)。为了实现此目标,您需要 (a) 在加载时提供“USenglish”作为次要语言选项,以及 (b) 在环境内babel执行指令。\selectlanguage{USenglish}textblock

下面显示的代码在 pdfLaTeX、XeLaTeX 和 LuaLaTeX 下应该可以同样好地编译。

\documentclass{article}
\usepackage[head=12pt,foot=12pt,top=18mm,bottom=15mm,hmargin=12.7mm]{geometry}
\usepackage[absolute]{textpos}    
\usepackage[USenglish,UKenglish]{babel}   
\usepackage[en-US]{datetime2}
\DTMlangsetup[en-US]{ord=raise}    
\usepackage{rotating} % provides \turn macro

\begin{document}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
\textblockorigin{0mm}{5mm} 

\begin{textblock}{60}(205,207)
\selectlanguage{USenglish}
\begin{turn}{90} 
Last Updated on \today
\end{turn}
\end{textblock}

\end{document}

相关内容