底部的代码产生
请参阅第 6 页和第 11 页的公式 (1) 和 (2)。
我想要的是
请参阅第 6 页和第 11 页的公式 (1) 和 (2)。
否则,在我看来,它看起来很奇怪。有没有简单的方法可以做到这一点?
\documentclass{article}
\usepackage{lipsum}
\usepackage{varioref}
\usepackage[nameinlink,noabbrev]{cleveref}
\begin{document}
See \vref{eq:1,eq:2}.
\newpage
\lipsum
\newpage
\lipsum
\newpage
\begin{equation}
\label{eq:1}
e=mc^2
\end{equation}
\newpage
\lipsum
\newpage
\lipsum
\newpage
\begin{equation}
\label{eq:2}
e=mc^2
\end{equation}
\end{document}
答案1
对于“这是否容易”这个问题的答案可能是否定的,尽管只要付出足够的编程努力就可以做到(几乎所有事情都可以)。
原因:
- 首先,如果参考文献在第 2 页,第一个等式在第 3 页,第二个等式在第 5 页,那么规范是怎样的:“参见下一页和第 5 页的等式 (1) 和 (2)”或“..在第 3 页和第 5 页”。
- 或者,如果第一个等式在第一页,第二个在第三页,那么结果是“...在上一页和下一页”还是“...在上一页和下一页”?
假设这些规范已经定义,那么cleverref
就需要获得完全不同的编程逻辑,因为它目前根本不处理这种复杂性。
此外,这在很大程度上涉及到语言结构问题和差异,即在某些情况下,我们最终会得到“页面”,有时又会得到“页面”。为此,没有为各种语言存储预定义的语言片段(需要添加)。
此外,人们需要的远不止可翻译的片段。在许多情况下,句子结构也在很大程度上取决于目标语言(因此,至少对于某些语言,您将需要不同的逻辑)。例如,如果等式在第 3 页和第 4 页,我更希望看到“... auf der nächsten und übernächsten Seite”或“... auf den Seiten 3 und 4”(page 的复数)或“... auf Seite 3 und 4”(该版本中没有复数)。因此,当 varioref 检测到它是“下一页”时,句子结构将发生变化,并将单词 page 移到末尾。
所以总而言之,我认为这是一个非常有趣的问题,但任何自动化尝试varioref
都会cleverref
在边界情况下显示出限制,并且为了克服它们,你最终会得到大量的编码,并且可能仍然会有一些没有得到照顾的奇怪情况。