僅當頁面不是實際頁面時才引用浮動物件的頁面

僅當頁面不是實際頁面時才引用浮動物件的頁面

如果引用的物件不在實際頁面上,是否可以告訴 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}

相關內容