我想从 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
,当在浮点数内部使用时(例如figure
或table
),它将放置一个不带 的标签\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}