删除图形,但保留对图像的引用

删除图形,但保留对图像的引用

我想从 LaTeX 文件中删除一个图形及其标题,但我想保留文本中对它的引用。

到目前为止,我保留了带有标题和标签的空图形环境。问题是,如果不破坏引用,我就无法让标题消失。

我尝试\caption*{}

\setbox0=\vbox{\caption{somecaption}}

正如建议的那样这里

然而,一旦标题“图 1”消失,我对标签的引用也会消失。

\documentclass[superscriptaddress,reprint,amsmath,amssymb,aps,floatfix]{revtex4-1}
\usepackage{graphicx}
\begin{document}

I want to reference Fig.~\ref{fig1}.  \\

\begin{figure}
    %\includegraphics{image.pdf}
    \caption{}
    \label{fig1}
\end{figure}

\end{document}

如果有人能帮助我那就太好了,因为我自己没有发现任何有关这方面的信息。

答案1

\documentclass[superscriptaddress,reprint,amsmath,amssymb,aps,floatfix]{revtex4-1}
\usepackage{graphicx}
\begin{document}

I want to reference Fig.~\ref{fig1}. % never use  \\ at end of paragraph


\refstepcounter{figure}\label{fig1}


\end{document}

答案2

我目前能想到的可能的解决方案:

您可以将标题移出页面,\smash这样它就没有高度了。figure环境占用的空间仍会被占用,但您仍将使用 LaTeX 的浮动机制,这样您的引用将指向正确的页面,您不必处理正确的编号。这可以通过以下方式完成:

\newcommand\captionaway[1]
  {%
    \setbox0\hbox{\vbox{#1}}%
    \null
    \hspace*{2\paperwidth}%
    \smash{\usebox0}%
  }

然后,您将把\caption\label命令放在 的参数中\captionaway。标题仍会显示在图片列表中。

另一个可能的解决方案是只使用\refstepcounter计数器figure并贴上标签。例如:

\makeatletter
\newcommand\onlylabel[2][\@captype]
  {\refstepcounter{#1}\label{#2}}
\makeatother

这将为您提供一个宏\onlylabel,当在浮点数内部使用时(例如figuretable),它将放置一个不带 的标签\caption。如果在浮点数外部使用它,则可以像 一样使用它\onlylabel[figure]{fig:label}。如果在 外部使用它,float则必须注意,如果您有其他相同类型的浮点数,则将其放置在正确的位置。最好将其放置在前一个浮点数的末尾,以使编号正确(因为如果它是浮点数,它将至少在前一个浮点数未发送时一直存在于浮点数堆栈中)。

使用两种方法完成 MWE:

\documentclass[superscriptaddress,reprint,amsmath,amssymb,aps,floatfix]
  {revtex4-1}
\usepackage{graphicx}

\newcommand\captionaway[1]
  {%
    \setbox0\hbox{\vbox{#1}}%
    \null
    \hspace*{2\paperwidth}%
    \smash{\usebox0}%
  }
\makeatletter
\newcommand\onlylabel[2][\@captype]
  {\refstepcounter{#1}\label{#2}}
\makeatother

\begin{document}

I want to reference Fig.~\ref{fig1}.  \\

\begin{figure}
    %\includegraphics{image.pdf}
  \captionaway
    {%
      \caption{This caption}%
      \label{fig1}%
    }%
  \onlylabel{fig:hidden}
\end{figure}

I also reference Fig.~\ref{fig:hidden}. Note that Fig.~\ref{fig1} does use some
space as the \texttt{figure} environment was actually used and needs some space.

\end{document}

答案3

我制定了一个命令,这样只需添加一颗星就可以切换。

\documentclass[superscriptaddress,reprint,amsmath,amssymb,aps,floatfix]{revtex4-1}
\usepackage{graphicx}
\usepackage{cleveref}
\usepackage{xparse}
\NewDocumentCommand{\myFig}{smmm}{%
    \IfBooleanTF{#1}{%
        \refstepcounter{figure}\label{#4}
    }{\begin{figure}
            #2
            \caption{#3}
            \label{#4}
        \end{figure}}
    }

\begin{document}

    I want to reference Fig.~\ref{label1}, \cref{label2}.

    \myFig{\includegraphics[width=\linewidth]{example-image-a.pdf}}{Caption1}{label1}
    \myFig*{\includegraphics{example-image-a.pdf}}{Caption2}{label2}
\end{document}

相关内容