![ページが実際のページでない場合にのみ、フロートオブジェクトのページを参照します。](https://rvso.com/image/254730/%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%8C%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AB%E3%81%AE%E3%81%BF%E3%80%81%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
参照されたオブジェクトが実際のページ上にない場合にのみ \pageref を使用するように LaTeX に指示することは可能ですか?
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}