
참조된 개체가 실제 페이지에 없는 경우에만 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}