我倾向于将“浮动代码”放在\ref
浮动的第一个调用(即)之后。当我起草文档时,第一个调用可能会发生变化,我觉得我浪费了时间找到第一个调用并将浮动代码移动到正确的位置。有时我也会有一些浮动代码可能会用到,也可能不会用到(例如,我不确定是否会包括的表格)。我希望能够定义一个figures
环境并重新定义,\ref
以便我可以输入类似以下内容:
\documentclass{article}
\begin{document}
This is a reference to figure~\ref{fig:D}.
This is a reference to figure~\ref{fig:A}.
This is a reference to figure~\ref{fig:C}.
This is a reference to figure~\ref{fig:C}.
\begin{figures}
\begin{figure}\caption{This is figure A.}\label{fig:A}\end{figure}
\begin{figure}\caption{This is figure B.}\label{fig:B}\end{figure}
\begin{figure}\caption{This is figure C.}\label{fig:C}\end{figure}
\begin{figure}\caption{This is figure D.}\label{fig:D}\end{figure}
\end{figures}
\end{document}
并让 LaTeX 意识到我想要的是:
\documentclass{article}
\begin{document}
This is a reference to figure~\ref{fig:D}\begin{figure}\caption{This is figure D.}\label{fig:D}\end{figure}.
This is a reference to figure~\ref{fig:A}\begin{figure}\caption{This is figure A.}\label{fig:A}\end{figure}.
This is a reference to figure~\ref{fig:C}\begin{figure}\caption{This is figure C.}\label{fig:C}\end{figure}.
This is a reference to figure~\ref{fig:C}.
\end{document}
答案1
最简单的方法是将每个浮点数放在一个单独的文件中,格式如下
\expandafter\ifx\csname r@fig:A\endcsname\relax\else\expandafter\endinput\fi
\begin{figure}
.....
\caption{This is figure A.}\label{fig:A}
\end{figure}
然后使用
\input{figAfile}\ref{fig:A}
即使您多次输入该图形,它只会设置一次,因为测试\ifx
会检查标签是否已定义,如果已定义,则停止读取文件。