在 Philex 中,您可以通过仅键入 \rnx{label} 来本地引用示例 (2b),它将返回 (b),否则只需键入 \rn{label} 它将返回 (2b)。
以下是这两个命令的语法:
\newcommand{\rf}[2][]{%%
\ifhyperref%%
(\hyperlink{#2}{\csname#2\endcsname}#1)%
\else%%
(\csname#2\endcsname#1)%
\fi}
%Cross-reference to subsentence without main number:%
\newcommand{\rfx}[2][]{%
\ifhyperref%
(\hyperlink{#2}{\csname#2q\endcsname}#1)%
\else%
(\csname#2q\endcsname#1)%
\fi}
您可能知道,当引用诸如 (1a.i) 之类的子子示例时,我正在寻找一种方法来跳过子级别并仅返回 (i),
- 这要归功于 Ulrich Diez 的解决方案,如下所示:
- 但只有存在分隔符时才有效;
- 参见我的帖子使用 Linguex/Philex 和 Cleveref 进行本地交叉引用:跳过第一级和第二级子标签...
- 并参见我在这里更大的担忧交叉引用:更多子级别和预设。
我的问题很简单。我想知道 \csname#2q 的实际作用,这样我就可以使用它来跳过子级标签,而不必像 Ulrich 的 \gobbletodot 建议中那样担心分隔符的存在。
编辑
我发现了这一行:
\refstepcounter{altsub}\label{#2q}
所以这只是子层的标签。
但我们发现:
\refstepcounter{altsubsub}\label{#2q}
所以问题是#2q 对于子级别和子子级别来说是同一个标签。
我猜测包的写法是这样的,我无法引用子标签,而只能保留子子标签。