强制浮动出现在引用的位置

强制浮动出现在引用的位置

我喜欢使用不同的文件。
特别是,我喜欢将文档的文本放在文件中main.tex,将图表放在 中figures.tex。我使用将figures.tex文件包含在文件末尾。 这样,所有图表都会出现在文件末尾。 main.tex\input{figures}

我希望的是,这些图形能够自动出现在文本中第一次引用它们的位置附近(我可能会多次引用它们,我不在乎它们是在文本中的实际位置之前还是之后,它们只需要在那里附近)。
我不想每次在文本中引用图形时都添加诸如\input或之类的语句,我调用的事实足以让我知道图形应该出现在那个位置附近。\includegraphics\cref

我想将文件数量保持在最低限度,因此(例如)我不想为我拥有的每个图形或类似的东西生成一个文件。只需两个文件,一个声明图形,一个包含文本(当然,我有一个包含所有图像文件的文件夹)。

下面给出了 MWE。

main.tex

\documentclass{article}

\usepackage{graphicx}
\usepackage{cleveref}

\begin{document}

Bla bla bla, a lot of text.

In \cref{fig:plot} we see that bla bla bla ...

Some other text.
...
...

Here we are basically at the end of the file.
\input{figures}

\end{document}

figures.tex

\begin{figure}
    \centering
    \includegraphics{path/to/file}
    \caption{A nice figure.}
    \label{fig:plot}
\end{figure}

啊,我也希望这对表格有用,但我想如果存在针对图形的解决方案,那么它也应该可以适用于表格,因为它们都是浮点数。

干杯

答案1

如果您在末尾输入数字,tex 能做的事情不多,但如果您在开始时输入它们,并稍微改变语法,那么存储数字并一次放出一个就很容易了。

在此处输入图片描述


图形.tex

\def\zzz#1#2{%
  \expandafter\gdef\csname fig-#1\endcsname{\begin{figure}#2\label{#1}\end{figure}}}
\def\zzzcref#1{%
  \csname fig-#1\endcsname\cref{#1}}

\zzz{fig:plot}{%
    \centering
    \includegraphics{path/to/file}
    \caption{A nice figure.}
}

\zzz{fig:zzz}{%
    \centering
    \includegraphics{path/to/file}
    \caption{An even better figure.}
}

文档

\documentclass{article}

\usepackage[demo]{graphicx}
\usepackage{cleveref}
\input{figures}
\begin{document}

Bla bla bla, a lot of text.

In \zzzcref{fig:plot} we see that bla bla bla ...

Some other text.
...
...

\newpage 

Here we are basically at the end of the file \zzzcref{fig:zzz}.


\end{document}

相关内容