参考页面范围->我可以避免使用 2 个标签吗?

参考页面范围->我可以避免使用 2 个标签吗?

我经常在论文中使用相应章节或文本块的引用。

因此,我已经定义了很多\label{}命令,我尝试用命名约定对它们进行分类int:txt:WhatIsItAbout,以便清楚地表明它在章节介绍中,指的是一个文本块,它是关于......

但是,所有页码引用仅包含标签排版的页面。如果我引用的章节或部分跨越多页,我希望使用如下页码S. 23f或者第 23 条及后续

通过引用文本块它看起来更加复杂(因为范围的结束不是由同一级别的下一个对象的出现来定义的):我在某处添加了一个标签,但是为了定义文本范围,我必须在文本块的末尾定义第二个标签,这会让事情变得更加混乱。

我知道varioref可以生成这种“智能”引用的软件包,但是对于页面范围,它也需要 2 个标签。
(如下所述:创建一个“\label”,如有必要,可跨越多个页面

  • 有没有办法避免这种情况,例如定义一个环境
    • 可以参考一下,自动输出开始和结束页面吗?
    • 或者在其开头和结尾创建 2 个标签,例如称为 LabelnameS 和 LabelnameE (表示开始和结束)和
      • \vref可以通过明确输入 2 个标签名称的命令 来读取
      • 或者通过专门定义的 ref 命令,\rangeref{Labelname}如果开始和结束在不同的页面上,则它会自动扩展并创建页面范围。

备注:但是,如果真的要为此使用一个环境,那么如果两个这样的环境“相交”(第二个环境的开始早于第一个环境的结束,但第二个环境的结束晚于第一个环境的结束),则可能会引起问题。

  • 您如何处理这个问题?
    • 您是否避免引用页面范围,或者您是否始终创建 2 个标签?
    • 如何命名标签才能使其简短而清晰?

答案1

由于您的范围可能会相交,因此定义环境是不可能的。需要标记范围的开始和结束,并且需要创建两个标签;但是,LaTeX 可以为您完成此操作:

\newcommand{\rangelabelstart}[1]{\label{#1START}}
\newcommand{\rangelabelend}[1]{\label{#1END}}

\newcommand{\rangeref}[1]{\pageref{#1START}--\pageref{#1END}}
...
\begin{document}
...
\rangelabelstart{xyz}
Text
\rangelabelend{xyz}
...
\rangeref{xyz}

您只提供一个标签,而 LaTeX 则负责使用其中两个标签。当然,您必须更好地定义 的操作\rangeref。该zref包应考虑用于高级\label管理\ref

相关内容