使用 Cleveref 和 Varioref 进行上下文相关交叉引用

使用 Cleveref 和 Varioref 进行上下文相关交叉引用

我被阻止创建一个命令(称为),用于使用和\pref{<cross-reference>}进行交叉引用。我希望它能够适应上下文:cleverefvarioref

  • 首先,当引用与被引用对象位于同一页时,我希望能够删除逗号。这是我目前所拥有的:
    在此处输入图片描述

  • 其次,我想知道是否可以在不调用的情况下添加所引用的章节或部分的名称,\crefformat从而能够\cref在其他上下文中使用该命令及其默认行为。

以下是我目前拥有的:
在此处输入图片描述

以下是我想要发布的内容:
在此处输入图片描述

\documentclass{article}
\usepackage{varioref, hyperref, cleveref}
\setlength{\parindent}{0pt}
\def\reftextcurrent{}
\def\reftextfaraway#1{p.~\pageref{#1}}
\crefformat{figure}{#2\textsc{Fig.}~#1#3}
\crefformat{section}{#2\textsc{Sec.}~#1#3}

\newcommand{\pref}[1]{(\cref{#1}, \vpageref{#1})}

\begin{document}
\pref{fig1}\qquad\pref{sec1}

\clearpage
\pref{fig1}\qquad\pref{sec1}\\
(\cref{sec1} : \textit{\nameref{sec1}}, \vpageref{sec1})% desired behaviour

\clearpage
\section{My section}\label{sec1}
\begin{figure}
    \centering\Huge Figure
    \caption{Bla bla.}
    \label{fig1}
\end{figure}
\pref{fig1}\qquad\pref{sec1}\\
(\cref{fig1})\qquad(\cref{sec1} : \textit{\nameref{sec1}})% desired behaviour

\clearpage
\pref{fig1}\qquad\pref{sec1}

\clearpage
\pref{fig1}\qquad\pref{sec1}
\end{document}

相关内容