![Referenzseite des Float-Objekts nur, wenn die Seite nicht die tatsächliche Seite ist](https://rvso.com/image/254730/Referenzseite%20des%20Float-Objekts%20nur%2C%20wenn%20die%20Seite%20nicht%20die%20tats%C3%A4chliche%20Seite%20ist.png)
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 dasvarioref
und/oder diecleveref
Pakete
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}
Antwort2
Sie können das refcount
Paket verwenden, um die Seitenzahl der Referenz abzurufen. Anschließend können Sie das xifthen
Paket 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, \clearpage
um 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 pageref
Befehl 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}