![Ссылка на страницу объекта Float только в том случае, если страница не является фактической страницей](https://rvso.com/image/254730/%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%BD%D0%B0%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%83%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0%20Float%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%B2%20%D1%82%D0%BE%D0%BC%20%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B5%2C%20%D0%B5%D1%81%D0%BB%D0%B8%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%20%D0%BD%D0%B5%20%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D1%84%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5%D0%B9.png)
Можно ли указать LaTeX использовать \pageref только в том случае, если указанный объект не находится на реальной странице?
if \pageref{fig:hello_world} != self.page then
\pageref{fig:hello_world}
end
решение1
Я думаю, возможно, вам понравитсяvarioref
и/илиcleveref
пакеты
varioref
\documentclass{article}
\usepackage{varioref}
\begin{document}
\begin{itemize}
\item Here is a reference to Table \vref{tab:thispage}.
\item Here's a reference to Table \vref{tab:nextpage}.
\end{itemize}
\begin{table}[!htb]
\centering
\begin{tabular}{cc}
1 & 2
\end{tabular}
\caption{Table}
\label{tab:thispage}
\end{table}
\clearpage
\setcounter{page}{20}
\begin{table}[!htb]
\centering
\begin{tabular}{cc}
1 & 2
\end{tabular}
\caption{Table}
\label{tab:nextpage}
\end{table}
\end{document}
cleveref
\documentclass{article}
\usepackage{varioref}
\usepackage{cleveref}
% each of the following has two versions
% \crefname{environmentname}{singular}{plural}, to be used mid-sentence
% \Crefname{environmentname}{singular}{plural}, to be used at the beginning of a sentence
% standard environments
\crefname{table}{Table}{Tables}
\Crefname{table}{Table}{Tables}
\begin{document}
\begin{itemize}
\item Here is a reference to \vref{tab:thispage}.
\item Here's a reference to \vref{tab:nextpage}.
\end{itemize}
\begin{table}[!htb]
\centering
\begin{tabular}{cc}
1 & 2
\end{tabular}
\caption{Table}
\label{tab:thispage}
\end{table}
\clearpage
\setcounter{page}{20}
\begin{table}[!htb]
\centering
\begin{tabular}{cc}
1 & 2
\end{tabular}
\caption{Table}
\label{tab:nextpage}
\end{table}
\end{document}
решение2
Вы можете использовать refcount
пакет для получения номера страницы ссылки. Затем вы можете использовать пакет xifthen
для сравнения целочисленных значений. Вы можете получить значение текущей страницы с помощью \value{page}
команды. В MWE ниже вы можете прокомментировать или раскомментировать , \clearpage
чтобы продемонстрировать разницу в поведении.
\documentclass{article}
\usepackage{refcount}
\usepackage{xifthen}
\usepackage[demo]{graphicx}
\begin{document}
\begin{figure}
\caption{Testing}\label{fig:test}
\includegraphics[width=0.4\textwidth]{temp}
\end{figure}
%Uncomment the clearpage command to get the pageref to print
%\clearpage
\ifthenelse{\getpagerefnumber{fig:test}=\value{page}}{}{\pageref{fig:test}}
\end{document}
Теперь вы можете упростить ситуацию, изменив pageref
команду так, чтобы можно было использовать pageref как обычно, но при этом будет выполняться ваш условный код.
\documentclass{article}
\usepackage{refcount}
\usepackage{xifthen}
\usepackage[demo]{graphicx}
\let\originalPageref\pageref
\renewcommand{\pageref}[1]{\ifthenelse{\getpagerefnumber{#1}=\value{page}}{}{\originalPageref{#1}}}
\begin{document}
\begin{figure}
\caption{Testing}\label{fig:test}
\includegraphics[width=0.4\textwidth]{temp}
\end{figure}
%Uncomment the clearpage command to get the pageref to print
%\clearpage
\pageref{fig:test}
\end{document}