Referenzseite des Float-Objekts nur, wenn die Seite nicht die tatsächliche Seite ist

Referenzseite des Float-Objekts nur, wenn die Seite nicht die tatsächliche Seite ist

Ist es möglich, LaTeX anzuweisen, \pageref nur dann zu verwenden, wenn sich das referenzierte Objekt nicht auf der aktuellen Seite befindet?

if \pageref{fig:hello_world} != self.page then
  \pageref{fig:hello_world}
end

Antwort1

Ich denke, vielleicht gefällt Ihnen dasvariorefund/oder diecleverefPakete

varioref

Bildschirmfoto

\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

Bildschirmfoto

\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}

Antwort2

Sie können das refcountPaket verwenden, um die Seitenzahl der Referenz abzurufen. Anschließend können Sie das xifthenPaket verwenden, um einen Vergleich von ganzzahligen Werten durchzuführen. Mit dem Befehl können Sie den Wert der aktuellen Seite abrufen \value{page}. Im folgenden MWE können Sie das kommentieren oder auskommentieren, \clearpageum den Unterschied im Verhalten zu demonstrieren.

\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}

Sie könnten die Dinge jetzt vereinfachen, indem Sie den pagerefBefehl so ändern, dass Sie pageref wie gewohnt verwenden können, aber Ihr bedingter Code ausgeführt wird.

\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}

verwandte Informationen