我如何有条件地引用一个图形?

我如何有条件地引用一个图形?

这是我的 knitr.Rnw文件:

\documentclass{article}
\usepackage{hyperref}
\hypersetup{}
\begin{document}
\let\ref\autoref

<<plot,fig.cap='try'>>=
if(rnorm(1) > 0) x = rbinom(1, 100, 0.5) else x = 0
big_number = x > 0
if(big_number) plot(1:x)
text=paste('I wish I could use it',x,'times a day!')
@

This LaTeX is fun! \Sexpr{if(big_number) text} \ref{fig:plot}

\end{document}

这是我的问题:当big_number是时TRUE,pdf 就会如我喜欢的那样:

好的

另一方面,如果big_numberFALSE,则 pdf 将显示损坏,\ref{}如下所示:

坏的

有什么方法可以隐藏丑陋??或使的调用\ref{fig:plot}取决于big_number或存在plot

答案1

从 LaTeX 方面,你可以删除??使用etoolbox\HyRef@autosetref

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref,etoolbox}
\AtBeginDocument{\let\ref\autoref}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\HyRef@autosetref}{??}{\ignorespaces}{}{}
\makeatother
\begin{document}
\section{A section}\label{sec:section}
See \autoref{sec:section} or \autoref{sec:sections}.
\end{document}

我认为最好以某种方式包含\ref内部的条件放置\Sexpr。我对 knitr 不够熟悉,不知道该怎么做(如果可能的话)。

相关内容