为交叉引用对对象进行编号

为交叉引用对对象进行编号

假设我有不同种类的食物,如下所示嵌套:

1 水果
1.1 苹果
1.2 橙子

2 蔬菜
2.1 番茄
2.2 洋葱

食物的顺序很重要,我不想用名字来指代它们,只想用编号来指代它们。例如,在我的乳胶代码中,我想写一些类似的东西Food \ref{onion},然后它会打印食物 2.2。此外,当我后来意识到西红柿实际上是一种水果并将其移到水果列表中时,Food \ref{onion}会打印食物 2.1。

我该如何设置?我只熟悉章节和方程式的交叉引用。

编辑:该列表是“秘密”的,不应出现在文档中,也就是说,我没有在任何地方开始enumerate。为了提供一些背景信息,我正在编写一个不能明确提及成分的食谱。该人只会收到标有“食物 1.1”、“食物 1.2”等的食谱和成分盒。

答案1

(在 OP 澄清底层枚举嵌套是“秘密”或“不可见”后完全重写了答案)

像这样?请注意,我已突出显示 的输出\ref{onion}

在此处输入图片描述

\documentclass{article}
\renewcommand{\theenumii}{\arabic{enumii}} % default is \alph
\makeatletter
  \renewcommand\p@enumii{\theenumi.} % prefix to be used in cross-references
  \@addtoreset{enumii}{enumi} % reset 'enumii' whenever 'enumi' is incremented
\makeatother

\begin{document}
%% \refstepcounter and \label directives create no visible output
\refstepcounter{enumi}  \label{fruit}
\refstepcounter{enumii} \label{apple}
\refstepcounter{enumii} \label{orange}
\refstepcounter{enumii} \label{tomato}% 'tomato' is a fruit...
\refstepcounter{enumi}  \label{vegetable}
\refstepcounter{enumii} \label{onion}

\ref{fruit} \ref{apple} \ref{orange} \ref{tomato}

\ref{vegetable} \ref{onion}

\end{document}

相关内容