![僅當頁面不是實際頁面時才引用浮動物件的頁面](https://rvso.com/image/254730/%E5%83%85%E7%95%B6%E9%A0%81%E9%9D%A2%E4%B8%8D%E6%98%AF%E5%AF%A6%E9%9A%9B%E9%A0%81%E9%9D%A2%E6%99%82%E6%89%8D%E5%BC%95%E7%94%A8%E6%B5%AE%E5%8B%95%E7%89%A9%E4%BB%B6%E7%9A%84%E9%A0%81%E9%9D%A2.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}