我正在用 latex 写一份文档。我想在该文档的一部分中使用序数来交叉引用章节和部分。
例如我希望代码
... in the \ref{ch:firstPart} part ...
会导致
... in the first part ...
并不是
... in the I part ...
我对全局修改交叉引用的管理方式不感兴趣,因为我只想在文档的一部分中使用序数。
提出的解决方案如何用单词引用章节仅适用于章节。
是否有一个软件包或者其他解决方案可以实现此目的?
答案1
问题是将表示零件的罗马数字转换回阿拉伯数字,以便\ordinaltoname
能够numname
工作。
令人高兴的是,LaTeX3 包具有该\int_from_roman:n
功能,但我们必须对其进行一些扩展,以便它将\getrefnumber
给定的内容扩展为参数:
\documentclass{book}
\usepackage{numname}
\usepackage{refcount}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\partnumbertoname}{m}
{
\ordinaltoname { \int_from_roman:f { \getrefnumber{ #1 } } }
}
\cs_generate_variant:Nn \int_from_roman:n {f}
\ExplSyntaxOff
\begin{document}
\mainmatter
\part{Part}\label{p1}
\chapter{Chapter}\label{c1}
In the \ordinaltoname{\getrefnumber{c1}} chapter...
In the \partnumbertoname{p1} part...
\end{document}
像往常一样,需要运行几次才能显示正确的名称。
感谢 Heiko Oberdiek(refcount
)、Peter Wilson(中的宏numname
)和 LaTeX3 团队。