如何将图形浮动到文本中靠近其描述的位置?

如何将图形浮动到文本中靠近其描述的位置?

考虑一个浮点​​图像

\begin{figure}[h]
    \includegraphics[width=1.0\textwidth]{ebooks.jpg}
    \captionof{figure}{This is a test}
    \label{fig: 1}
\end{figure}

是否可以在文档的开头定义图形,并在第一次描述图形后(当术语Figure X第一次出现在文本中时)自动显示图形?

事实上,它应该寻找该术语的第一次出现,Figure X并将数字放置在靠近该术语的位置。

一般来说,我想知道如何在文本中搜索一个术语并显示接近该术语的图形。

答案1

实现此目的的一种可能方法是将每个图形保存在与fig/目录中的标签相同的单独文件名中。然后修改\ref宏以在此时包含该图形(如果尚未包含该图形)。

为了允许对同一张图进行多次引用,我们只需要在第一次引用时包含该图像,而无需在任何后续引用中包含该图像。

为了简单起见,我在下面定义了一个新的宏\figref来执行此操作,并且图形出现在第 3 页,并且在后续引用中不会再次出现:

在此处输入图片描述

笔记:

  • 要按原样运行下面的测试用例,该目录fig/必须已经存在于您运行它的目录中
  • 我使用filecontents环境将这个测试用例打包成一个文件,并不建议使用它来为图形创建单独的文件,尽管你当然可以这样做。
  • 虽然我定义了一个新的宏,但当然可以重新定义现有的\ref宏来提取冒号前后的部分,并针对冒号之前的部分的情况采取适当的行动fig

进一步增强:

  • 下面我定义了每次插入图形时的一个命令名称,以抑制重复图像。由于标签过程已经对进行了检查multiply-defined labels,因此可以通过重复使用相同的方法来增强此代码。

代码:

\documentclass{article}
\usepackage{graphicx}% Remove [demo] for real usage
\usepackage{lipsum}% For dummy text
\usepackage{xcolor}
\usepackage{caption}
\usepackage{filecontents}

\begin{filecontents*}{fig/1.tex}
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.5\textwidth]{images/EiffelWide.jpg}
        \captionof{figure}{This is a test}
        \label{fig: 1}
    \end{figure}
\end{filecontents*}

\makeatletter%
\newcommand{\figref}[1]{%
    \ifcsname @LoadedFile#1\endcsname%
    \else%
        \input{fig/#1}%
        \global\expandafter\def\csname @LoadedFile#1\endcsname{}%
    \fi%
    Figure~\ref{fig: #1}%
}%
\makeatother%

\begin{document}
\lipsum[1-11]

\textcolor{red}{Now as we can see from \figref{1} we can conclude.}

\textcolor{red}{But what if again refer to \figref{1}, the figure should not be included again!!}
\end{document}

相关内容