序数词交叉引用

序数词交叉引用

我正在用 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 团队。

相关内容