据我所知,在命令序列中\the\year
,\year
给出一个数字,并将\the
其转换为文本。
我不明白的是,如何制作一个结果为数字但不产生代表该数字的文本的命令,就像命令一样\year
?
换句话说,如果我想\theXXX
生成“1234”(不带引号),我该XXX
用什么来替换?
答案1
这个问题似乎更多地是关于访问计数器的值而不是日期。 whlt3 提供了一些详细信息。以下是基于访问计数器的正确方法是什么?。
计数器:
使用 声明一个计数器\newcounter{XXX}
,使用 设置计数器值。然后,您可以作为或\setcounter{XXX}{1234}
访问它,并且两者都产生相同的输出:\theXXX
\the\value{xxxx}
您可以通过 更改计数器输出的所需格式\renewcommand{\theXXX}{\Roman{XXX}}
,之后\theXXX
计数器的值将以罗马数字显示:
此技术通常用于更改章节/节等的样式...编号。例如,请参阅章节和小节使用罗马数字。
日期:
如果你对格式化和操作日期感兴趣,你应该考虑
- 包裹
datetime
用于格式化日期 - 包裹
datenumber
用于日期与数字之间的转换
代码:
\documentclass{article}
\newcounter{XXX}
\begin{document}
\setcounter{XXX}{1234}
\textbackslash{}theXXX yields \theXXX\par
\textbackslash{}the\textbackslash{}value yields \the\value{XXX}
\bigskip
\renewcommand{\theXXX}{\Roman{XXX}}
\textbackslash{}theXXX yields \theXXX\par
\textbackslash{}the\textbackslash{}value yields \the\value{XXX}
\end{document}
答案2
\year
不仅仅是给予数字;它给出了一个内部整数。这是 TeX 识别的整数类型之一。与表示整数(这些只是数字串,可能在进制之间转换)它们被称为普通整数. 除了普通整数之外,还有强制整数,当内部胶水或尺寸被强制为整数时会发生这种情况。
TeX 隐式地将一串数字转换为数字,也就是说,如果 TeX 期望一个数字,那么任何看起来像数字的东西都会被接受。所以 42 是一个数字。但反过来必须明确地完成,要么通过\romannumeral
或\number
。当我们处理内部整数时,\the
相当于。既然你问当你想要时\number
你可以用什么XXXX
\theXXXX
,答案就是一个内部整数。有很多,你可以轻易影响的是chardef
或定义的标记mathdef
和寄存器的内容count
。
但是对于非内部整数,您需要使用\number
。也就是说,\number123
编译会成功,但\the123
会失败。